| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 | import chai = require("chai");import { OpenSheetMusicDisplay } from "../../../src/OpenSheetMusicDisplay/OpenSheetMusicDisplay";import { TestUtils } from "../../Util/TestUtils";describe("OpenSheetMusicDisplay Main Export", () => {    let container1: HTMLElement;    it("no container", (done: MochaDone) => {        chai.expect(() => {            return new OpenSheetMusicDisplay(undefined);        }).to.throw(/container/);        done();    });    it("container", (done: MochaDone) => {        const div: HTMLElement = TestUtils.getDivElement(document);        chai.expect(() => {            return new OpenSheetMusicDisplay(div);        }).to.not.throw(Error);        done();    });    it("load MXL from string", (done: MochaDone) => {        const mxl: string = TestUtils.getMXL("Mozart_Clarinet_Quintet_Excerpt.mxl");        const div: HTMLElement = TestUtils.getDivElement(document);        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        opensheetmusicdisplay.load(mxl).then(            (_: {}) => {                opensheetmusicdisplay.render();                done();            },            done        );    });    it("load invalid MXL from string", (done: MochaDone) => {        const mxl: string = "\x50\x4b\x03\x04";        const div: HTMLElement = TestUtils.getDivElement(document);        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        opensheetmusicdisplay.load(mxl).then(            (_: {}) => {                done(new Error("Corrupted MXL appears to be loaded correctly"));            },            (exc: Error) => {                if (exc.message.toLowerCase().match(/invalid/)) {                    done();                } else {                    done(new Error("Unexpected error: " + exc.message));                }            }        );    });    it("load XML string", (done: MochaDone) => {        const score: Document = TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1.xml");        const xml: string = new XMLSerializer().serializeToString(score);        const div: HTMLElement = TestUtils.getDivElement(document);        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        opensheetmusicdisplay.load(xml).then(            (_: {}) => {                opensheetmusicdisplay.render();                done();            },            done        );    });    it("load XML Document", (done: MochaDone) => {        const score: Document = TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1.xml");        const div: HTMLElement = TestUtils.getDivElement(document);        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        opensheetmusicdisplay.load(score).then(            (_: {}) => {                opensheetmusicdisplay.render();                done();            },            done        );    });    it("Timeout from server", (done: MochaDone) => {        const score: string = "https://httpstat.us/408";        const div: HTMLElement = TestUtils.getDivElement(document);        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        opensheetmusicdisplay.load(score).then(            (_: {}) => {                done(new Error("Unexpected response from server"));            },            (exc: Error) => {                done();            }        );    });    it("load MXL Document by URL", (done: MochaDone) => {        const url: string = "base/test/data/Mozart_Clarinet_Quintet_Excerpt.mxl";        const div: HTMLElement = TestUtils.getDivElement(document);        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        opensheetmusicdisplay.load(url).then(            (_: {}) => {                opensheetmusicdisplay.render();                done();            },            done        );    });    it("load something invalid by URL", (done: MochaDone) => {        const url: string = "https://www.google.com";        const div: HTMLElement = TestUtils.getDivElement(document);        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        opensheetmusicdisplay.load(url).then(            (_: {}) => {                done(new Error("Invalid URL appears to be loaded correctly"));            },            (exc: Error) => {                if (exc.message.toLowerCase().match(/opensheetmusicdisplay.*invalid/)) {                    done();                } else {                    done(new Error("Unexpected error: " + exc.message));                }            }        );    }).timeout(5000);    it("load invalid URL", (done: MochaDone) => {        const url: string = "https://www.afjkhfjkauu2ui3z2uiu.com";        const div: HTMLElement = TestUtils.getDivElement(document);        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        opensheetmusicdisplay.load(url).then(            (_: {}) => {                done(new Error("Invalid URL appears to be loaded correctly"));            },            (exc: Error) => {                if (exc.message.toLowerCase().match(/url/)) {                    done();                } else {                    done(new Error("Unexpected error: " + exc.message));                }            }        );    }).timeout(5000);    it("load invalid XML string", (done: MochaDone) => {        const xml: string = "<?xml";        const div: HTMLElement = TestUtils.getDivElement(document);        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        opensheetmusicdisplay.load(xml).then(            (_: {}) => {                done(new Error("Corrupted XML appears to be loaded correctly"));            },            (exc: Error) => {                if (exc.message.toLowerCase().match(/partwise/)) {                    done();                } else {                    done(new Error("Unexpected error: " + exc.message));                }            }        );    });    it("render without loading", (done: MochaDone) => {        const div: HTMLElement = TestUtils.getDivElement(document);        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        chai.expect(() => {            return opensheetmusicdisplay.render();        }).to.throw(/load/);        done();    });    before((): void => {        // Create the container for the "test width" test        container1 = TestUtils.getDivElement(document);    });    after((): void => {        // Destroy the container for the "test width" test        document.body.removeChild(container1);    });    it("test width 500", (done: MochaDone) => {        const div: HTMLElement = container1;        div.style.width = "500px";        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        const score: Document = TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1.xml");        opensheetmusicdisplay.load(score).then(            (_: {}) => {                opensheetmusicdisplay.render();                chai.expect(div.offsetWidth).to.equal(500);                done();            },            done        ).catch(done);    });    it("test width 200", (done: MochaDone) => {        const div: HTMLElement = container1;        div.style.width = "200px";        const opensheetmusicdisplay: OpenSheetMusicDisplay = TestUtils.createOpenSheetMusicDisplay(div);        const score: Document = TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1.xml");        opensheetmusicdisplay.load(score).then(            (_: {}) => {                opensheetmusicdisplay.render();                chai.expect(div.offsetWidth).to.equal(200);                done();            },            done        ).catch(done);    });    describe("cursor with hidden instrument", () => {        let osmd: OpenSheetMusicDisplay;        beforeEach(() => {            const div: HTMLElement = TestUtils.getDivElement(document);            osmd = TestUtils.createOpenSheetMusicDisplay(div);            const score: Document =                TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1.xml");            return osmd.load(score)                .then(() => {                    osmd.render();                });        });        it("should move cursor after instrument is hidden", () => {            osmd.Sheet.Instruments[1].Visible = false;            osmd.render();            osmd.cursor.show();            for (let i: number = 0; i < 100; i++) {                osmd.cursor.next();            }        });    });});
 |