state.html 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <html>
  2. <head>
  3. <link rel="stylesheet" href="lib/qunit.css">
  4. </head>
  5. <body>
  6. <div id="qunit"></div>
  7. <div id="qunit-fixture"></div>
  8. <script src="../seedrandom.min.js"></script>
  9. <script src="lib/qunit.js"></script>
  10. <script>
  11. QUnit.module("Options API Test");
  12. QUnit.test("Verify that state method is not normally present",
  13. function(assert) {
  14. var seedrandom = Math.seedrandom;
  15. var dummy = seedrandom('hello');
  16. var unexpected = -1;
  17. var expected = -1;
  18. try {
  19. unexpected = dummy.state();
  20. } catch(e) {
  21. expected = 1;
  22. }
  23. assert.equal(unexpected, -1);
  24. assert.equal(expected, 1);
  25. var count = 0;
  26. for (var x in dummy) {
  27. if (x == 'state') count += 1;
  28. }
  29. assert.equal(count, 0);
  30. });
  31. QUnit.test("Verify that state option works as advertised", function(assert) {
  32. var seedrandom = Math.seedrandom;
  33. var saveable = seedrandom("secret-seed", {state: true});
  34. var ordinary = seedrandom("secret-seed");
  35. for (var j = 0; j < 1e3; ++j) {
  36. assert.equal(ordinary(), saveable());
  37. }
  38. var virgin = seedrandom("secret-seed");
  39. var saved = saveable.state();
  40. var replica = seedrandom("", {state: saved});
  41. for (var j = 0; j < 1e2; ++j) {
  42. var r = replica();
  43. assert.equal(r, saveable());
  44. assert.equal(r, ordinary());
  45. assert.ok(r != virgin());
  46. }
  47. });
  48. </script>
  49. </body>
  50. </html>