describe("Parser", function() { var abcOctave1 = "X:1\nK: bass\n" + "[V:v1] C,D,E,F, |\n" + "[V:v2 octave=-1] CDEF |\n" + "[V:v3 octave=-2] cdef |\n" + "[V:v4 octave=1] C,,D,,E,,F,, |\n" + "K: octave=1\n" + "[V:v1] C,,D,,E,,F,,|\n" + "[V:v2] CDEF |\n" + "[V:v3] cdef |\n" + "[V:v4 octave=0] C,D,E,F, |\n" var expectedOctave1 = [ [-7, -6, -5, -4], [-7, -6, -5, -4], [-7, -6, -5, -4], [-7, -6, -5, -4], [-7, -6, -5, -4], [-7, -6, -5, -4], [-7, -6, -5, -4], [-7, -6, -5, -4], ] it("octave1", function() { doNoteIdTest(abcOctave1, expectedOctave1) }) function doNoteIdTest(abc, expected) { var visualObj = abcjs.renderAbc("paper", abc, {}); var output = [] for (var k = 0; k < visualObj[0].lines.length; k++) { var line = visualObj[0].lines[k]; for (var i = 0; i < line.staff.length; i++) { var voice = line.staff[i].voices[0] var out = [] for (var j = 0; j < voice.length; j++) { if (voice[j].pitches) out.push(voice[j].pitches[0].pitch) } output.push(out) } } chai.assert.deepStrictEqual(output, expected); } })