MusicSheetReader_Test.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /* eslint-disable @typescript-eslint/no-unused-expressions */
  2. import {MusicSheetReader} from "../../../src/MusicalScore/ScoreIO/MusicSheetReader";
  3. import {MusicSheet} from "../../../src/MusicalScore/MusicSheet";
  4. import {IXmlElement} from "../../../src/Common/FileIO/Xml";
  5. describe("Music Sheet Reader", () => {
  6. const path: string = "test/data/MuzioClementi_SonatinaOpus36No1_Part1.xml";
  7. const reader: MusicSheetReader = new MusicSheetReader();
  8. let score: IXmlElement;
  9. let sheet: MusicSheet;
  10. function getSheet(filename: string): Document {
  11. return ((window as any).__xml__)[filename];
  12. }
  13. before((): void => {
  14. // Load the xml file
  15. const doc: Document = getSheet(path);
  16. chai.expect(doc).to.not.be.undefined;
  17. score = new IXmlElement(doc.getElementsByTagName("score-partwise")[0]);
  18. // chai.expect(score).to.not.be.undefined;
  19. sheet = reader.createMusicSheet(score, path);
  20. });
  21. it("checks XML", (done: Mocha.Done) => {
  22. done(); // TODO implement test
  23. });
  24. it("reads title and composer", (done: Mocha.Done) => {
  25. chai.expect(sheet.TitleString).to.equal("Sonatina Op.36 No 1 Teil 1 Allegro");
  26. chai.expect(sheet.ComposerString).to.equal("Muzio Clementi");
  27. done();
  28. });
  29. it("reads measures", (done: Mocha.Done) => {
  30. chai.expect(sheet.SourceMeasures.length).to.equal(38);
  31. done();
  32. });
  33. it("reads instruments", (done: Mocha.Done) => {
  34. chai.expect(reader.CompleteNumberOfStaves).to.equal(2);
  35. chai.expect(sheet.Instruments.length).to.equal(2);
  36. chai.expect(sheet.InstrumentalGroups.length).to.equal(2);
  37. chai.expect(sheet.Instruments[0].Name).to.equal("Piano (right)");
  38. chai.expect(sheet.Instruments[1].Name).to.equal("Piano (left)");
  39. done();
  40. });
  41. it("reads notes", (done: Mocha.Done) => {
  42. // TODO implement test
  43. // Staff Entries on first measure
  44. // chai.expect(sheet.SourceMeasures[0].VerticalSourceStaffEntryContainers[0].StaffEntries.length).to.equal(4);
  45. done();
  46. });
  47. });