abcjs / tests /visual /slurs.test.js
KEXEL's picture
Upload 337 files
af6912c verified
describe("Slurs", function() {
var abcSlurBeams = "X:1\n" +
"L:1/8\n" +
"M:4/4\n" +
"%%score (S A)\n" +
"K:C\n" +
"[V:S]G2 cc3 ||\n" +
"[V:A]E2E (EFG) ||";
var abcSlurBeams2 = "X:1\n" +
"L:1/8\n" +
"M:4/4\n" +
"%%score (S A) (T B)\n" +
"K:C\n" +
"[V:S](EFGCF2) (EF) | (E2D2) C4 | (f2e)c ||\n" +
"[V:A](C4CB,) C2 | (C2B,2) C4 | (c2G)E ||\n" +
"[V:T](G,4 A,F,) (G,F,) | G,2>F,2 E,4 | f(e c2) ||\n" +
"[V:B](C,D, E,2 D,2) (C,A,,) | G,,4 C,4 | c(G E2) ||\n"
it("slur around beams", function() {
abcjs.renderAbc("paper", abcSlurBeams, {add_classes: true});
var slur = document.querySelector('.abcjs-slur')
var beam = document.querySelector('.abcjs-beam-elem')
var slurPos = slur.getBBox()
var beamPos = beam.getBBox()
chai.assert.isAbove(slurPos.y, beamPos.y, "slur should be underneath beam");
})
it("slurs-around-beams2", function() {
var visualObj = abcjs.renderAbc("paper", abcSlurBeams2, {add_classes: true});
var slurY = []
for (var i = 0; i < visualObj[0].lines[0].staffGroup.voices.length; i++) {
var voice = visualObj[0].lines[0].staffGroup.voices[i]
for (var s = 0; s < voice.otherchildren.length; s++) {
var slur = voice.otherchildren[s]
if (slur.type === 'TieElem') {
slurY.push({s: Math.round(slur.startY), e: Math.round(slur.endY)})
}
}
}
var expected = [
{s: 13, e: 3},
{s: 10, e: 11},
{s: 5, e: 4},
{s: 13, e: 12},
{s: 0, e: -8},
{s: 0, e: -1},
{s: 7, e: 4},
{s: 0, e: 5},
{s: 6, e: 6},
{s: 12, e: 10},
{s: -14, e: -6},
{s: -15, e: -16},
{s: 4, e: 2},
]
chai.assert.deepStrictEqual(slurY, expected, "Vertical placement of slurs");
})
})