OSMD.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import chai = require("chai");
  2. import {OSMD} from "../../../src/OSMD/OSMD";
  3. import {TestUtils} from "../../Util/TestUtils";
  4. describe("OSMD Main Export", () => {
  5. it("no container", (done: MochaDone) => {
  6. chai.expect(() => {
  7. return new OSMD(undefined);
  8. }).to.throw(/container/);
  9. done();
  10. });
  11. it("container", (done: MochaDone) => {
  12. let div: HTMLElement = document.createElement("div");
  13. chai.expect(() => {
  14. return new OSMD(div);
  15. }).to.not.throw(Error);
  16. done();
  17. });
  18. it("load MXL from string", (done: MochaDone) => {
  19. let mxl: string = TestUtils.getMXL("MozartTrio");
  20. let div: HTMLElement = document.createElement("div");
  21. let osmd: OSMD = new OSMD(div);
  22. osmd.load(mxl).then(
  23. (_: {}) => {
  24. osmd.render();
  25. done();
  26. },
  27. done
  28. );
  29. });
  30. it("load invalid MXL from string", (done: MochaDone) => {
  31. let mxl: string = "\x50\x4b\x03\x04";
  32. let div: HTMLElement = document.createElement("div");
  33. let osmd: OSMD = new OSMD(div);
  34. osmd.load(mxl).then(
  35. (_: {}) => {
  36. done(new Error("Corrupted MXL appears to be loaded correctly"));
  37. },
  38. (exc: Error) => {
  39. if (exc.message.toLowerCase().match(/invalid/)) {
  40. done();
  41. } else {
  42. done(new Error("Unexpected error: " + exc.message));
  43. }
  44. }
  45. );
  46. });
  47. it("load XML string", (done: MochaDone) => {
  48. let score: Document = TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1");
  49. let xml: string = new XMLSerializer().serializeToString(score);
  50. let div: HTMLElement = document.createElement("div");
  51. let osmd: OSMD = new OSMD(div);
  52. osmd.load(xml).then(
  53. (_: {}) => {
  54. osmd.render();
  55. done();
  56. },
  57. done
  58. );
  59. });
  60. it("load XML Document", (done: MochaDone) => {
  61. let score: Document = TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1");
  62. let div: HTMLElement = document.createElement("div");
  63. let osmd: OSMD = new OSMD(div);
  64. osmd.load(score).then(
  65. (_: {}) => {
  66. osmd.render();
  67. done();
  68. },
  69. done
  70. );
  71. });
  72. it("load invalid XML string", (done: MochaDone) => {
  73. let xml: string = "<?xml";
  74. let div: HTMLElement = document.createElement("div");
  75. let osmd: OSMD = new OSMD(div);
  76. osmd.load(xml).then(
  77. (_: {}) => {
  78. done(new Error("Corrupted XML appears to be loaded correctly"));
  79. },
  80. (exc: Error) => {
  81. if (exc.message.toLowerCase().match(/partwise/)) {
  82. done();
  83. } else {
  84. done(new Error("Unexpected error: " + exc.message));
  85. }
  86. }
  87. );
  88. });
  89. it("render without loading", (done: MochaDone) => {
  90. let div: HTMLElement = document.createElement("div");
  91. let osmd: OSMD = new OSMD(div);
  92. chai.expect(() => {
  93. return osmd.render();
  94. }).to.throw(/load/);
  95. done();
  96. });
  97. });