Nothing
test_that("as data frame complete", {
path <- system.file("examples/CITATION_complete.cff", package = "cffr")
the_cff <- cff_read(path)
# To df
the_df <- as.data.frame(the_cff)
expect_s3_class(the_df, "data.frame")
expect_equal(nrow(the_df), 1)
# lengths
allf <- unlist(the_cff, recursive = TRUE, use.names = FALSE)
expect_identical(length(allf), ncol(the_df))
expect_identical(ncol(the_df), length(unique(names(the_df))))
# As vector
df_as_v <- as.character(as.vector(the_df[1, ]))
expect_identical(allf, df_as_v)
expect_snapshot(names(the_df))
})
test_that("as data frame partial", {
path <- system.file("examples/CITATION_complete.cff", package = "cffr")
the_cff <- cff_read(path)
# To df authors only
subcff <- the_cff$authors[[1]]
the_df <- as.data.frame(subcff)
expect_s3_class(the_df, "data.frame")
expect_equal(nrow(the_df), 1)
# lengths
allf <- unlist(subcff, recursive = TRUE, use.names = FALSE)
expect_identical(length(allf), ncol(the_df))
expect_identical(ncol(the_df), length(unique(names(the_df))))
# To df references only
subcff <- the_cff$references[[1]]
the_df <- as.data.frame(subcff)
expect_s3_class(the_df, "data.frame")
expect_equal(nrow(the_df), 1)
# lengths
allf <- unlist(subcff, recursive = TRUE, use.names = FALSE)
expect_identical(length(allf), ncol(the_df))
expect_identical(ncol(the_df), length(unique(names(the_df))))
})
test_that("Convert a citation only", {
path <- system.file("examples/DESCRIPTION_many_persons", package = "cffr")
a_cit <- as_bibentry(cff_create(path))
the_cff <- as_cff(a_cit)
# To df
the_df <- as.data.frame(the_cff)
expect_s3_class(the_df, "data.frame")
expect_equal(nrow(the_df), 1)
# lengths
allf <- unlist(the_cff, recursive = TRUE, use.names = FALSE)
expect_identical(length(allf), ncol(the_df))
expect_identical(ncol(the_df), length(unique(names(the_df))))
# As vector
df_as_v <- as.character(as.vector(the_df[1, ]))
expect_identical(allf, df_as_v)
expect_snapshot(names(the_df))
})
test_that("Convert authors only", {
a_pers_lst <- as_cff_person(
"A person and {A Entity inc.} and {One person} more"
)
the_cff <- a_pers_lst[[1]]
# To df
the_df <- as.data.frame(the_cff)
expect_s3_class(the_df, "data.frame")
expect_equal(nrow(the_df), 1)
# lengths
allf <- unlist(the_cff, recursive = TRUE, use.names = FALSE)
expect_identical(length(allf), ncol(the_df))
expect_identical(ncol(the_df), length(unique(names(the_df))))
# As vector
df_as_v <- as.character(as.vector(the_df[1, ]))
expect_identical(allf, df_as_v)
expect_snapshot(names(the_df))
})
test_that("Convert list of authors", {
path <- system.file("examples/CITATION_complete.cff", package = "cffr")
the_cff <- cff_read(path)$authors
# To df
the_df <- as.data.frame(the_cff)
expect_s3_class(the_df, "data.frame")
expect_equal(nrow(the_df), 1)
# lengths
allf <- unlist(the_cff, recursive = TRUE, use.names = FALSE)
expect_identical(length(allf), ncol(the_df))
expect_identical(ncol(the_df), length(unique(names(the_df))))
# As vector
df_as_v <- as.character(as.vector(the_df[1, ]))
expect_identical(allf, df_as_v)
expect_snapshot(names(the_df))
})
test_that("as.person method", {
path <- system.file("examples/CITATION_complete.cff", package = "cffr")
the_cff <- cff_read(path)
getref <- the_cff$references[[1]]
# Single entity
pub <- as.person(getref$publisher)
expect_s3_class(pub, "person")
expect_snapshot(dput(pub))
expect_snapshot(
format(pub, include = c("given", "family", "email", "role", "comment"))
)
# Single person
aut <- as.person(getref$authors[[1]])
expect_s3_class(aut, "person")
expect_snapshot(dput(aut))
expect_snapshot(
format(aut, include = c("given", "family", "email", "role", "comment"))
)
# List of authors
aut2 <- as.person(getref$authors)
expect_s3_class(aut2, "person")
expect_s3_class(aut2[1], "person")
expect_s3_class(aut2[2], "person")
expect_snapshot(dput(aut2))
expect_snapshot(
format(aut2, include = c("given", "family", "email", "role", "comment"))
)
# Malformed
malf <- getref$authors
malf[[1]] <- list(a = "list")
expect_s3_class(malf, "cff_pers_lst")
expect_snapshot(end <- as.person(malf))
expect_s3_class(end, "person")
expect_length(end, 1)
# Duplicates
aa <- getref$authors
aa[[3]] <- aa[[1]]
expect_s3_class(aa, "cff_pers_lst")
expect_snapshot(aa2 <- as.person(aa))
expect_s3_class(aa2, "person")
expect_length(aa2, 2)
})
test_that("as.person method names and particles", {
skip_on_cran()
str <- "von Wicksteed, III, P. H. and {The translator factory}"
cf <- as_cff_person(str)
expect_snapshot(cf)
pers_bib <- toBibtex(as.person(cf))
again <- as_cff_person(pers_bib)
expect_identical(cf, again)
})
test_that("Errors on other as.person methods", {
path <- system.file("examples/CITATION_complete.cff", package = "cffr")
the_cff <- cff_read(path)
expect_s3_class(the_cff, "cff", exact = TRUE)
expect_snapshot(as.person(the_cff), error = TRUE)
# identifiers
key <- the_cff$identifiers
expect_s3_class(key, c("cff_ref_lst", "cff"), exact = TRUE)
expect_snapshot(as.person(key), error = TRUE)
# preferred
key <- the_cff$`preferred-citation`
expect_s3_class(key, c("cff_ref", "cff"), exact = TRUE)
expect_snapshot(as.person(key), error = TRUE)
})
test_that("head and tail", {
a_cff <- cff()
expect_snapshot(a_cff)
expect_snapshot(head(a_cff, 2))
expect_s3_class(head(a_cff, 2), "cff")
expect_snapshot(tail(a_cff, 2))
expect_s3_class(tail(a_cff, 2), "cff")
})
test_that("toBibtex", {
rvers <- getRversion()
skip_if(rvers <= "4.4.1", "Snapshot created with R 4.5.0")
skip_on_os("mac")
skip_on_os("linux")
skip_on_os("solaris")
skip_on_cran()
# Create several alternatives
descobj <- cff_read_description(system.file("examples/DESCRIPTION_basic",
package = "cffr"
))
citobj <- cff_read_citation(system.file("examples/CITATION_basic",
package = "cffr"
))
newbib <- cff_read_bib(system.file("examples/example.bib",
package = "cffr"
))
full_cff <- merge_desc_cit(descobj, c(newbib, citobj))
full_cff <- new_cff(full_cff)
expect_true(cff_validate(full_cff, verbose = FALSE))
# A. validate extractions
expect_snapshot(toBibtex(full_cff))
expect_snapshot(toBibtex(full_cff, what = "references"))
expect_snapshot(toBibtex(full_cff, what = "all"))
# single entries
single <- toBibtex(full_cff$`preferred-citation`)
expect_s3_class(single, "Bibtex")
expect_equal(sum(names(single) == "title"), 1)
# Several entries
several <- toBibtex(full_cff$references)
expect_s3_class(several, "Bibtex")
expect_equal(sum(names(several) == "title"), 3)
# One entry
oneent <- toBibtex(full_cff$references[[1]])
expect_s3_class(single, "Bibtex")
expect_equal(sum(names(oneent) == "title"), 1)
fromfile <- toBibtex(newbib)
expect_s3_class(fromfile, "Bibtex")
expect_equal(sum(names(fromfile) == "title"), 2)
# From lines
string <- "@book{einstein1921,
title = {Relativity: The Special and the General Theory},
author = {Einstein, A.},
year = 1920,
publisher = {Henry Holt and Company},
address = {London, United Kingdom},
isbn = 9781587340925}"
froml <- toBibtex(cff_read_bib_text(string))
expect_equal(sum(names(froml) == "title"), 1)
# Persons
sev_auth <- as_cff_person(
"{The Big Bopper} and Frank Sinatra and Dean Martin and Davis, Jr., Sammy"
)
expect_length(sev_auth, 4)
expect_s3_class(sev_auth, "cff_pers_lst")
expect_snapshot(toBibtex(sev_auth))
# Single person
single <- as_cff_person(person("A", "person", email = "a@b.d"))[[1]]
expect_s3_class(single, "cff_pers")
expect_snapshot(toBibtex(single))
# Single entity
single <- as_cff_person(person("{A and B co}", email = "a@b.d"))[[1]]
expect_s3_class(single, "cff_pers")
expect_snapshot(toBibtex(single))
})
test_that("as.list", {
f <- system.file("examples/CITATION_complete.cff", package = "cffr")
full_cff <- cff_read_cff_citation(f)
# Capture dput and search
dput_cff <- capture.output(dput(full_cff))
ntot_class <- sum(grepl("\"cff\"", dput_cff))
expect_gt(ntot_class, 30)
# Unlist
unl <- as.list(full_cff)
# Capture dput and search
dput_unl <- capture.output(dput(unl))
ntot_class_unl <- sum(grepl("\"cff\"", unl))
expect_identical(ntot_class_unl, 0L)
# Reclass
regen_cff <- as_cff(unl)
expect_identical(full_cff, regen_cff)
expect_true(cff_validate(regen_cff, verbose = FALSE))
})
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.