/** * Filename : TestLayoutCreation.cpp * Description : Unit tests for the creation of the layout struvtures from XMLNodes. * Organization: European Media Laboratories Research gGmbH * Created : 2007-02-21 * * */ #include #include #include #include #include #include #include #include #include #include #include "utility.h" using namespace std; LIBSBML_CPP_NAMESPACE_USE BEGIN_C_DECLS static string NOTES; static void LayoutCreationTest_setup (void) { NOTES = "\n\n

Testnote

\n
"; } static void LayoutCreationTest_teardown (void) { } START_TEST (test_LayoutCreation_Layout) { const char* content = "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream= new XMLInputStream(content,false); fail_unless(stream->isError() == false); fail_unless(stream->isGood() == true); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node, pListOfLayouts ); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getNumCompartmentGlyphs()==1); CompartmentGlyph* cg=l->getCompartmentGlyph(0); fail_unless(cg!=NULL); fail_unless(cg->getId()=="compartmentGlyph_1"); BoundingBox* box=cg->getBoundingBox(); fail_unless(!box->isSetId()); Point* position=box->getPosition(); fail_unless(position->getXOffset()==0.0); fail_unless(position->getYOffset()==0.0); fail_unless(position->getZOffset()==0.0); dimensions=box->getDimensions(); fail_unless(dimensions->getWidth()==0.0); fail_unless(dimensions->getHeight()==0.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getNumSpeciesGlyphs()==1); SpeciesGlyph* sg=l->getSpeciesGlyph(0); fail_unless(sg!=NULL); fail_unless(sg->getId()=="speciesGlyph_1"); box=sg->getBoundingBox(); fail_unless(!box->isSetId()); position=box->getPosition(); fail_unless(position->getXOffset()==0.0); fail_unless(position->getYOffset()==0.0); fail_unless(position->getZOffset()==0.0); dimensions=box->getDimensions(); fail_unless(dimensions->getWidth()==0.0); fail_unless(dimensions->getHeight()==0.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg!=NULL); fail_unless(rg->getId()=="reactionGlyph_1"); box=rg->getBoundingBox(); fail_unless(!box->isSetId()); position=box->getPosition(); fail_unless(position->getXOffset()==0.0); fail_unless(position->getYOffset()==0.0); fail_unless(position->getZOffset()==0.0); dimensions=box->getDimensions(); fail_unless(dimensions->getWidth()==0.0); fail_unless(dimensions->getHeight()==0.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getNumTextGlyphs()==1); TextGlyph* tg=l->getTextGlyph(0); fail_unless(tg!=NULL); fail_unless(tg->getId()=="textGlyph_1"); box=tg->getBoundingBox(); fail_unless(!box->isSetId()); position=box->getPosition(); fail_unless(position->getXOffset()==0.0); fail_unless(position->getYOffset()==0.0); fail_unless(position->getZOffset()==0.0); dimensions=box->getDimensions(); fail_unless(dimensions->getWidth()==0.0); fail_unless(dimensions->getHeight()==0.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getNumAdditionalGraphicalObjects()==1); GraphicalObject* go=l->getAdditionalGraphicalObject(0); fail_unless(go!=NULL); fail_unless(go->getId()=="graphicalObject_1"); box=go->getBoundingBox(); fail_unless(!box->isSetId()); position=box->getPosition(); fail_unless(position->getXOffset()==0.0); fail_unless(position->getYOffset()==0.0); fail_unless(position->getZOffset()==0.0); dimensions=box->getDimensions(); fail_unless(dimensions->getWidth()==0.0); fail_unless(dimensions->getHeight()==0.0); fail_unless(dimensions->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_Layout_notes) { const char* content= "\n" "\n" "\n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" "
\n" "
\n" "
\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(l->getNotes()->equals(notes, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_Layout_annotation) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" "\n" "\n" ; const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->isSetAnnotation()); XMLInputStream stream2(a,false); XMLNode aNode=XMLNode(stream2); fail_unless(l->getAnnotation()->equals(aNode, true)); delete stream; } END_TEST START_TEST (test_LayoutCreation_Layout_skipOptional) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getNumCompartmentGlyphs()==0); fail_unless(l->getNumSpeciesGlyphs()==0); fail_unless(l->getNumReactionGlyphs()==0); fail_unless(l->getNumTextGlyphs()==0); fail_unless(l->getNumAdditionalGraphicalObjects()==0); delete stream; } END_TEST START_TEST (test_LayoutCreation_CompartmentGlyph) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumCompartmentGlyphs()==1); CompartmentGlyph* cg=l->getCompartmentGlyph(0); fail_unless(cg->getId()=="compartmentGlyph_1"); fail_unless(cg->getCompartmentId()=="compartment_1"); BoundingBox* bb=cg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_CompartmentGlyph_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" " \n" " \n" " \n" "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream= new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumCompartmentGlyphs()==1); CompartmentGlyph* cg=l->getCompartmentGlyph(0); fail_unless(cg->getId()=="compartmentGlyph_1"); fail_unless(!cg->isSetCompartmentId()); BoundingBox* bb=cg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(cg->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(cg->getNotes()->equals(notes, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_CompartmentGlyph_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumCompartmentGlyphs()==1); CompartmentGlyph* cg=l->getCompartmentGlyph(0); fail_unless(cg->getId()=="compartmentGlyph_1"); fail_unless(!cg->isSetCompartmentId()); BoundingBox* bb=cg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(cg->isSetAnnotation()); XMLInputStream *stream2 = new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(cg->getAnnotation()->equals(aNode, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_CompartmentGlyph_skipOptional) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumCompartmentGlyphs()==1); CompartmentGlyph* cg=l->getCompartmentGlyph(0); fail_unless(cg->getId()=="compartmentGlyph_1"); fail_unless(!cg->isSetCompartmentId()); BoundingBox* bb=cg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_SpeciesGlyph) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumSpeciesGlyphs()==1); SpeciesGlyph* sg=l->getSpeciesGlyph(0); fail_unless(sg->getId()=="speciesGlyph_1"); fail_unless(sg->getSpeciesId()=="species_1"); BoundingBox* bb=sg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_SpeciesGlyph_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" " \n" " \n" " \n" "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumSpeciesGlyphs()==1); SpeciesGlyph* sg=l->getSpeciesGlyph(0); fail_unless(sg->getId()=="speciesGlyph_1"); fail_unless(!sg->isSetSpeciesId()); BoundingBox* bb=sg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(sg->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(sg->getNotes()->equals(notes, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_SpeciesGlyph_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumSpeciesGlyphs()==1); SpeciesGlyph* sg=l->getSpeciesGlyph(0); fail_unless(sg->getId()=="speciesGlyph_1"); fail_unless(!sg->isSetSpeciesId()); BoundingBox* bb=sg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(sg->isSetAnnotation()); XMLInputStream *stream2 = new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(sg->getAnnotation()->equals(aNode, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_SpeciesGlyph_skipOptional) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumSpeciesGlyphs()==1); SpeciesGlyph* sg=l->getSpeciesGlyph(0); fail_unless(sg->getId()=="speciesGlyph_1"); fail_unless(!sg->isSetSpeciesId()); BoundingBox* bb=sg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_ReactionGlyph_Curve) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(rg->getReactionId()=="reaction_1"); fail_unless(rg->isSetCurve()); Curve* curve=rg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); fail_unless(ls->getTypeCode()!=SBML_LAYOUT_CUBICBEZIER); Point* start=ls->getStart(); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); fail_unless(start->getZOffset()==0.0); Point* end=ls->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); fail_unless(end->getZOffset()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_ReactionGlyph_BoundingBox) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(rg->getReactionId()=="reaction_1"); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_ReactionGlyph_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" " \n" " \n" " \n" "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(rg->getReactionId()=="reaction_1"); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(rg->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(rg->getNotes()->equals(notes, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_ReactionGlyph_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(rg->getReactionId()=="reaction_1"); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(rg->isSetAnnotation()); XMLInputStream *stream2 = new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(rg->getAnnotation()->equals(aNode, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_ReactionGlyph_skipOptional) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_SpeciesReferenceGlyph_Curve) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(rg->getNumSpeciesReferenceGlyphs()==1); SpeciesReferenceGlyph* srg=rg->getSpeciesReferenceGlyph(0); fail_unless(srg->getId()=="speciesReferenceGlyph_1"); fail_unless(srg->getRole()==SPECIES_ROLE_ACTIVATOR); fail_unless(srg->getSpeciesGlyphId()=="speciesGlyph_1"); fail_unless(srg->getSpeciesReferenceId()=="speciesReference_1"); fail_unless(srg->isSetCurve()); Curve* curve=srg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); fail_unless(ls->getTypeCode()!=SBML_LAYOUT_CUBICBEZIER); Point* start=ls->getStart(); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); fail_unless(start->getZOffset()==0.0); Point* end=ls->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); fail_unless(end->getZOffset()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_SpeciesReferenceGlyph_BoundingBox) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions3=bb->getDimensions(); fail_unless(dimensions3->getWidth()==200.5); fail_unless(dimensions3->getHeight()==400.5); fail_unless(dimensions3->getDepth()==0.0); fail_unless(rg->getNumSpeciesReferenceGlyphs()==1); SpeciesReferenceGlyph* srg=rg->getSpeciesReferenceGlyph(0); fail_unless(srg->getId()=="speciesReferenceGlyph_1"); fail_unless(srg->getRole()==SPECIES_ROLE_MODIFIER); fail_unless(srg->getSpeciesGlyphId()=="speciesGlyph_1"); fail_unless(srg->getSpeciesReferenceId()=="speciesReference_1"); BoundingBox* bb2=srg->getBoundingBox(); Point* position2=bb2->getPosition(); fail_unless(position2->getXOffset()==110.3); fail_unless(position2->getYOffset()==120.0); fail_unless(position2->getZOffset()==0.0); Dimensions* dimensions2=bb2->getDimensions(); fail_unless(dimensions2->getWidth()==20.5); fail_unless(dimensions2->getHeight()==40.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_SpeciesReferenceGlyph_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" " \n" " \n" " \n" "
\n" "
\n" "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions3=bb->getDimensions(); fail_unless(dimensions3->getWidth()==200.5); fail_unless(dimensions3->getHeight()==400.5); fail_unless(dimensions3->getDepth()==0.0); fail_unless(rg->getNumSpeciesReferenceGlyphs()==1); SpeciesReferenceGlyph* srg=rg->getSpeciesReferenceGlyph(0); fail_unless(srg->getId()=="speciesReferenceGlyph_1"); fail_unless(srg->getRole()==SPECIES_ROLE_SUBSTRATE); fail_unless(!srg->isSetSpeciesGlyphId()); fail_unless(!srg->isSetSpeciesReferenceId()); BoundingBox* bb2=srg->getBoundingBox(); Point* position2=bb2->getPosition(); fail_unless(position2->getXOffset()==110.3); fail_unless(position2->getYOffset()==120.0); fail_unless(position2->getZOffset()==0.0); Dimensions* dimensions2=bb2->getDimensions(); fail_unless(dimensions2->getWidth()==20.5); fail_unless(dimensions2->getHeight()==40.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(srg->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(srg->getNotes()->equals(notes, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_SpeciesReferenceGlyph_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions3=bb->getDimensions(); fail_unless(dimensions3->getWidth()==200.5); fail_unless(dimensions3->getHeight()==400.5); fail_unless(dimensions3->getDepth()==0.0); fail_unless(rg->getNumSpeciesReferenceGlyphs()==1); SpeciesReferenceGlyph* srg=rg->getSpeciesReferenceGlyph(0); fail_unless(srg->getId()=="speciesReferenceGlyph_1"); fail_unless(srg->getRole()==SPECIES_ROLE_SIDEPRODUCT); fail_unless(!srg->isSetSpeciesGlyphId()); fail_unless(!srg->isSetSpeciesReferenceId()); BoundingBox* bb2=srg->getBoundingBox(); Point* position2=bb2->getPosition(); fail_unless(position2->getXOffset()==110.3); fail_unless(position2->getYOffset()==120.0); fail_unless(position2->getZOffset()==0.0); Dimensions* dimensions2=bb2->getDimensions(); fail_unless(dimensions2->getWidth()==20.5); fail_unless(dimensions2->getHeight()==40.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(srg->isSetAnnotation()); XMLInputStream *stream2 = new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(srg->getAnnotation()->equals(aNode, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_SpeciesReferenceGlyph_skipOptional) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions3=bb->getDimensions(); fail_unless(dimensions3->getWidth()==200.5); fail_unless(dimensions3->getHeight()==400.5); fail_unless(dimensions3->getDepth()==0.0); fail_unless(rg->getNumSpeciesReferenceGlyphs()==1); SpeciesReferenceGlyph* srg=rg->getSpeciesReferenceGlyph(0); fail_unless(srg->getId()=="speciesReferenceGlyph_1"); fail_unless(srg->getRole()==SPECIES_ROLE_SIDESUBSTRATE); fail_unless(!srg->isSetSpeciesGlyphId()); fail_unless(!srg->isSetSpeciesReferenceId()); BoundingBox* bb2=srg->getBoundingBox(); Point* position2=bb2->getPosition(); fail_unless(position2->getXOffset()==110.3); fail_unless(position2->getYOffset()==120.0); fail_unless(position2->getZOffset()==0.0); Dimensions* dimensions2=bb2->getDimensions(); fail_unless(dimensions2->getWidth()==20.5); fail_unless(dimensions2->getHeight()==40.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_TextGlyph_text) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumTextGlyphs()==1); TextGlyph* tg=l->getTextGlyph(0); fail_unless(tg->getId()=="textGlyph_1"); fail_unless(tg->getGraphicalObjectId()=="speciesGlyph_1"); fail_unless(tg->getText()=="test text"); BoundingBox* bb=tg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_TextGlyph_originOfText) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumTextGlyphs()==1); TextGlyph* tg=l->getTextGlyph(0); fail_unless(tg->getId()=="textGlyph_1"); fail_unless(tg->getGraphicalObjectId()=="speciesGlyph_1"); fail_unless(tg->getOriginOfTextId()=="reactionGlyph_1"); BoundingBox* bb=tg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_TextGlyph_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" " \n" " \n" " \n" "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream= new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumTextGlyphs()==1); TextGlyph* tg=l->getTextGlyph(0); fail_unless(tg->getId()=="textGlyph_1"); fail_unless(tg->getGraphicalObjectId()=="speciesGlyph_1"); fail_unless(tg->getOriginOfTextId()=="reactionGlyph_1"); BoundingBox* bb=tg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(tg->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(tg->getNotes()->equals(notes, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_TextGlyph_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumTextGlyphs()==1); TextGlyph* tg=l->getTextGlyph(0); fail_unless(tg->getId()=="textGlyph_1"); fail_unless(tg->getGraphicalObjectId()=="speciesGlyph_1"); fail_unless(tg->getOriginOfTextId()=="reactionGlyph_1"); BoundingBox* bb=tg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(tg->isSetAnnotation()); XMLInputStream *stream2 = new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(tg->getAnnotation()->equals(aNode, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_TextGlyph_skipOptional) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumTextGlyphs()==1); TextGlyph* tg=l->getTextGlyph(0); fail_unless(tg->getId()=="textGlyph_1"); fail_unless(!tg->isSetGraphicalObjectId()); fail_unless(!tg->isSetOriginOfTextId()); fail_unless(!tg->isSetText()); BoundingBox* bb=tg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_GraphicalObject) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumAdditionalGraphicalObjects()==1); GraphicalObject* go=l->getAdditionalGraphicalObject(0); fail_unless(go->getId()=="graphicalObject_1"); BoundingBox* bb=go->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_GraphicalObject_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" " \n" " \n" " \n" "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumAdditionalGraphicalObjects()==1); GraphicalObject* go=l->getAdditionalGraphicalObject(0); fail_unless(go->getId()=="graphicalObject_1"); BoundingBox* bb=go->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(go->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(go->getNotes()->equals(notes, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_GraphicalObject_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumAdditionalGraphicalObjects()==1); GraphicalObject* go=l->getAdditionalGraphicalObject(0); fail_unless(go->getId()=="graphicalObject_1"); BoundingBox* bb=go->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(go->isSetAnnotation()); XMLInputStream *stream2 = new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(go->getAnnotation()->equals(aNode, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_Curve) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); fail_unless(rg->isSetCurve()); Curve* curve=rg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); fail_unless(ls->getTypeCode()!=SBML_LAYOUT_CUBICBEZIER); Point* start=ls->getStart(); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); fail_unless(start->getZOffset()==0.0); Point* end=ls->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); fail_unless(end->getZOffset()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_Curve_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" " \n" " \n" " \n" " \n" " \n" "
\n" "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); fail_unless(rg->isSetCurve()); Curve* curve=rg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); fail_unless(ls->getTypeCode()!=SBML_LAYOUT_CUBICBEZIER); Point* start=ls->getStart(); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); fail_unless(start->getZOffset()==0.0); Point* end=ls->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); fail_unless(end->getZOffset()==0.0); fail_unless(curve->isSetNotes()==true); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(curve->getNotes()->equals(notes, true)); delete stream; delete stream2; } END_TEST START_TEST (test_LayoutCreation_Curve_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); fail_unless(rg->isSetCurve()); Curve* curve=rg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); fail_unless(ls->getTypeCode()!=SBML_LAYOUT_CUBICBEZIER); Point* start=ls->getStart(); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); Point* end=ls->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); fail_unless(curve->isSetAnnotation()); XMLInputStream *stream2 = new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(curve->getAnnotation()->equals(aNode, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_Curve_skipOptional) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); fail_unless(!rg->isSetCurve()); delete stream; } END_TEST START_TEST (test_LayoutCreation_LineSegment) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); fail_unless(rg->isSetCurve()); Curve* curve=rg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); fail_unless(ls->getTypeCode()!=SBML_LAYOUT_CUBICBEZIER); Point* start=ls->getStart(); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); Point* end=ls->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_LineSegment_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" " \n" "
\n" "
\n" "
\n" "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); fail_unless(rg->isSetCurve()); Curve* curve=rg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); fail_unless(ls->getTypeCode()!=SBML_LAYOUT_CUBICBEZIER); Point* start=ls->getStart(); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); Point* end=ls->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); fail_unless(ls->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(ls->getNotes()->equals(notes, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_LineSegment_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); fail_unless(rg->isSetCurve()); Curve* curve=rg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); fail_unless(ls->getTypeCode()!=SBML_LAYOUT_CUBICBEZIER); Point* start=ls->getStart(); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); Point* end=ls->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); fail_unless(ls->isSetAnnotation()); XMLInputStream *stream2 = new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(ls->getAnnotation()->equals(aNode, true)); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_CubicBezier) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); fail_unless(rg->isSetCurve()); Curve* curve=rg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); CubicBezier* cb=static_cast< CubicBezier*>(ls); fail_unless(cb!=NULL); Point* start=cb->getStart(); fail_unless(start!=NULL); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); fail_unless(start->getZOffset()==0.0); Point* end=cb->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); fail_unless(end->getZOffset()==0.0); Point* base1=cb->getBasePoint1(); fail_unless(base1->getXOffset()==15.0); fail_unless(base1->getYOffset()==5.0); fail_unless(base1->getZOffset()==0.0); Point* base2=cb->getBasePoint2(); fail_unless(base2->getXOffset()==15.0); fail_unless(base2->getYOffset()==17.0); fail_unless(base2->getZOffset()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_CubicBezier_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" " \n" " \n" " \n" "
\n" "
\n" "
\n" "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); fail_unless(rg->isSetCurve()); Curve* curve=rg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); CubicBezier* cb=static_cast< CubicBezier*>(ls); fail_unless(cb!=NULL); Point* start=cb->getStart(); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); fail_unless(start->getZOffset()==0.0); Point* end=cb->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); fail_unless(end->getZOffset()==0.0); Point* base1=cb->getBasePoint1(); fail_unless(base1->getXOffset()==15.0); fail_unless(base1->getYOffset()==5.0); fail_unless(base1->getZOffset()==0.0); Point* base2=cb->getBasePoint2(); fail_unless(base2->getXOffset()==16.0); fail_unless(base2->getYOffset()==17.0); fail_unless(base2->getZOffset()==0.0); fail_unless(cb->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(cb->getNotes()->equals(notes, true)==true); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_CubicBezier_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.0); fail_unless(dimensions->getHeight()==400.0); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getId()=="layout_1"); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); fail_unless(rg->isSetCurve()); Curve* curve=rg->getCurve(); fail_unless(curve->getNumCurveSegments()==1); LineSegment* ls=curve->getCurveSegment(0); CubicBezier* cb=static_cast< CubicBezier*>(ls); fail_unless(cb!=NULL); Point* start=cb->getStart(); fail_unless(start->getXOffset()==10.0); fail_unless(start->getYOffset()==15.0); fail_unless(start->getZOffset()==0.0); Point* end=cb->getEnd(); fail_unless(end->getXOffset()==20.0); fail_unless(end->getYOffset()==30.0); fail_unless(end->getZOffset()==0.0); Point* base1=cb->getBasePoint1(); fail_unless(base1->getXOffset()==15.0); fail_unless(base1->getYOffset()==5.0); fail_unless(base1->getZOffset()==0.0); Point* base2=cb->getBasePoint2(); fail_unless(base2->getXOffset()==16.0); fail_unless(base2->getYOffset()==17.0); fail_unless(base2->getZOffset()==0.0); fail_unless(cb->isSetAnnotation()); XMLInputStream *stream2= new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(cb->getAnnotation()->equals(aNode, true)==true); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_Dimensions) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); fail_unless(l->getId()=="layout_1"); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.5); fail_unless(dimensions->getHeight()==400.5); fail_unless(dimensions->getDepth()==455.2); delete stream; } END_TEST START_TEST (test_LayoutCreation_Dimensions_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); fail_unless(l->getId()=="layout_1"); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.5); fail_unless(dimensions->getHeight()==400.5); fail_unless(dimensions->getDepth()==455.2); fail_unless(dimensions->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(dimensions->getNotes()->equals(notes, true)==true); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_Dimensions_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); fail_unless(l->getId()=="layout_1"); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.5); fail_unless(dimensions->getHeight()==400.5); fail_unless(dimensions->getDepth()==455.2); fail_unless(dimensions->isSetAnnotation()); XMLInputStream *stream2 = new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(dimensions->getAnnotation()->equals(aNode, true)==true); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_Dimensions_skipOptional) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" "\n" "" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); fail_unless(l->getId()=="layout_1"); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.5); fail_unless(dimensions->getHeight()==400.5); fail_unless(dimensions->getDepth()==0.0); delete stream; } END_TEST START_TEST (test_LayoutCreation_BoundingBox) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); fail_unless(l->getId()=="layout_1"); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.5); fail_unless(dimensions->getHeight()==400.5); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); BoundingBox* bb=rg->getBoundingBox(); fail_unless(bb->getId()=="boundingBox_1"); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==30.23); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==100.2); delete stream; } END_TEST START_TEST (test_LayoutCreation_BoundingBox_notes) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " " " \n" "

Testnote

\n" " " "
\n" " \n" " \n" "
\n" "
\n" "
\n" "
\n" "
\n" "
\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); fail_unless(l->getId()=="layout_1"); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.5); fail_unless(dimensions->getHeight()==400.5); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(bb->isSetNotes()); XMLInputStream *stream2 = new XMLInputStream(NOTES.c_str(),false); XMLNode notes=XMLNode(*stream2); fail_unless(bb->getNotes()->equals(notes, true)==true); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_BoundingBox_annotation) { const char* a = "\n" "\n" " \n" " level2 \n" " \n" " "; const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " level2 \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); fail_unless(l->getId()=="layout_1"); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.5); fail_unless(dimensions->getHeight()==400.5); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); fail_unless(bb->isSetAnnotation()); XMLInputStream *stream2 = new XMLInputStream(a,false); XMLNode aNode=XMLNode(*stream2); fail_unless(bb->getAnnotation()->equals(aNode, true)==true); delete stream2; delete stream; } END_TEST START_TEST (test_LayoutCreation_BoundingBox_skipOptional) { const char* content= "\n" "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n" "\n" ; XMLInputStream *stream=new XMLInputStream(content,false); XMLNode node=XMLNode(*stream); ListOfLayouts pListOfLayouts; parseLayoutAnnotation(&node,pListOfLayouts); fail_unless(pListOfLayouts.size()==1); Layout* l=(Layout*)pListOfLayouts.get(0); fail_unless(l!=NULL); fail_unless(l->getId()=="layout_1"); Dimensions* dimensions=l->getDimensions(); fail_unless(dimensions->getWidth()==200.5); fail_unless(dimensions->getHeight()==400.5); fail_unless(dimensions->getDepth()==0.0); fail_unless(l->getNumReactionGlyphs()==1); ReactionGlyph* rg=l->getReactionGlyph(0); fail_unless(rg->getId()=="reactionGlyph_1"); fail_unless(!rg->isSetReactionId()); BoundingBox* bb=rg->getBoundingBox(); Point* position=bb->getPosition(); fail_unless(position->getXOffset()==10.3); fail_unless(position->getYOffset()==20.0); fail_unless(position->getZOffset()==0.0); Dimensions* dimensions2=bb->getDimensions(); fail_unless(dimensions2->getWidth()==200.5); fail_unless(dimensions2->getHeight()==400.5); fail_unless(dimensions2->getDepth()==0.0); delete stream; } END_TEST Suite * create_suite_LayoutCreation (void) { Suite *suite = suite_create("LayoutCreation"); TCase *tcase = tcase_create("LayoutCreation"); tcase_add_checked_fixture( tcase, LayoutCreationTest_setup, LayoutCreationTest_teardown ); tcase_add_test( tcase, test_LayoutCreation_Layout ); tcase_add_test( tcase, test_LayoutCreation_Layout_notes ); tcase_add_test( tcase, test_LayoutCreation_Layout_annotation ); tcase_add_test( tcase, test_LayoutCreation_Layout_skipOptional ); tcase_add_test( tcase, test_LayoutCreation_CompartmentGlyph ); tcase_add_test( tcase, test_LayoutCreation_CompartmentGlyph_notes ); tcase_add_test( tcase, test_LayoutCreation_CompartmentGlyph_annotation ); tcase_add_test( tcase, test_LayoutCreation_CompartmentGlyph_skipOptional ); tcase_add_test( tcase, test_LayoutCreation_SpeciesGlyph ); tcase_add_test( tcase, test_LayoutCreation_SpeciesGlyph_notes ); tcase_add_test( tcase, test_LayoutCreation_SpeciesGlyph_annotation ); tcase_add_test( tcase, test_LayoutCreation_SpeciesGlyph_skipOptional ); tcase_add_test( tcase, test_LayoutCreation_ReactionGlyph_Curve ); tcase_add_test( tcase, test_LayoutCreation_ReactionGlyph_BoundingBox ); tcase_add_test( tcase, test_LayoutCreation_ReactionGlyph_notes ); tcase_add_test( tcase, test_LayoutCreation_ReactionGlyph_annotation ); tcase_add_test( tcase, test_LayoutCreation_ReactionGlyph_skipOptional ); tcase_add_test( tcase, test_LayoutCreation_SpeciesReferenceGlyph_Curve ); tcase_add_test( tcase, test_LayoutCreation_SpeciesReferenceGlyph_BoundingBox ); tcase_add_test( tcase, test_LayoutCreation_SpeciesReferenceGlyph_notes ); tcase_add_test( tcase, test_LayoutCreation_SpeciesReferenceGlyph_annotation ); tcase_add_test( tcase, test_LayoutCreation_SpeciesReferenceGlyph_skipOptional); tcase_add_test( tcase, test_LayoutCreation_TextGlyph_text ); tcase_add_test( tcase, test_LayoutCreation_TextGlyph_notes ); tcase_add_test( tcase, test_LayoutCreation_TextGlyph_annotation ); tcase_add_test( tcase, test_LayoutCreation_TextGlyph_originOfText ); tcase_add_test( tcase, test_LayoutCreation_TextGlyph_skipOptional ); tcase_add_test( tcase, test_LayoutCreation_GraphicalObject ); tcase_add_test( tcase, test_LayoutCreation_GraphicalObject_notes ); tcase_add_test( tcase, test_LayoutCreation_GraphicalObject_annotation ); tcase_add_test( tcase, test_LayoutCreation_Curve ); tcase_add_test( tcase, test_LayoutCreation_Curve_notes ); tcase_add_test( tcase, test_LayoutCreation_Curve_annotation ); tcase_add_test( tcase, test_LayoutCreation_Curve_skipOptional ); tcase_add_test( tcase, test_LayoutCreation_LineSegment ); tcase_add_test( tcase, test_LayoutCreation_LineSegment_notes ); tcase_add_test( tcase, test_LayoutCreation_LineSegment_annotation ); tcase_add_test( tcase, test_LayoutCreation_CubicBezier ); tcase_add_test( tcase, test_LayoutCreation_CubicBezier_notes ); tcase_add_test( tcase, test_LayoutCreation_CubicBezier_annotation ); tcase_add_test( tcase, test_LayoutCreation_Dimensions ); tcase_add_test( tcase, test_LayoutCreation_Dimensions_notes ); tcase_add_test( tcase, test_LayoutCreation_Dimensions_annotation ); tcase_add_test( tcase, test_LayoutCreation_Dimensions_skipOptional ); tcase_add_test( tcase, test_LayoutCreation_BoundingBox ); tcase_add_test( tcase, test_LayoutCreation_BoundingBox_notes ); tcase_add_test( tcase, test_LayoutCreation_BoundingBox_annotation ); tcase_add_test( tcase, test_LayoutCreation_BoundingBox_skipOptional ); suite_add_tcase(suite, tcase); return suite; } END_C_DECLS