Nothing
test_that("as.cff remains compatible with as_cff", {
l <- list("cff-version" = "1.2.0", title = "Manipulating files")
expect_silent(l1 <- as_cff(l))
expect_silent(l2 <- as.cff(l))
expect_s3_class(l1, "cff", exact = TRUE)
expect_snapshot(l2)
})
test_that("as_cff converts person objects", {
pers <- person(
"A",
"person",
email = "fake@gmail.com",
comment = c(
ORCID = "0000-0001-8457-4658",
affiliation = "Real Madrid",
website = "https://www.google.com/"
)
)
aa <- as_cff_person(pers)
expect_s3_class(aa, c("cff_pers_lst", "cff"), exact = TRUE)
expect_s3_class(aa[[1]], c("cff_pers", "cff"), exact = TRUE)
expect_identical(aa, as_cff_person(pers))
rvers <- getRversion()
skip_if(!grepl("^4.6", rvers), "Snapshot created with R 4.6.*")
expect_snapshot(as_cff(pers))
# Check a single person
single <- as.list(aa)[[1]]
expect_false(inherits(single, "cff"))
single_cff <- as_cff(single)
expect_s3_class(single_cff, c("cff_pers", "cff"), exact = TRUE)
expect_snapshot(single_cff)
})
test_that("bibentries round-trip through as_cff and toBibtex", {
b <- bibentry("Misc", title = "title", author = "Author", editor = "Editor")
bbb <- as_cff(b)
expect_s3_class(bbb, c("cff_ref_lst", "cff"), exact = TRUE)
expect_s3_class(bbb[[1]], c("cff_ref", "cff"), exact = TRUE)
expect_snapshot(bbb)
b_bib <- toBibtex(b)
expect_s3_class(b_bib, "Bibtex")
bbbb <- as_cff(b_bib)
expect_identical(bbb, bbbb)
# Check single
b_single <- as.list(bbb)[[1]]
expect_false(inherits(b_single, "cff"))
b_single_cff <- as_cff(b_single)
expect_s3_class(b_single_cff, c("cff_ref", "cff"), exact = TRUE)
expect_snapshot(b_single_cff)
# Check empty
s <- bibentry("misc")
expect_null(as_cff(s))
})
test_that("as_cff converts named lists by default", {
b <- c(a = 1)
expect_identical(as_cff(b), as_cff(as.list(b)))
expect_snapshot(as_cff(b))
})
test_that("as_cff handles supported auxiliary input types", {
a <- cff()
expect_s3_class(a, "cff")
a <- as_cff(a)
expect_true(is_cff(a))
expect_s3_class(a, "cff")
expect_snapshot(noadd <- cff(chocolate = "New York", version = 5))
expect_true(is_cff(noadd))
expect_false(is_cff(list(a = 1, b = 2)))
expect_true(is_cff(as_cff(list(a = 1, b = 2))))
})
test_that("cff references preserve class when subset", {
b1 <- bibentry("Misc", title = "title", author = "Author", editor = "Editor")
b2 <- bibentry("Manual", author = "Another", title = "another title")
b_all <- c(b1, b2)
expect_s3_class(b_all, "bibentry", exact = TRUE)
bbb <- as_cff(b_all)
expect_s3_class(bbb, c("cff_ref_lst", "cff"), exact = TRUE)
expect_length(bbb, 2)
b2_reg <- bbb[2]
expect_length(b2_reg, 1)
expect_s3_class(b2_reg, c("cff_ref", "cff"), exact = TRUE)
})
test_that("cff persons preserve class when subset", {
b1 <- person("One", "person")
b2 <- person("ntity")
b_all <- c(b1, b2)
expect_s3_class(b_all, "person", exact = TRUE)
bbb <- as_cff(b_all)
expect_s3_class(bbb, c("cff_pers_lst", "cff"), exact = TRUE)
expect_length(bbb, 2)
b2_reg <- bbb[2]
expect_length(b2_reg, 1)
expect_s3_class(b2_reg, c("cff_pers", "cff"), exact = TRUE)
})
# Check full classes with recursion
test_that("as_cff reads complete cff structures", {
full <- system.file("examples/CITATION_complete.cff", package = "cffr")
cff_complete <- cff_read(full)
expect_true(cff_validate(cff_complete, verbose = FALSE))
nm <- names(cff_complete)
class_v <- vapply(
nm,
function(x) {
clean_str(paste0(class(cff_complete[[x]]), collapse = "|"))
},
character(1)
)
df <- data.frame(class = sort(class_v[class_v != "character"]))
expect_snapshot(df)
# Assess preferred
pref <- cff_complete$`preferred-citation`
nm2 <- names(pref)
class_v2 <- vapply(
nm2,
function(x) {
clean_str(paste0(class(pref[[x]]), collapse = "|"))
},
character(1)
)
df2 <- data.frame(class = sort(class_v2[class_v2 != "character"]))
expect_snapshot(df2)
# Relist
asl <- as.list(cff_complete)
expect_false(inherits(asl, "cff"))
expect_identical(cff_complete, as_cff(asl))
})
test_that("as_cff preserves language fields", {
# full cff has two languages in preferred-citation
full <- system.file("examples/CITATION_complete.cff", package = "cffr")
cff_complete <- cff_read(full)
expect_true(cff_validate(cff_complete, verbose = FALSE))
expect_identical(
cff_complete[["preferred-citation"]]$languages,
c("aaa", "zu")
)
# Several languages
lang_file <- system.file("examples/CITATION_lang.cff", package = "cffr")
cff_lang <- cff_read(lang_file)
expect_true(cff_validate(cff_lang, verbose = FALSE))
expect_identical(cff_lang[["preferred-citation"]]$languages, list("en"))
expect_identical(cff_lang[["references"]][[1]]$languages, list("en"))
expect_identical(cff_lang[["references"]][[2]]$languages, c("en", "es", "fr"))
})
test_that("language fields survive cff round-trips", {
lang_file <- system.file("examples/CITATION_lang.cff", package = "cffr")
cff_lang <- cff_read(lang_file)
expect_true(cff_validate(cff_lang, verbose = FALSE))
expect_identical(cff_lang[["preferred-citation"]]$languages, list("en"))
expect_identical(cff_lang[["references"]][[1]]$languages, list("en"))
expect_identical(cff_lang[["references"]][[2]]$languages, c("en", "es", "fr"))
# Write
tmp <- withr::local_tempfile(fileext = ".cff")
cff_write(cff_lang, tmp)
# And re-check
cff_lang <- cff_read(tmp)
expect_true(cff_validate(cff_lang, verbose = FALSE))
expect_identical(cff_lang[["preferred-citation"]]$languages, list("en"))
expect_identical(cff_lang[["references"]][[1]]$languages, list("en"))
expect_identical(cff_lang[["references"]][[2]]$languages, c("en", "es", "fr"))
})
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.