## test_that("supplied col names must match non-skipped col types", { ## out <- col_spec_standardise(col_types = "c_c", col_names = c("a", "c")) ## expect_equal(names(out[[1]]), c("a", "", "c")) ## }) ## test_that("supplied col names matches to non-skipped col types", { ## out <- col_spec_standardise("a,b,c\n1,2,3", col_types = "i_i") ## expect_equal(names(out[[1]]), c("a", "b", "c")) ## }) ## test_that("guess col names matches all col types", { ## out <- col_spec_standardise("a,b,c\n", col_types = "i_i") ## expect_equal(names(out[[1]]), c("a", "b", "c")) ## expect_equal(out[[1]][[2]], col_skip()) ## }) ## test_that("col_names expanded to col_types with dummy names", { ## expect_warning( ## out <- col_spec_standardise("1,2,3,4\n", c("a", "b"), "iiii"), ## "Insufficient `col_names`" ## ) ## expect_equal(names(out[[1]]), c("a", "b", "X3", "X4")) ## }) ## test_that("col_names expanded to match col_types, with skipping", { ## expect_warning( ## out <- col_spec_standardise(col_types = "c_c", col_names = "a"), ## "Insufficient `col_names`" ## ) ## expect_equal(names(out[[1]]), c("a", "", "X2")) ## }) ## test_that("col_types expanded to col_names by guessing", { ## skip_if(edition_first()) ## expect_warning( ## out <- col_spec_standardise("1,2,3\n", c("a", "b", "c"), "ii"), ## "Insufficient `col_types`" ## ) ## expect_equal(names(out[[1]]), c("a", "b", "c")) ## expect_equal(out[[1]][[3]], col_double()) ## }) ## test_that("defaults expanded to match names", { ## out <- col_spec_standardise("a,b,c\n1,2,3", col_types = cols(.default = "c")) ## expect_equal(out[[1]], list( ## a = col_character(), ## b = col_character(), ## c = col_character() ## )) ## }) ## test_that("col_spec_standardise works properly with 1 row inputs and no header columns (#333)", { ## expect_s3_class(col_spec_standardise("1\n", col_names = FALSE)[[1]]$X1, "collector_double") ## }) ## test_that("warns about duplicated names", { ## expect_warning(col_spec_standardise("a,a\n1,2"), "Duplicated column names") ## expect_warning( ## col_spec_standardise("1,2\n1,2", col_names = c("X", "X")), ## "Duplicated column names" ## ) ## }) ## test_that("warn about missing col names and fill in", { ## expect_warning(col_spec_standardise(",\n1,2"), "Missing column names") ## expect_warning( ## col_spec_standardise("1,2\n1,2", col_names = c("X", NA)), ## "Missing column names" ## ) ## }) ## test_that("guess_types errors on invalid inputs", { ## expect_error(col_spec_standardise("a,b,c\n", guess_max = NA), "`guess_max` must be a positive integer") ## expect_error(col_spec_standardise("a,b,c\n", guess_max = -1), "`guess_max` must be a positive integer") ## expect_warning(col_spec_standardise("a,b,c\n", guess_max = Inf), "`guess_max` is a very large value") ## }) ## test_that("check_guess_max errors on invalid inputs", { ## expect_error(check_guess_max(NULL), "`guess_max` must be a positive integer") ## expect_error(check_guess_max("test"), "`guess_max` must be a positive integer") ## expect_error(check_guess_max(letters), "`guess_max` must be a positive integer") ## expect_error(check_guess_max(1:2), "`guess_max` must be a positive integer") ## expect_error(check_guess_max(NA), "`guess_max` must be a positive integer") ## expect_error(check_guess_max(-1), "`guess_max` must be a positive integer") ## expect_warning(check_guess_max(Inf), "`guess_max` is a very large value") ## }) ## test_that("as.col_types can handle named character input", { ## expect_equal(as.col_spec(c(a = "c")), cols(a = col_character())) ## }) ## test_that("as.col_types can convert data.frame", { ## spec <- as.col_spec(iris) ## exp <- cols( ## Sepal.Length = col_double(), ## Sepal.Width = col_double(), ## Petal.Length = col_double(), ## Petal.Width = col_double(), ## Species = col_factor(levels = c("setosa", "versicolor", "virginica"), ordered = FALSE, include_na = FALSE) ## ) ## expect_equal(spec, exp) ## }) ## test_that("as.character() works on col_spec objects", { ## spec <- as.col_spec(iris) ## expect_equal(as.character(spec), "ddddf") ## }) ## # Printing ---------------------------------------------------------------- ## test_that("print(col_spec) with guess_parser", { ## expect_snapshot(col_spec_standardise("a,b,c\n1,2,3")) ## }) ## test_that("print(col_spec) with collector_skip", { ## expect_snapshot(cols_only(a = col_integer(), c = col_integer())) ## }) ## test_that("print(col_spec) with truncated output", { ## out <- col_spec_standardise("a,b,c\n1,2,3", col_types = cols(.default = "c")) ## expect_snapshot( ## print(out, n = 2, condense = FALSE) ## ) ## }) ## test_that("print(col_spec) works with dates", { ## out <- col_spec_standardise("a,b,c\n", ## col_types = cols( ## a = col_date(format = "%Y-%m-%d"), ## b = col_date(), ## c = col_date() ## ) ## ) ## expect_snapshot(out) ## }) ## test_that("print(col_spec) with unnamed columns", { ## expect_snapshot( ## col_spec_standardise(col_types = "c_c", col_names = c("a", "c")) ## ) ## }) ## test_that("print(cols_only()) prints properly", { ## expect_snapshot( ## cols_only(a = col_character(), c = col_integer()) ## ) ## }) ## test_that("print(col_spec) with n == 0 prints nothing", { ## expect_silent(print(col_spec_standardise("a,b,c\n1,2,3"), n = 0)) ## }) ## test_that("print(cols_condense(col_spec)) condenses the spec", { ## expect_snapshot( ## cols_condense(col_spec_standardise("a,b,c,d\n1,2,3,a")) ## ) ## expect_snapshot( ## cols_condense(col_spec_standardise("a,b,c,d\n1,2,3,4")) ## ) ## }) ## test_that("print(col_spec) with no columns specified", { ## expect_snapshot(cols()) ## expect_snapshot(cols(.default = col_character())) ## }) ## test_that("print(col_spec) and condense edge cases", { ## expect_snapshot(print( ## cols(a = col_integer(), b = col_integer(), c = col_double()), ## n = 1, ## condense = TRUE, ## colour = FALSE ## )) ## }) ## test_that("print(col_spec) with colors", { ## local_reproducible_output(crayon = TRUE) ## out <- col_spec_standardise( ## "a,b,c,d,e,f,g,h,i\n1,2,F,a,2018-01-01,2018-01-01 12:01:01,12:01:01,foo,blah", ## col_types = c(b = "i", h = "f", i = "_") ## ) ## expect_snapshot_output(out) ## }) ## test_that("non-syntatic names are escaped", { ## expect_snapshot( ## col_spec_standardise("a b,_c,1,a`b\n1,2,3,4") ## ) ## }) ## # https://github.com/tidyverse/readr/issues/597 ## test_that("long spec declarations can be formatted", { ## expect_snapshot( ## cols(a = col_factor( ## levels = c("apple", "pear", "banana", "peach", "apricot", "orange", "plum"), ## ordered = TRUE ## )) ## ) ## })