Nothing
test_that("contaminated, explicit logical is read as logical", {
## xls
expect_snapshot(
df <- read_excel(
test_sheet("types.xls"),
sheet = "logical_coercion",
col_types = c("logical", "text")
)
)
expect_true(is.logical(df$logical))
should_be_NA <- df$explanation %in% c("string not logical", "blank", "date")
expect_false(anyNA(df$logical[!should_be_NA]))
## xlsx
expect_snapshot(
df <- read_excel(
test_sheet("types.xlsx"),
sheet = "logical_coercion",
col_types = c("logical", "text")
)
)
expect_true(is.logical(df$logical))
should_be_NA <- df$explanation %in% c("string not logical", "blank", "date")
expect_false(anyNA(df$logical[!should_be_NA]))
})
test_that("contaminated, explicit date is read as date", {
## xls
expect_snapshot(
df <- read_excel(
test_sheet("types.xls"),
sheet = "date_coercion",
col_types = "date"
)
)
expect_s3_class(df$date, "POSIXct")
expect_false(anyNA(df$date[c(1, 5, 6, 7)]))
expect_true(all(is.na(df$date[c(2, 3, 4)])))
expect_identical(df$date[6], as.POSIXct("2012-01-02 UTC", tz = "UTC"))
## xlsx
expect_snapshot(
df <- read_excel(
test_sheet("types.xlsx"),
sheet = "date_coercion",
col_types = "date"
)
)
expect_s3_class(df$date, "POSIXct")
expect_false(anyNA(df$date[c(1, 5, 6, 7)]))
expect_true(all(is.na(df$date[c(2, 3, 4)])))
expect_identical(df$date[6], as.POSIXct("2012-01-02 UTC", tz = "UTC"))
})
test_that("contaminated, explicit numeric is read as numeric", {
## xls
expect_snapshot(
df <- read_excel(
test_sheet("types.xls"),
sheet = "numeric_coercion",
col_types = "numeric"
)
)
expect_true(is.numeric(df$numeric))
expect_false(anyNA(df$numeric[c(1, 2, 4, 7)]))
expect_equal(df$numeric[2], 72) # "Number stored as text"
## xlsx
expect_snapshot(
df <- read_excel(
test_sheet("types.xlsx"),
sheet = "numeric_coercion",
col_types = "numeric"
)
)
expect_true(is.numeric(df$numeric))
expect_false(anyNA(df$numeric[c(1, 2, 4, 7)]))
expect_equal(df$numeric[2], 72) # "Number stored as text"
})
## #75, #110: don't convert numbers to string a la "printf %lf"
## i.e. don't right pad to get 6 decimal places
test_that("contaminated, explicit text is read as text", {
## xls
df <- read_excel(
test_sheet("types.xls"),
sheet = "text_coercion",
col_types = c("text", "text")
)
expect_true(is.character(df$text))
expect_false(anyNA(df$explanation != "blank"))
expect_identical(df$text[df$explanation == "floating point"], "1.3")
expect_identical(df$text[df$explanation == "student number"], "36436153")
## xlsx
df <- read_excel(
test_sheet("types.xlsx"),
sheet = "text_coercion",
col_types = c("text", "text")
)
expect_true(is.character(df$text))
expect_false(anyNA(df$explanation != "blank"))
expect_identical(df$text[df$explanation == "floating point"], "1.3")
expect_identical(df$text[df$explanation == "student number"], "36436153")
})
test_that("integery-y numbers > 2^31 can be coerced to string", {
xlsx <- read_excel(test_sheet("big-texty-numbers-xlsx.xlsx"))
xls <- read_excel(test_sheet("big-texty-numbers-xls.xls"))
expect_identical(xlsx, xls)
expect_identical(
xls[["number"]][-1],
as.character(
c(2^31 - 1, 2^31, 2^31 + 1, -1 * (2^31), -1 * (2^31 + 1))
)
)
})
## https://github.com/tidyverse/readxl/issues/430
## re: precision of datetimes converted to text
test_that("datetimes agree up to certain precision when coerced to text", {
xlsx <- read_excel(test_sheet("texty-dates-xlsx.xlsx"), col_types = "text")
xls <- read_excel(test_sheet("texty-dates-xls.xls"), col_types = "text")
xlsx <- sub("^.*\\.(.*)$", "\\1", xlsx$a)
xls <- sub("^.*\\.(.*)$", "\\1", xls$a)
## it's hard to say how many digits of agreement we expect after the decimal
## we coerce to string for xls, whereas its out of our hands for xlsx,
## where the double comes to us as a string in the XML
## therefore, my choice is somewhat arbitrary
xlsx <- substr(xlsx, 1, 8)
xls <- substr(xls, 1, 8)
expect_identical(xlsx, xls)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.