abcjs / tests /visual /decorations.test.js
KEXEL's picture
Upload 337 files
af6912c verified
describe("Decorations", function() {
var abcFermata = "X:1\n" +
"L:1/8\n" +
"M:4/4\n" +
"%%score (S A) B\n" +
"K:C\n" +
"[V:S]!invertedfermata!EF !invertedfermata!G2 | !invertedfermata!ef !invertedfermata!g2 |!fermata!EF !fermata!G2 | !fermata!ef !fermata!g2 ||\n" +
"[V:A]!invertedfermata!A,B, !invertedfermata!C2 | !invertedfermata!cd !invertedfermata!e2 |!fermata!A,B, !fermata!C2 | !fermata!cd !fermata!e2 ||\n" +
"[V:B]!invertedfermata!A,B, !invertedfermata!C2 | !invertedfermata!cd !invertedfermata!e2 |!fermata!A,B, !fermata!C2 | !fermata!cd !fermata!e2 ||\n"
var expectedFermata = [
{ "pitch": -1, "note": "E" },
{ "pitch": 1, "note": "G" },
{ "pitch": 6, "note": "e" },
{ "pitch": 8, "note": "g" },
{ "pitch": 14, "note": "E" },
{ "pitch": 14, "note": "G" },
{ "pitch": 20, "note": "e" },
{ "pitch": 20, "note": "g" },
{ "pitch": -11, "note": "A," },
{ "pitch": -10, "note": "C" },
{ "pitch": -5, "note": "c" },
{ "pitch": -1, "note": "e" },
{ "pitch": 14, "note": "A," },
{ "pitch": 14, "note": "C" },
{ "pitch": 14, "note": "c" },
{ "pitch": 14, "note": "e" },
{ "pitch": -5, "note": "A," },
{ "pitch": -3, "note": "C" },
{ "pitch": -5, "note": "c" },
{ "pitch": -1, "note": "e" },
{ "pitch": 14, "note": "A," },
{ "pitch": 14, "note": "C" },
{ "pitch": 14, "note": "c" },
{ "pitch": 14, "note": "e" }
]
it("fermata", function() {
var visualObj = abcjs.renderAbc("paper", abcFermata, {add_classes: true});
var fermatas = []
for (var i = 0; i < visualObj[0].lines.length; i++) {
var line = visualObj[0].lines[i]
for (var j = 0; j < line.staffGroup.voices.length; j++) {
var voice = line.staffGroup.voices[j];
for (var k = 0; k < voice.children.length; k++) {
var absElem = voice.children[k]
for (var ii = 0; ii < absElem.children.length; ii++) {
var relElem = absElem.children[ii]
if (relElem.c === 'scripts.dfermata' || relElem.c === 'scripts.ufermata') {
fermatas.push({pitch: Math.round(relElem.pitch), note: relElem.parent.children[0].name})
}
}
}
}
}
console.log(fermatas)
chai.assert.deepStrictEqual(fermatas, expectedFermata);
})
})