MusicSheetReader.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import {MusicSheetReader} from "../../../src/MusicalScore/ScoreIO/MusicSheetReader";
  2. import {MusicSheet} from "../../../src/MusicalScore/MusicSheet";
  3. import {IXmlElement} from "../../../src/Common/FileIO/Xml";
  4. describe("Music Sheet Reader Tests", () => {
  5. // Initialize variables
  6. let path: string = "test/data/MuzioClementi_SonatinaOpus36No1_Part1.xml";
  7. let 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. let 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. beforeEach((): void => {
  22. // ???
  23. });
  24. afterEach((): void => {
  25. // cleanup?
  26. });
  27. it("Check XML", (done: MochaDone) => {
  28. done();
  29. });
  30. it("Read title and composer", (done: MochaDone) => {
  31. chai.expect(sheet.TitleString).to.equal("Sonatina Op.36 No 1 Teil 1 Allegro");
  32. chai.expect(sheet.ComposerString).to.equal("Muzio Clementi");
  33. done();
  34. });
  35. it("Measures", (done: MochaDone) => {
  36. chai.expect(sheet.SourceMeasures.length).to.equal(38);
  37. console.log("First Measure: ", sheet.SourceMeasures[0]);
  38. done();
  39. });
  40. it("Instruments", (done: MochaDone) => {
  41. chai.expect(reader.CompleteNumberOfStaves).to.equal(2);
  42. chai.expect(sheet.Instruments.length).to.equal(2);
  43. chai.expect(sheet.InstrumentalGroups.length).to.equal(2);
  44. chai.expect(sheet.Instruments[0].Name).to.equal("Piano (right)");
  45. chai.expect(sheet.Instruments[1].Name).to.equal("Piano (left)");
  46. done();
  47. });
  48. it("Notes", (done: MochaDone) => {
  49. // Staff Entries on first measure
  50. // chai.expect(sheet.SourceMeasures[0].VerticalSourceStaffEntryContainers[0].StaffEntries.length).to.equal(4);
  51. done();
  52. });
  53. });