From 8a97a89f3e43ca7ad175d7002e5f4679aa3f9a41 Mon Sep 17 00:00:00 2001 From: Hans Baier Date: Thu, 22 May 2008 16:02:05 +0000 Subject: [PATCH] * added more tests and profiling for pbd/xml++ xpath support git-svn-id: svn://localhost/ardour2/branches/3.0@3387 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/pbd/tests/Makefile | 3 +- libs/pbd/tests/TestSession.ardour | 3392 +++++++++++++++++++++++++++++ libs/pbd/tests/xpath.cc | 58 +- 3 files changed, 3448 insertions(+), 5 deletions(-) create mode 100644 libs/pbd/tests/TestSession.ardour diff --git a/libs/pbd/tests/Makefile b/libs/pbd/tests/Makefile index 78cc489579..464bbbe13e 100644 --- a/libs/pbd/tests/Makefile +++ b/libs/pbd/tests/Makefile @@ -1,5 +1,6 @@ test: xpath LD_LIBRARY_PATH=..:../../sigc++2:../../glibmm2 ./xpath + LD_LIBRARY_PATH=..:../../sigc++2:../../glibmm2 gprof ./xpath xpath: xpath.cc - gcc -o $@ -g -I.. `xml2-config --libs --cflags` -L.. -L../../sigc++2 -L../../glibmm2 -lstdc++ -lpbd -lglibmm2 -lsigc++2 $< \ No newline at end of file + gcc -o $@ -g -pg -I.. `xml2-config --libs --cflags` -L.. -L../../sigc++2 -L../../glibmm2 -lstdc++ -lpbd -lglibmm2 -lsigc++2 $< \ No newline at end of file diff --git a/libs/pbd/tests/TestSession.ardour b/libs/pbd/tests/TestSession.ardour new file mode 100644 index 0000000000..d3bffd33a5 --- /dev/null +++ b/libs/pbd/tests/TestSession.ardour @@ -0,0 +1,3392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 0.945643 +4.48691e+07 1 +4.48691e+07 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 +1.29824e+07 1.00019 +1.30507e+07 2 +1.42752e+07 2 +1.44042e+07 1.00019 +2.79031e+07 1.00019 +2.79729e+07 1.88026 +3.21798e+07 2 +3.22396e+07 1.00019 +1.00944e+08 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 0 +5.08932e+06 0 +5.32422e+06 1.00019 +1.14314e+07 1.01536 +1.14575e+07 0 +1.5268e+07 0 +1.54246e+07 0.996323 +3.0505e+07 1.09402 +3.05449e+07 0.287178 +3.19203e+07 0.287178 +3.19505e+07 0 +3.37848e+07 0 +3.38048e+07 0.559071 +3.49113e+07 0.569296 +3.5001e+07 0 +1.00944e+08 0.999982 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 0 +1.16637e+06 0 +1.20624e+06 1.09402 +5.87651e+06 1.11432 +5.8875e+06 0 +1.03768e+07 0.00032384 +1.03878e+07 1.03465 +6.40872e+07 0.999999 + + + + + + + + + + + + + -1.44935e+08 0.83721 +0 1.00017 +5.84425e+06 1.00019 +5.98942e+06 1.93949 +8.1941e+06 2 +8.23151e+06 1.03465 +9.89292e+06 1.01928 +1.00168e+07 2 +1.0522e+07 2 +1.05975e+07 1.01536 +6.40872e+07 1 + + + + + + + + + + + + + + + + + + + + + 0 1.02847 +4.28045e+07 0.999999 +4.28045e+07 0.999999 + + + + + + + + + + + + + 0 1.01196 +4.28045e+07 1 +4.28045e+07 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 0.693863 +2.96421e+06 0.708776 +3.02847e+06 0.999446 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 0.667538 +8.4076e+06 0.679681 + + + + + + + + + + + + + 0 0.681594 +5.26711e+06 0.693863 +5.26711e+06 0.693863 + + + + + + + + + + + + + 0 0.681507 +5352 0.681516 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 +8.48359e+06 0.981345 +8.5083e+06 1.41418 +1.36699e+07 1.41418 +1.37542e+07 1.00019 +2.24352e+07 1 +2.24352e+07 1 + + + + + + + + + + + + + 0 1.00001 +8.3262e+06 1.00019 +8.35092e+06 1.45319 +1.26129e+07 1.41418 +1.26458e+07 1.00019 +1.76303e+07 1 + + + + + + + + + + + + + + + + + + + + + -2.533e+07 0.996323 +0 1 +1.63663e+07 0.996323 +1.65236e+07 1.41418 +1.90523e+07 1.41418 +1.92872e+07 1.00019 +2.58015e+07 1.00019 + + + + + + + + + + + + + 0 1 +1.16467e+07 1.01928 +1.17032e+07 1.42992 +1.44052e+07 1.41418 +1.46344e+07 1.00019 +1.63824e+07 0.981345 +1.67369e+07 1 +1.67369e+07 1 + + + + + + + + + + + + + 0 1 +1.29824e+07 1.00019 +1.30357e+07 1.42992 +1.42752e+07 1.42992 +1.44042e+07 1.00019 +2.79031e+07 1.00019 +2.79915e+07 1.45953 +3.21488e+07 1.49408 +3.22396e+07 1.00019 +3.49228e+07 1.00018 +3.49228e+07 1.00018 + + + + + + + + + + + + + 0 1.00017 +5.84425e+06 1.00019 +5.98942e+06 1.93949 +8.1941e+06 2 +8.23151e+06 1.03465 +9.89292e+06 1.01928 +1.00168e+07 2 +1.0522e+07 2 +1.05975e+07 1.01536 +1.20583e+07 1.01454 +1.20583e+07 1.01454 + + + + + + + + + + + + + -1.49548e+08 1.43228 +0 1.00017 +5.84425e+06 1.00019 +5.98157e+06 1.41418 +8.15612e+06 1.42992 +8.23151e+06 1.03465 +9.89292e+06 1.01928 +9.97054e+06 1.44578 +1.05519e+07 1.44578 +1.05975e+07 1.01536 +1.20583e+07 1.01454 +1.20583e+07 1.01454 + + + + + + + + + + + + + 0 1.01196 +8.82149e+06 1.11432 +8.84173e+06 1.41418 +1.05871e+07 1.42882 +1.06504e+07 1.00019 +1.79089e+07 1.00696 +1.79089e+07 1.00696 + + + + + + + + + + + + + -1.80897e+08 0.881277 +0 1.00619 +1.10489e+07 1.00019 +1.10627e+07 1.39856 +1.61185e+07 1.39856 +1.63256e+07 1.00019 +2.15843e+07 1.00016 +2.15843e+07 1.00016 + + + + + + + + + + + + + + + + + + + + + 0 1 +1.26373e+07 1.09402 +1.26481e+07 1.41418 +1.53786e+07 1.41418 +1.55313e+07 1.01928 +2.17243e+07 1 +2.17243e+07 1 + + + + + + + + + + + + + 0 1 +5.77799e+06 1.00019 +5.84844e+06 1.44578 +8.20896e+06 1.42039 +8.27634e+06 1.00019 +1.50684e+07 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 0.66443 +1.13727e+07 0.821401 +1.14508e+07 1 +1.14508e+07 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 0.945643 +1.07681e+07 0.964835 + + + + + + + + + + + + + -3.86611e+07 0.0530382 +0 0 +4.61954e+06 3.41123e-05 +4.82833e+06 0.711842 +1.64446e+07 0.723881 +1.65207e+07 0 +2.17807e+07 0 +2.17845e+07 0.0283181 +2.17883e+07 0.723881 +2.58015e+07 0.711842 +2.58015e+07 0.711842 + + + + + + + + + + + + + 0 0.711692 +1.66805e+07 0.711842 +1.67369e+07 0.711692 +1.67369e+07 0.711692 + + + + + + + + + + + + + 0 0 +5.08932e+06 0 +5.32422e+06 1.00019 +1.14314e+07 1.01536 +1.14575e+07 0 +1.5268e+07 0 +1.54246e+07 0.996323 +3.0505e+07 1.09402 +3.05449e+07 0.287178 +3.19203e+07 0.287178 +3.19505e+07 0 +3.37848e+07 0 +3.38048e+07 0.559071 +3.49113e+07 0.569296 +3.49228e+07 0.543627 +3.49228e+07 0.543627 + + + + + + + + + + + + + 0 0 +1.16637e+06 0 +1.20624e+06 1.09402 +5.87651e+06 1.11432 +5.8875e+06 0 +1.03768e+07 0.00032384 +1.03878e+07 1.03465 +1.20583e+07 1.0346 +1.20583e+07 1.0346 + + + + + + + + + + + + + 0 0 +1.16637e+06 0 +1.20624e+06 1.09402 +5.87651e+06 1.11432 +5.8875e+06 0 +1.03768e+07 0.00032384 +1.03878e+07 1.03465 +1.20583e+07 1.0346 +1.20583e+07 1.0346 + + + + + + + + + + + + + 0 0.711842 +1.79089e+07 0.711842 + + + + + + + + + + + + + 0 0 +7.25429e+06 0 +7.37322e+06 1.00019 +2.15843e+07 1.00019 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 1 +1.48675e+07 1.01928 +1.48716e+07 0 +1.50684e+07 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -2.99934e+08 0.835992 +-2.99895e+08 1.01555 +0 1.00019 +9.86425e+06 1.03465 +9.90955e+06 0.754746 +1.14508e+07 0.625281 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/pbd/tests/xpath.cc b/libs/pbd/tests/xpath.cc index f10d4b4254..7d7c1a39b4 100644 --- a/libs/pbd/tests/xpath.cc +++ b/libs/pbd/tests/xpath.cc @@ -7,12 +7,12 @@ using namespace std; int main() { + cout << "Test 1: Find all banks in the file" << endl; XMLTree doc("./rosegardenpatchfile.xml"); - XMLNode* root = doc.root(); // "//bank" gives as last element an empty element libxml bug???? - XMLNodeList* result = root->find("//bank[@name]"); + XMLNodeList* result = doc.root()->find("//bank[@name]"); - cerr << "Found " << result->size() << " banks" << endl; + cout << "Found " << result->size() << " banks" << endl; assert(result->size() == 8); int counter = 1; for(XMLNodeList::const_iterator i = result->begin(); i != result->end(); ++i) { @@ -20,7 +20,57 @@ int main() assert((*i)->property("name")); cout << "Found bank number " << counter++ << " with name: " << (*i)->property("name")->value() << endl; for(XMLNodeList::const_iterator j = (*i)->children().begin(); j != (*i)->children().end(); ++j) { - cout << "\t found program with name: " << (*j)->property("name")->value() << endl; + cout << "\t found program " << (*j)->property("id")->value() << + " with name: " << (*j)->property("name")->value() << endl; } + + delete *i; } + + delete result; + + cout << endl << endl << "Test 2: Find all programs whose program name contains 'Latin'" << endl; + + result = doc.root()->find("/rosegarden-data/studio/device/bank/program[contains(@name, 'Latin')]"); + assert(result->size() == 5); + + for(XMLNodeList::const_iterator i = result->begin(); i != result->end(); ++i) { + cout << "\t found program " << (*i)->property("id")->value() << + " with name: " << (*i)->property("name")->value() << endl; + + delete *i; + } + + delete result; + + cout << endl << endl << "Test 3: find all Sources where captured-for contains the string 'Guitar'" << endl; + + XMLTree doc2("./TestSession.ardour"); + result = doc2.root()->find("/Session/Sources/Source[contains(@captured-for, 'Guitar')]"); + assert(result->size() == 16); + + for(XMLNodeList::const_iterator i = result->begin(); i != result->end(); ++i) { + cout << "\t found source '" << (*i)->property("name")->value() << + "' with id: " << (*i)->property("id")->value() << endl; + + delete *i; + } + + delete result; + + cout << endl << endl << "Test 4: Find all elements with an 'id' and 'name' attribute" << endl; + + result = doc2.root()->find("//*[@id and @name]"); + + for(XMLNodeList::const_iterator i = result->begin(); i != result->end(); ++i) { + assert((*i)->property("id")); + assert((*i)->property("name")); + cout << "\t found element '" << (*i)->name() << + "' with id: " << (*i)->property("id")->value() << + "' and name: " << (*i)->property("name")->value() << endl; + + delete *i; + } + + delete result; }