summaryrefslogtreecommitdiff
path: root/libs/canvas/test/xml.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/canvas/test/xml.cc')
-rw-r--r--libs/canvas/test/xml.cc53
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++));
+}