VexFlowMeasure_Test.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /* eslint-disable @typescript-eslint/no-unused-expressions */
  2. import {GraphicalMusicSheet} from "../../../../src/MusicalScore/Graphical/GraphicalMusicSheet";
  3. import {IXmlElement} from "../../../../src/Common/FileIO/Xml";
  4. import {MusicSheet} from "../../../../src/MusicalScore/MusicSheet";
  5. import {MusicSheetReader} from "../../../../src/MusicalScore/ScoreIO/MusicSheetReader";
  6. import {VexFlowMusicSheetCalculator} from "../../../../src/MusicalScore/Graphical/VexFlow/VexFlowMusicSheetCalculator";
  7. import {TestUtils} from "../../../Util/TestUtils";
  8. import {SourceMeasure} from "../../../../src/MusicalScore/VoiceData/SourceMeasure";
  9. import {SourceStaffEntry} from "../../../../src/MusicalScore/VoiceData/SourceStaffEntry";
  10. import {GraphicalMeasure} from "../../../../src/MusicalScore/Graphical/GraphicalMeasure";
  11. import {MusicSheetCalculator} from "../../../../src/MusicalScore/Graphical/MusicSheetCalculator";
  12. import {EngravingRules} from "../../../../src/MusicalScore/Graphical/EngravingRules";
  13. describe("VexFlow Measure", () => {
  14. it("GraphicalMusicSheet", (done: Mocha.Done) => {
  15. const path: string = "MuzioClementi_SonatinaOpus36No1_Part1.xml";
  16. const score: Document = TestUtils.getScore(path);
  17. chai.expect(score).to.not.be.undefined;
  18. const partwise: Element = TestUtils.getPartWiseElement(score);
  19. chai.expect(partwise).to.not.be.undefined;
  20. const reader: MusicSheetReader = new MusicSheetReader();
  21. const calc: VexFlowMusicSheetCalculator = new VexFlowMusicSheetCalculator(reader.rules);
  22. const sheet: MusicSheet = reader.createMusicSheet(new IXmlElement(partwise), path);
  23. const gms: GraphicalMusicSheet = new GraphicalMusicSheet(sheet, calc);
  24. // console.log(gms);
  25. chai.expect(gms).to.not.be.undefined; // at least necessary for linter so that variable is not unused
  26. done();
  27. });
  28. it("Simple Measure", (done: Mocha.Done) => {
  29. const sheet: MusicSheet = new MusicSheet();
  30. sheet.Rules = new EngravingRules();
  31. const measure: SourceMeasure = new SourceMeasure(1, sheet.Rules);
  32. sheet.addMeasure(measure);
  33. const calc: MusicSheetCalculator = new VexFlowMusicSheetCalculator(sheet.Rules);
  34. const gms: GraphicalMusicSheet = new GraphicalMusicSheet(sheet, calc);
  35. chai.expect(gms.MeasureList.length).to.equal(1);
  36. chai.expect(gms.MeasureList[0].length).to.equal(1);
  37. const gm: GraphicalMeasure = gms.MeasureList[0][0];
  38. // console.log(gm);
  39. chai.expect(gm).to.not.be.undefined; // at least necessary for linter so that variable is not unused
  40. done();
  41. });
  42. it("Empty Measure", (done: Mocha.Done) => {
  43. const sheet: MusicSheet = new MusicSheet();
  44. sheet.Rules = new EngravingRules();
  45. const measure: SourceMeasure = new SourceMeasure(1, sheet.Rules);
  46. measure.FirstInstructionsStaffEntries[0] = new SourceStaffEntry(undefined, undefined);
  47. sheet.addMeasure(measure);
  48. const calc: MusicSheetCalculator = new VexFlowMusicSheetCalculator(sheet.Rules);
  49. const gms: GraphicalMusicSheet = new GraphicalMusicSheet(sheet, calc);
  50. chai.expect(gms.MeasureList.length).to.equal(1);
  51. chai.expect(gms.MeasureList[0].length).to.equal(1);
  52. chai.expect(gms.MeasureList[0][0].staffEntries.length).to.equal(0);
  53. done();
  54. });
  55. });