abcjs / tests /parse /book_parser.test.js
KEXEL's picture
Upload 337 files
af6912c verified
/**
* http://abcnotation.com/wiki/abc:standard:v2.1#xreference_number
* http://abcnotation.com/wiki/abc:standard:v2.1#ttune_title
*
*/
describe("Book Parser function", function () {
it("parses a single tune", () => {
var tunebook = new abcjs.TuneBook("X:43\nT: example")
chai.assert.equal(tunebook.tunes.length, 1)
chai.assert.equal(tunebook.tunes[0].id, "43")
chai.assert.equal(tunebook.tunes[0].title, "example")
})
it("parses a single tune with no title", () => {
var tunebook = new abcjs.TuneBook("X:43\nT:")
chai.assert.equal(tunebook.tunes.length, 1)
chai.assert.equal(tunebook.tunes[0].id, "43")
chai.assert.equal(tunebook.tunes[0].title, "")
})
it("parses multiple tunes", () => {
var tunebook = new abcjs.TuneBook("X:1\nT: a\n\nX:2\n\nX:3\nT: c")
chai.assert.equal(tunebook.tunes.length, 3)
chai.assert.equal(tunebook.tunes[0].id, "1")
chai.assert.equal(tunebook.tunes[0].title, "a")
chai.assert.equal(tunebook.tunes[1].id, "2")
chai.assert.equal(tunebook.tunes[1].title, "")
chai.assert.equal(tunebook.tunes[2].id, "3")
chai.assert.equal(tunebook.tunes[2].title, "c")
})
it("collects directives in string header", () => {
var tunebook = new abcjs.TuneBook("%% example\nT: wed\n%%example\nX:1")
chai.assert.equal(tunebook.header, "%% example\n%%example\n")
})
it("trims whitespace from the end of a tune", () => {
var tunebook = new abcjs.TuneBook("%%example\nX:1\nT: a\n\n\n\n\n\nX:2\n\n")
chai.assert.equal(tunebook.tunes[0].abc, "%%example\nX:1\nT: a")
chai.assert.equal(tunebook.tunes[0].pure, "X:1\nT: a")
})
})