OSMD.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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 MXL Document by URL", (done: MochaDone) => {
  73. let url: string = "base/test/data/MozartTrio.mxl";
  74. let div: HTMLElement = document.createElement("div");
  75. let osmd: OSMD = new OSMD(div);
  76. osmd.load(url).then(
  77. (_: {}) => {
  78. osmd.render();
  79. done();
  80. },
  81. done
  82. );
  83. });
  84. it("load MXL Document by invalid URL", (done: MochaDone) => {
  85. let url: string = "http://www.google.com";
  86. let div: HTMLElement = document.createElement("div");
  87. let osmd: OSMD = new OSMD(div);
  88. osmd.load(url).then(
  89. (_: {}) => {
  90. done(new Error("Invalid URL appears to be loaded correctly"));
  91. },
  92. (exc: Error) => {
  93. if (exc.message.toLowerCase().match(/url/)) {
  94. done();
  95. } else {
  96. done(new Error("Unexpected error: " + exc.message));
  97. }
  98. }
  99. );
  100. });
  101. it("load invalid XML string", (done: MochaDone) => {
  102. let xml: string = "<?xml";
  103. let div: HTMLElement = document.createElement("div");
  104. let osmd: OSMD = new OSMD(div);
  105. osmd.load(xml).then(
  106. (_: {}) => {
  107. done(new Error("Corrupted XML appears to be loaded correctly"));
  108. },
  109. (exc: Error) => {
  110. if (exc.message.toLowerCase().match(/partwise/)) {
  111. done();
  112. } else {
  113. done(new Error("Unexpected error: " + exc.message));
  114. }
  115. }
  116. );
  117. });
  118. it("render without loading", (done: MochaDone) => {
  119. let div: HTMLElement = document.createElement("div");
  120. let osmd: OSMD = new OSMD(div);
  121. chai.expect(() => {
  122. return osmd.render();
  123. }).to.throw(/load/);
  124. done();
  125. });
  126. });