123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import {TestUtils} from "../../Util/TestUtils";
- import {OpenSheetMusicDisplay} from "../../../src/OpenSheetMusicDisplay/OpenSheetMusicDisplay";
- import { LinearTimingSource } from "../../../src/Playback/TimingSources/LinearTimingSource";
- import { PlaybackManager } from "../../../src/Playback/PlaybackManager";
- import { BasicAudioPlayer } from "../../../src/Playback/BasicAudioPlayer";
- describe("PlaybackManager", () => {
- const div: HTMLElement = document.createElement("div");
- const osmd: OpenSheetMusicDisplay =
- TestUtils.createOpenSheetMusicDisplay(div);
- // for (const score of TestUtils.XmlTestSet) {
- // testFile(score);
- // }
- // use it.only to test only this.
- // TODO if just using it() (all tests), this can still crash the browser somehow.
- it.skip("getSheetDuration total", (done: Mocha.Done) => {
- //let currentFileIndex: number = 0;
- loadNextFile(0, done);
- }).timeout(10000);
- function loadNextFile(fileIndex: number, done: Mocha.Done): void {
- if (fileIndex > TestUtils.XmlTestSet.length - 1) {
- done();
- }
- const score: Document = TestUtils.getScore(TestUtils.XmlTestSet[fileIndex]);
- try {
- osmd.load(score).then(
- (result) => {
- const timingSource: LinearTimingSource = new LinearTimingSource();
- timingSource.Settings = osmd.Sheet.SheetPlaybackSetting;
- timingSource.logEnabled = false;
- const playbackManager: PlaybackManager = new PlaybackManager(
- timingSource, undefined, new BasicAudioPlayer(), undefined);
- osmd.PlaybackManager = playbackManager;
- playbackManager.initialize(osmd.Sheet.MusicPartManager);
- const timeWithoutRepeats: number = playbackManager.getSheetDurationInMs(false);
- const timeWithRepeats: number = playbackManager.getSheetDurationInMsWithRepeats();
- console.log("time with repeats: " + timeWithRepeats.toFixed(2) + " for " + osmd.Sheet.Title.text);
- console.log("time without repeats: " + timeWithoutRepeats.toFixed(2));
- chai.expect(timeWithRepeats >= timeWithoutRepeats).to.equal(true);
- loadNextFile(fileIndex + 1, done);
- },
- (err) => {
- // couldn't read file
- if (fileIndex < TestUtils.XmlTestSet.length - 1) {
- loadNextFile(fileIndex + 1, done);
- } else {
- done();
- // not sure why this if/else block is necessary, but otherwise it infinite loops when a file couldn't be loaded.
- // somehow the catch block doesn't seem to get executed.
- }
- });
- } catch (err) {
- console.log("error: " + err);
- loadNextFile(fileIndex + 1, done);
- // we need to catch the error and call the next file,
- // otherwise done() never gets called and the test hangs
- }
- }
- // this variation of doing the test is similar to the loop in Xml_Test.ts,
- // but seems to crash the browser because the for loop calls too many tests at once that are too demanding.
- // (Xml_Test does the same, but it looks like the test is simple enough to not overload the browser)
- // function testFile(scoreName: string): void {
- // it("getSheetDuration: " + scoreName, (done: Mocha.Done) => {
- // //let timingSource: LinearTimingSource; // somehow this will be undefined in load().then()
- // //let playbackManager: PlaybackManager;
- // if (false) {
- // initialize(osmd, undefined, undefined);
- // }
- // const score: Document = TestUtils.getScore(scoreName);
- // osmd.load(score).then(() => {
- // const timingSource: LinearTimingSource = new LinearTimingSource();
- // timingSource.Settings = osmd.Sheet.SheetPlaybackSetting;
- // timingSource.logEnabled = false;
- // const playbackManager = new PlaybackManager(timingSource, undefined, new BasicAudioPlayer(), undefined);
- // osmd.PlaybackManager = playbackManager;
- // playbackManager.initialize(osmd.Sheet.MusicPartManager);
- // const timeWithoutRepeats: number = playbackManager.getSheetDurationInMs(false);
- // const timeWithRepeats: number = playbackManager.getSheetDurationInMsWithRepeats();
- // console.log("time with repeats: " + timeWithRepeats + " for " + osmd.Sheet.Title.text);
- // console.log("time without repeats: " + timeWithoutRepeats);
- // chai.expect(timeWithRepeats >= timeWithoutRepeats).to.equal(true);
- // done();
- // });
- // }).timeout(10000);
- // }
- // function initialize(osmd, timingSource, playbackManager) {
- // timingSource = new LinearTimingSource();
- // playbackManager = new PlaybackManager(timingSource, undefined, new BasicAudioPlayer(), undefined);
- // // timingSource.reset();
- // // timingSource.pause();
- // //playbackManager.removeListener(osmd.cursor); // only necessary if no duplicate checks in addListener
- // // playbackManager.addListener(osmd.cursor);
- // playbackManager.reset();
- // osmd.PlaybackManager = playbackManager;
- // }
- });
|