summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/test/automation_list_property_test.cc14
-rw-r--r--libs/ardour/test/data/automation_list_property_test1.ref12
-rw-r--r--libs/ardour/test/data/automation_list_property_test2.ref17
-rw-r--r--libs/ardour/test/data/automation_list_property_test3.ref9
-rw-r--r--libs/ardour/test/data/automation_list_property_test4.ref9
-rw-r--r--libs/ardour/test/test_util.cc63
-rw-r--r--libs/ardour/test/test_util.h4
7 files changed, 87 insertions, 41 deletions
diff --git a/libs/ardour/test/automation_list_property_test.cc b/libs/ardour/test/automation_list_property_test.cc
index 9d1f448ad5..90e2e22989 100644
--- a/libs/ardour/test/automation_list_property_test.cc
+++ b/libs/ardour/test/automation_list_property_test.cc
@@ -31,6 +31,9 @@ using namespace ARDOUR;
void
AutomationListPropertyTest::basicTest ()
{
+ list<string> ignore_properties;
+ ignore_properties.push_back ("id");
+
PropertyDescriptor<boost::shared_ptr<AutomationList> > descriptor;
descriptor.property_id = g_quark_from_static_string ("FadeIn");
AutomationListProperty property (
@@ -51,7 +54,7 @@ AutomationListPropertyTest::basicTest ()
XMLNode* foo = new XMLNode ("test");
property.get_changes_as_xml (foo);
- check_xml (foo, "../libs/ardour/test/data/automation_list_property_test1.ref");
+ check_xml (foo, "../libs/ardour/test/data/automation_list_property_test1.ref", ignore_properties);
/* Do some more */
property.clear_changes ();
@@ -61,7 +64,7 @@ AutomationListPropertyTest::basicTest ()
CPPUNIT_ASSERT_EQUAL (true, property.changed());
foo = new XMLNode ("test");
property.get_changes_as_xml (foo);
- check_xml (foo, "../libs/ardour/test/data/automation_list_property_test2.ref");
+ check_xml (foo, "../libs/ardour/test/data/automation_list_property_test2.ref", ignore_properties);
}
/** Here's a StatefulDestructible class that has a AutomationListProperty */
@@ -99,6 +102,9 @@ PropertyDescriptor<boost::shared_ptr<AutomationList> > Fred::_descriptor;
void
AutomationListPropertyTest::undoTest ()
{
+ list<string> ignore_properties;
+ ignore_properties.push_back ("id");
+
Fred::make_property_quarks ();
boost::shared_ptr<Fred> sheila (new Fred);
@@ -115,9 +121,9 @@ AutomationListPropertyTest::undoTest ()
/* Undo */
sdc.undo ();
- check_xml (&sheila->get_state(), "../libs/ardour/test/data/automation_list_property_test3.ref");
+ check_xml (&sheila->get_state(), "../libs/ardour/test/data/automation_list_property_test3.ref", ignore_properties);
/* Redo */
sdc.redo ();
- check_xml (&sheila->get_state(), "../libs/ardour/test/data/automation_list_property_test4.ref");
+ check_xml (&sheila->get_state(), "../libs/ardour/test/data/automation_list_property_test4.ref", ignore_properties);
}
diff --git a/libs/ardour/test/data/automation_list_property_test1.ref b/libs/ardour/test/data/automation_list_property_test1.ref
index b7c11f153a..36e8389bf5 100644
--- a/libs/ardour/test/data/automation_list_property_test1.ref
+++ b/libs/ardour/test/data/automation_list_property_test1.ref
@@ -1,16 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
<test>
<FadeIn>
<from>
- <AutomationList automation-id="fadein" id="162" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
- </AutomationList>
+ <AutomationList automation-id="fadein" id="164" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute"/>
</from>
<to>
- <AutomationList automation-id="fadein" id="162" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
- <events>
- 1 2
+ <AutomationList automation-id="fadein" id="163" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
+ <events>1 2
3 4
-
- </events>
+</events>
</AutomationList>
</to>
</FadeIn>
diff --git a/libs/ardour/test/data/automation_list_property_test2.ref b/libs/ardour/test/data/automation_list_property_test2.ref
index 17df0e4f54..cacfe510aa 100644
--- a/libs/ardour/test/data/automation_list_property_test2.ref
+++ b/libs/ardour/test/data/automation_list_property_test2.ref
@@ -1,23 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
<test>
<FadeIn>
<from>
- <AutomationList automation-id="fadein" id="162" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
- <events>
- 1 2
+ <AutomationList automation-id="fadein" id="165" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
+ <events>1 2
3 4
-
- </events>
+</events>
</AutomationList>
</from>
<to>
- <AutomationList automation-id="fadein" id="162" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
- <events>
- 1 2
+ <AutomationList automation-id="fadein" id="163" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
+ <events>1 2
3 4
5 6
7 8
-
- </events>
+</events>
</AutomationList>
</to>
</FadeIn>
diff --git a/libs/ardour/test/data/automation_list_property_test3.ref b/libs/ardour/test/data/automation_list_property_test3.ref
index edc1469d10..e5e6117d69 100644
--- a/libs/ardour/test/data/automation_list_property_test3.ref
+++ b/libs/ardour/test/data/automation_list_property_test3.ref
@@ -1,11 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
<State>
<FadeIn>
- <AutomationList automation-id="fadein" id="166" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
- <events>
- 1 2
+ <AutomationList automation-id="fadein" id="167" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
+ <events>1 2
3 4
-
- </events>
+</events>
</AutomationList>
</FadeIn>
</State>
diff --git a/libs/ardour/test/data/automation_list_property_test4.ref b/libs/ardour/test/data/automation_list_property_test4.ref
index 5a6024a429..573e16d291 100644
--- a/libs/ardour/test/data/automation_list_property_test4.ref
+++ b/libs/ardour/test/data/automation_list_property_test4.ref
@@ -1,13 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
<State>
<FadeIn>
- <AutomationList automation-id="fadein" id="166" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
- <events>
- 1 2
+ <AutomationList automation-id="fadein" id="167" default="0" min-yval="0" max-yval="2" interpolation-style="Linear" state="Off" style="Absolute">
+ <events>1 2
3 4
5 6
7 8
-
- </events>
+</events>
</AutomationList>
</FadeIn>
</State>
diff --git a/libs/ardour/test/test_util.cc b/libs/ardour/test/test_util.cc
index 35b9e588f9..f08b6759e7 100644
--- a/libs/ardour/test/test_util.cc
+++ b/libs/ardour/test/test_util.cc
@@ -10,17 +10,62 @@ using namespace std;
using namespace ARDOUR;
using namespace PBD;
+static void
+check_nodes (XMLNode const * p, XMLNode const * q, list<string> const & ignore_properties)
+{
+ CPPUNIT_ASSERT_EQUAL (p->is_content(), q->is_content());
+ if (!p->is_content()) {
+ CPPUNIT_ASSERT_EQUAL (p->name(), q->name());
+ } else {
+ CPPUNIT_ASSERT_EQUAL (p->content(), q->content());
+ }
+
+ XMLPropertyList const & pp = p->properties ();
+ XMLPropertyList const & qp = q->properties ();
+ CPPUNIT_ASSERT_EQUAL (pp.size(), qp.size());
+
+ XMLPropertyList::const_iterator i = pp.begin ();
+ XMLPropertyList::const_iterator j = qp.begin ();
+ while (i != pp.end ()) {
+ CPPUNIT_ASSERT_EQUAL ((*i)->name(), (*j)->name());
+ if (find (ignore_properties.begin(), ignore_properties.end(), (*i)->name ()) == ignore_properties.end ()) {
+ CPPUNIT_ASSERT_EQUAL ((*i)->value(), (*j)->value());
+ }
+ ++i;
+ ++j;
+ }
+
+ XMLNodeList const & pc = p->children ();
+ XMLNodeList const & qc = q->children ();
+
+ CPPUNIT_ASSERT_EQUAL (pc.size(), qc.size());
+ XMLNodeList::const_iterator k = pc.begin ();
+ XMLNodeList::const_iterator l = qc.begin ();
+
+ while (k != pc.end ()) {
+ check_nodes (*k, *l, ignore_properties);
+ ++k;
+ ++l;
+ }
+}
+
+void
+check_xml (XMLNode* node, string ref_file, list<string> const & ignore_properties)
+{
+ XMLTree ref (ref_file);
+
+ XMLNode* p = node;
+ XMLNode* q = ref.root ();
+
+ check_nodes (p, q, ignore_properties);
+}
+
void
-check_xml (XMLNode* node, string ref_file)
+write_ref (XMLNode* node, string ref_file)
{
- system ("rm -f libs/ardour/test/test.xml");
- ofstream f ("libs/ardour/test/test.xml");
- node->dump (f);
- f.close ();
-
- stringstream cmd;
- cmd << "diff -u libs/ardour/test/test.xml " << ref_file;
- CPPUNIT_ASSERT_EQUAL (0, system (cmd.str().c_str ()));
+ XMLTree ref;
+ ref.set_root (node);
+ ref.write (ref_file);
}
class TestReceiver : public Receiver
diff --git a/libs/ardour/test/test_util.h b/libs/ardour/test/test_util.h
index 436580d6cb..fea74a2ea8 100644
--- a/libs/ardour/test/test_util.h
+++ b/libs/ardour/test/test_util.h
@@ -1,4 +1,5 @@
#include <string>
+#include <list>
class XMLNode;
@@ -6,5 +7,6 @@ namespace ARDOUR {
class Session;
}
-extern void check_xml (XMLNode *, std::string);
+extern void check_xml (XMLNode *, std::string, std::list<std::string> const &);
+extern void write_ref (XMLNode *, std::string);
extern ARDOUR::Session* load_session (std::string, std::string);