diff options
Diffstat (limited to 'libs/canvas/test/xml.cc')
-rw-r--r-- | libs/canvas/test/xml.cc | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/libs/canvas/test/xml.cc b/libs/canvas/test/xml.cc new file mode 100644 index 0000000000..ef6871dc76 --- /dev/null +++ b/libs/canvas/test/xml.cc @@ -0,0 +1,53 @@ +#include "pbd/xml++.h" +#include "xml.h" +#include "canvas/canvas.h" +#include "canvas/rectangle.h" +#include "canvas/line.h" + +CPPUNIT_TEST_SUITE_REGISTRATION (XMLTest); + +using namespace std; +using namespace ArdourCanvas; + +void +XMLTest::check (string const & name) +{ + stringstream s; + s << "diff -q " << name << ".xml " << "../../libs/canvas/test/" << name << ".xml"; + int r = system (s.str().c_str()); + CPPUNIT_ASSERT (WEXITSTATUS (r) == 0); +} + +void +XMLTest::get () +{ + ImageCanvas canvas; + + Rectangle r (canvas.root(), Rect (0, 0, 16, 16)); + r.set_outline_color (0x12345678); + Group g (canvas.root()); + g.set_position (Duple (64, 72)); + Line l (&g); + l.set (Duple (41, 43), Duple (44, 46)); + + XMLTree* tree = canvas.get_state (); + tree->write ("test.xml"); + + check ("test"); +} + +void +XMLTest::set () +{ + XMLTree* tree = new XMLTree ("../../libs/canvas/test/test.xml"); + ImageCanvas canvas (tree); + + list<Item*> root_items = canvas.root()->items (); + CPPUNIT_ASSERT (root_items.size() == 2); + + list<Item*>::iterator i = root_items.begin(); + Rectangle* r = dynamic_cast<Rectangle*> (*i++); + CPPUNIT_ASSERT (r); + CPPUNIT_ASSERT (r->outline_color() == 0x12345678); + CPPUNIT_ASSERT (dynamic_cast<Group*> (*i++)); +} |