context("character matrices")
## All tests will use this data file
f <- system.file("examples", "comp_analysis.xml", package="RNeXML")
test_that("we can parse XML to S4 and serialize S4 to XML for the basic character classes", {
doc <- xmlParse(f)
root <- xmlRoot(doc)
char <- as(root[["characters"]][["format"]][["char"]], "char")
out <- as(char, "XMLInternalElementNode")
expect_is(char, "char") # not as dumb as it looks, at least we're checking our own method here
expect_is(out, "XMLInternalElementNode") # dumb check, but provides a dot to show the code above executed successfully
format <- as(root[["characters"]][["format"]], "format")
out <- as(format, "XMLInternalElementNode")
expect_is(format, "format")
expect_is(out, "XMLInternalElementNode")
matrix <- as(root[["characters"]][["matrix"]], "obsmatrix")
out <- as(matrix, "XMLInternalElementNode")
expect_is(matrix, "obsmatrix")
expect_is(out, "XMLInternalElementNode")
characters <- as(root[["characters"]], "characters")
out <- as(characters, "XMLInternalElementNode")
expect_is(characters, "characters")
expect_is(out, "XMLInternalElementNode")
})
test_that("we can actually parse NeXML files containing character data", {
nex <- read.nexml(f)
expect_is(nex, "nexml")
})
## Now that we tested this, store the result so we can use it in later tests
nex <- read.nexml(f)
### BEGIN *DO NOT MODIFY nex OBJECT* ###
### ###
test_that("we can extract character matrix with get_characters", {
x <- get_characters(nex)
expect_is(x, "data.frame")
## FIXME add additional and more precise expect_ checks
})
test_that("we can extract a list of character matrices with get_characters_list", {
x <- get_characters_list(nex)
expect_is(x, "list")
expect_is(x[[1]], "data.frame")
## FIXME add additional and more precise expect_ checks
})
## FIXME add_characters needs a method to add character names of states
## and then we need a test for that method
test_that("we can add characters to a nexml file using a data.frame", {
x <- get_characters(nex)
nexml <- add_characters(x)
## Can we write it out and read it back?
nexml_write(nexml, file = "chartest.xml")
tmp <- nexml_read("chartest.xml")
tmp_x <- get_characters(tmp)
expect_is(tmp_x, "data.frame")
expect_is(tmp, "nexml")
unlink("chartest.xml")
})
## based on bug on 2014-03-12 65ae459523c529452adb699c3d5d118c0a207402
test_that("we can add multiple character matrices to a nexml file", {
skip_if_not_installed("geiger")
require(geiger)
data(geospiza)
data(primates)
nexml <- add_characters(geospiza$dat)
nexml <- add_characters(primates$dat, nexml)
expect_is(nexml, "nexml")
})
### ###
### END *DO NOT MODIFY nex OBJECT* ###
### ###
### Re-read nex object before using ###
### ###
test_that("add_otu can append only unmatched taxa to an existing otus block", {
nex <- read.nexml(f)
orig <- get_taxa(nex)
x <- get_characters_list(nex)
nex@otus[[1]]@otu <- new("ListOfotu", nex@otus[[1]]@otu[1:5]) # chop off some of the otu values
new_taxa <- rownames(x[[1]])
nex2 <- RNeXML:::add_otu(nex, new_taxa, append=TRUE) # add them back
## should have same contents as orig...
get_taxa(nex2)
expect_identical(sort(orig$label), sort(get_taxa(nex2)$label))
## Note that otu ids are not unique when we chop them off ...
})
test_that("we can serialize polymorphic states", {
f <- system.file("examples", "ontotrace-result.xml", package="RNeXML")
nex <- read.nexml(f)
states <- nex@characters[[1]]@format@states[[1]]
out <- as(states, "XMLInternalNode")
testthat::expect_true("polymorphic_state_set" %in% names(out))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.