context("rename_matches")
describe("detect_insensitive()", {
it("returns true in position of x where x matches y", {
expect_equal(detect_insensitive(letters[1:3], LETTERS[3:5]), c(F, F, T))
expect_equal(detect_insensitive(letters[1:3], letters[3:5]), c(F, F, T))
expect_equal(detect_insensitive(LETTERS[1:3], LETTERS[3:5]), c(F, F, T))
expect_equal(detect_insensitive(letters[1], LETTERS[3:5]), c(F))
expect_equal(detect_insensitive(letters[1:3], LETTERS[3]), c(F, F, T))
expect_equal(detect_insensitive(letters[1], LETTERS[4:5]), c(F))
})
it("outputs as expected with fgeo data", {
x <- c("stemid", "n")
y <- c("StemID", "treeID")
expect_equal(detect_insensitive(x, y), c(TRUE, FALSE))
})
it("fails gracefully", {
expect_error(detect_insensitive(1, "a"), "is not TRUE")
expect_error(extract_insensitive(1), "argument.*is missing")
expect_error(detect_insensitive(data.frame(1), "a"), "is not TRUE")
expect_error(extract_insensitive(data.frame(1)), "argument.*is missing")
})
})
describe("extract_insensitive()", {
it("extracts the element of x that matches insensitive y", {
aa <- c("a", "a")
AA <- c("A", "A")
bb <- c("b", "b")
BB <- c("B", "B")
ab <- c("a", "b")
aB <- c("a", "B")
Ab <- c("A", "b")
AB <- c("A", "B")
ba <- c("b", "a")
BA <- c("B", "A")
expect_equal(extract_insensitive(aa, ab), aa)
expect_equal(extract_insensitive(aa, AB), AA)
expect_equal(extract_insensitive(ab, ba), c("a", "b"))
# Position
expect_equal(extract_insensitive(ab, Ab), Ab)
expect_equal(extract_insensitive(ab, aB), aB)
# Length
expect_equal(extract_insensitive("a", AB), "A")
expect_equal(extract_insensitive(ab, "A"), Ab)
# Duplicated
expect_equal(extract_insensitive(aa, AB), AA)
expect_equal(extract_insensitive("a", AA), "A")
expect_equal(extract_insensitive("a", "b"), "a")
expect_equal(extract_insensitive(aa, bb), aa)
expect_equal(extract_insensitive("a", bb), "a")
# Missing values
expect_equal(extract_insensitive("a", NA_character_), "a")
expect_equal(extract_insensitive(NA, "a"), NA_character_)
expect_equal(extract_insensitive(NA, NA_character_), NA_character_)
aNA <- c("a", NA)
ANA <- c("A", NA)
expect_equal(extract_insensitive(aNA, "A"), ANA)
expect_equal(extract_insensitive("a", ANA), "A")
})
it("outputs as expected with fgeo data", {
x <- c("stemid", "n")
y <- c("StemID", "treeID")
expect_equal(extract_insensitive(x, y), c("StemID", "n"))
})
})
describe("rename_matches()", {
it("outputs correct names", {
# Problematic datasets
out <- data.frame(
stringsAsFactors = FALSE,
plotname = c("luq", "luq"),
year = c(2001, 2002),
family = c("f", "f"),
species = c("Gn spp", "Gn spp"),
n = c(2L, 1L)
)
ref <- data.frame(
stringsAsFactors = FALSE,
plotname = c("luq", "luq"),
censusid = c(1L, 1L),
treeid = c(2L, 1L),
stemid = c(2.2, 1.1),
status = c("alive", "alive"),
dbh = c(3L, 1L),
genus = c("Gn", "Gn"),
speciesname = c("spp", "spp"),
exactdate = c("2001-01-01", "2001-01-01"),
plotcensusnumber = c(1L, 1L),
family = c("f", "f"),
tag = c(2L, 1L),
status_tree = c("alive", "alive"),
year = c(2001, 2001),
species = c("Gn spp", "Gn spp")
)
expect_equal(rename_matches(out, ref)$year, c(2001, 2002))
expect_equal(rename_matches(out, ref)$family, c("f", "f"))
})
})
test_that("works as expected", {
x <- data.frame(col1 = 5, col2 = 1, n = 5)
y <- data.frame(COL1 = 1, COL2 = 1, COL3 = 1)
expect_named(rename_matches(x, y), c("COL1", "COL2", "n"))
y <- data.frame(COL1 = 1)
expect_named(rename_matches(x, y), c("COL1", "col2", "n"))
y <- data.frame(NOMATCH = 1)
expect_named(rename_matches(x, y), c("col1", "col2", "n"))
y <- data.frame(1)
expect_named(rename_matches(x, y), c("col1", "col2", "n"))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.