OSMD.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. "use strict";
  2. var chai = require("chai");
  3. var OSMD_1 = require("../../../src/OSMD/OSMD");
  4. var TestUtils_1 = require("../../Util/TestUtils");
  5. describe("OSMD Main Export", function () {
  6. var container1;
  7. it("no container", function (done) {
  8. chai.expect(function () {
  9. return new OSMD_1.OSMD(undefined);
  10. }).to.throw(/container/);
  11. done();
  12. });
  13. it("container", function (done) {
  14. var div = document.createElement("div");
  15. chai.expect(function () {
  16. return new OSMD_1.OSMD(div);
  17. }).to.not.throw(Error);
  18. done();
  19. });
  20. it("load MXL from string", function (done) {
  21. var mxl = TestUtils_1.TestUtils.getMXL("MozartTrio");
  22. var div = document.createElement("div");
  23. var osmd = new OSMD_1.OSMD(div);
  24. osmd.load(mxl).then(function (_) {
  25. osmd.render();
  26. done();
  27. }, done);
  28. });
  29. it("load invalid MXL from string", function (done) {
  30. var mxl = "\x50\x4b\x03\x04";
  31. var div = document.createElement("div");
  32. var osmd = new OSMD_1.OSMD(div);
  33. osmd.load(mxl).then(function (_) {
  34. done(new Error("Corrupted MXL appears to be loaded correctly"));
  35. }, function (exc) {
  36. if (exc.message.toLowerCase().match(/invalid/)) {
  37. done();
  38. }
  39. else {
  40. done(new Error("Unexpected error: " + exc.message));
  41. }
  42. });
  43. });
  44. it("load XML string", function (done) {
  45. var score = TestUtils_1.TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1");
  46. var xml = new XMLSerializer().serializeToString(score);
  47. var div = document.createElement("div");
  48. var osmd = new OSMD_1.OSMD(div);
  49. osmd.load(xml).then(function (_) {
  50. osmd.render();
  51. done();
  52. }, done);
  53. });
  54. it("load XML Document", function (done) {
  55. var score = TestUtils_1.TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1");
  56. var div = document.createElement("div");
  57. var osmd = new OSMD_1.OSMD(div);
  58. osmd.load(score).then(function (_) {
  59. osmd.render();
  60. done();
  61. }, done);
  62. });
  63. it("load MXL Document by URL", function (done) {
  64. var url = "base/test/data/MozartTrio.mxl";
  65. var div = document.createElement("div");
  66. var osmd = new OSMD_1.OSMD(div);
  67. osmd.load(url).then(function (_) {
  68. osmd.render();
  69. done();
  70. }, done);
  71. });
  72. it("load MXL Document by invalid URL", function (done) {
  73. var url = "http://www.google.com";
  74. var div = document.createElement("div");
  75. var osmd = new OSMD_1.OSMD(div);
  76. osmd.load(url).then(function (_) {
  77. done(new Error("Invalid URL appears to be loaded correctly"));
  78. }, function (exc) {
  79. if (exc.message.toLowerCase().match(/url/)) {
  80. done();
  81. }
  82. else {
  83. done(new Error("Unexpected error: " + exc.message));
  84. }
  85. });
  86. });
  87. it("load invalid XML string", function (done) {
  88. var xml = "<?xml";
  89. var div = document.createElement("div");
  90. var osmd = new OSMD_1.OSMD(div);
  91. osmd.load(xml).then(function (_) {
  92. done(new Error("Corrupted XML appears to be loaded correctly"));
  93. }, function (exc) {
  94. if (exc.message.toLowerCase().match(/partwise/)) {
  95. done();
  96. }
  97. else {
  98. done(new Error("Unexpected error: " + exc.message));
  99. }
  100. });
  101. });
  102. it("render without loading", function (done) {
  103. var div = document.createElement("div");
  104. var osmd = new OSMD_1.OSMD(div);
  105. chai.expect(function () {
  106. return osmd.render();
  107. }).to.throw(/load/);
  108. done();
  109. });
  110. before(function () {
  111. container1 = document.createElement("div");
  112. document.body.appendChild(container1);
  113. });
  114. after(function () {
  115. document.body.removeChild(container1);
  116. });
  117. it("test width 500", function (done) {
  118. var div = container1;
  119. div.style.width = "500px";
  120. var osmd = new OSMD_1.OSMD(div);
  121. var score = TestUtils_1.TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1");
  122. osmd.load(score).then(function (_) {
  123. osmd.render();
  124. chai.expect(div.offsetWidth).to.equal(500);
  125. done();
  126. }, done).catch(done);
  127. });
  128. it("test width 200", function (done) {
  129. var div = container1;
  130. div.style.width = "200px";
  131. var osmd = new OSMD_1.OSMD(div);
  132. var score = TestUtils_1.TestUtils.getScore("MuzioClementi_SonatinaOpus36No1_Part1");
  133. osmd.load(score).then(function (_) {
  134. osmd.render();
  135. chai.expect(div.offsetWidth).to.equal(200);
  136. done();
  137. }, done).catch(done);
  138. });
  139. });