[Phylobase-devl] Testing framework
    Jim Regetz 
    regetz at nceas.ucsb.edu
       
    Thu Aug 13 23:42:29 CEST 2009
    
    
  
Hi François et al,
I just ran my RUnit tests against the fm-branch build. Happily, most 
passed. Here is a summary of the failures:
1. Several involved phylo -> phylo4(d) coercion. Mostly these reflects 
fm-branch improvements (e.g., now handling numeric node labels in ape 
phylo objects), and it will be easy enough to update the tests after the 
merge. But something is definitely broken when using the argument that 
allows node labels to be converted to data upon coercion to phylo4d. 
Quick example:
tr <- read.tree(text="(spA:0.2,(spB:0.1,spC:0.1)2:0.1)1:0.07;")
# this fails in fm-branch, but works in trunk
phylo4d(tr, check.node.labels="asdata")
## Error in switch(which, tip = { :
##   You are trying to match node data to tip nodes. Make sure that your 
## data identifiers are correct.
Assuming we want to retain this behavior, we'll have to fix something here.
2. In fm-branch, coercion of phylo4d to data.frame produces an 
"ancestor" column instead of "ancestr", which seems like a good change 
to me! Just a simple matter of updating the test to reflect this change 
after the merge.
3,4. Two sets of test failures were both caused by a change to getNode 
in the case where the node argument is an integer (node ID). In trunk, 
the function *always* returns a vector of the numeric IDs, with the 
labels as element names. Of course, an element and/or its name may be NA 
depending on whether the requested node exists in the tree and has a 
label. In fm-branch, the returned element name is sometimes the label, 
and other times the ID (even differing within the same returned vector). 
This strikes me as a programming landmine, and I strongly favor the 
trunk behavior. As an example, notice how seemingly contradictory 
results are possible in the (perfectly valid) case where node labels are 
themselves number-like:
data(geospiza)
nodeLabels(geospiza) <- as.character(101:113)
# in fm-branch
getNode(geospiza, c(1, 15, 101), missing="OK")
## fuliginosa        101        101
##          1         15         NA
# in trunk
getNode(geospiza, c(1, 15, 101), missing="OK")
## fuliginosa        101       <NA>
##          1         15         NA
I admit the <NA> name isn't pretty, but IMHO it gives less room for 
misinterpretation and surprising downstream behavior.
Thanks,
Jim
François Michonneau wrote:
> Hi -
> 
>   I have started a page where we can lists the tests that are needed:
> http://123.writeboard.com/2bb68a414b3d8424b
> 
> password: Phyl0base
> 
>   Cheers,
>   -- François
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Phylobase-devl mailing list
> Phylobase-devl at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/phylobase-devl
    
    
More information about the Phylobase-devl
mailing list