mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 03:36:32 +01:00
* added midnam test file for xpath
* added to_string() to MIDI::Event * added XMLNode::attribute_value for attribute nodes * debugging output in MidiModel (incorrect rendering of Pitchbender events: Notes lost * added xpath tests for midnam files git-svn-id: svn://localhost/ardour2/branches/3.0@3406 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
5e856e94ac
commit
4aa9d17ab1
7 changed files with 11816 additions and 10 deletions
|
|
@ -7,8 +7,8 @@ using namespace std;
|
|||
|
||||
int main()
|
||||
{
|
||||
cout << "Test 1: Find all banks in the file" << endl;
|
||||
XMLTree doc("./rosegardenpatchfile.xml");
|
||||
cout << "Test 1: RosegardenPatchFile.xml: Find all banks in the file" << endl;
|
||||
XMLTree doc("./RosegardenPatchFile.xml");
|
||||
// "//bank" gives as last element an empty element libxml bug????
|
||||
boost::shared_ptr<XMLSharedNodeList> result = doc.root()->find("//bank[@name]");
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ int main()
|
|||
}
|
||||
}
|
||||
|
||||
cout << endl << endl << "Test 2: Find all programs whose program name contains 'Latin'" << endl;
|
||||
cout << endl << endl << "Test 2: RosegardenPatchFile.xml: 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);
|
||||
|
|
@ -35,8 +35,9 @@ int main()
|
|||
" with name: " << (*i)->property("name")->value() << endl;
|
||||
}
|
||||
|
||||
cout << endl << endl << "Test 3: find all Sources where captured-for contains the string 'Guitar'" << endl;
|
||||
cout << endl << endl << "Test 3: TestSession.ardour: find all Sources where captured-for contains the string 'Guitar'" << endl;
|
||||
|
||||
// We have to allocate a new document here, or we get segfaults
|
||||
XMLTree doc2("./TestSession.ardour");
|
||||
result = doc2.root()->find("/Session/Sources/Source[contains(@captured-for, 'Guitar')]");
|
||||
assert(result->size() == 16);
|
||||
|
|
@ -46,7 +47,7 @@ int main()
|
|||
"' with id: " << (*i)->property("id")->value() << endl;
|
||||
}
|
||||
|
||||
cout << endl << endl << "Test 4: Find all elements with an 'id' and 'name' attribute" << endl;
|
||||
cout << endl << endl << "Test 4: TestSession.ardour: Find all elements with an 'id' and 'name' attribute" << endl;
|
||||
|
||||
result = doc2.root()->find("//*[@id and @name]");
|
||||
|
||||
|
|
@ -57,4 +58,29 @@ int main()
|
|||
"' with id: " << (*i)->property("id")->value() <<
|
||||
"' and name: " << (*i)->property("name")->value() << endl;
|
||||
}
|
||||
|
||||
cout << endl << endl << "Test 5: ProtoolsPatchFile.midnam: Get Banks and Patches for 'Name Set 1'" << endl;
|
||||
|
||||
// We have to allocate a new document here, or we get segfaults
|
||||
XMLTree doc3("./ProtoolsPatchFile.midnam");
|
||||
result = doc3.root()->find("/MIDINameDocument/MasterDeviceNames/ChannelNameSet[@Name='Name Set 1']/PatchBank");
|
||||
assert(result->size() == 16);
|
||||
|
||||
for(XMLSharedNodeList::const_iterator i = result->begin(); i != result->end(); ++i) {
|
||||
cout << "\t found Patchbank " << (*i)->property("Name")->value() << endl;
|
||||
boost::shared_ptr<XMLSharedNodeList> patches = (*i)->find("//Patch[@Name]");
|
||||
for(XMLSharedNodeList::const_iterator p = patches->begin(); p != patches->end(); ++p) {
|
||||
cout << "\t\t found patch number " << (*p)->property("Number")->value()
|
||||
<< " with name: " << (*p)->property("Name")->value() << endl;
|
||||
}
|
||||
}
|
||||
|
||||
cout << endl << endl << "Test 5: ProtoolsPatchFile.midnam: Find attribute nodes" << endl;
|
||||
result = doc3.root()->find("//@Value");
|
||||
|
||||
for(XMLSharedNodeList::const_iterator i = result->begin(); i != result->end(); ++i) {
|
||||
boost::shared_ptr<XMLNode> node = (*i);
|
||||
cout << "\t found attribute node: " << node->name()
|
||||
<< " value: " << node->attribute_value() << endl;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue