/test/selfchecks.js

https://bitbucket.org/darrint/qc.js/ · JavaScript · 110 lines · 89 code · 16 blank · 5 comment · 7 complexity · 7dc3c5f34b8998852bd87c56e31d6192 MD5 · raw file

  1. // Copyright (c) 2009, Darrin Thompson
  2. // Some self checks for our generators.
  3. declare("randWhole", [justSize],
  4. function(c, a) {
  5. var result = randWhole(a);
  6. c.noteArg(result);
  7. c.assert(result < a || result == 0);
  8. });
  9. declare("randWhole nonzero", [justSize],
  10. function(c, a) {
  11. c.guard(a > 10);
  12. var result = randWhole(a);
  13. c.noteArg(result);
  14. c.guard(result > 0);
  15. });
  16. declare("randWhole zero result", [justSize],
  17. function(c, a) {
  18. var result = randWhole(a);
  19. c.noteArg(result);
  20. c.guard(result == 0);
  21. });
  22. declare("randInt show positive", [arbWholeNum],
  23. function(c, a) {
  24. //console.log('input: ' + a);
  25. var result = randInt(a);
  26. c.noteArg(result);
  27. c.guard(result > 0);
  28. });
  29. declare("randInt show negative", [arbWholeNum],
  30. function(c, a) {
  31. var result = randInt(a);
  32. c.noteArg(result);
  33. c.guard(result < 0);
  34. });
  35. declare("randInt zero result", [arbWholeNum],
  36. function(c, a) {
  37. c.guard(a > 0);
  38. var result = randInt(a);
  39. c.noteArg(result);
  40. c.guard(result == 0);
  41. });
  42. declare("randRange between", [arbInt, arbInt],
  43. function(c, a, b) {
  44. c.guard(a < b);
  45. var result = randRange(a, b);
  46. c.noteArg(result);
  47. c.assert(a <= result);
  48. c.assert(b > result);
  49. });
  50. declare("randRange between backwards", [arbInt, arbInt],
  51. function(c, a, b) {
  52. c.guard(b < a);
  53. var result = randRange(a, b);
  54. c.noteArg(result);
  55. c.assert(b <= result);
  56. c.assert(a > result);
  57. });
  58. declare("randRange equal", [arbInt],
  59. function(c, a, b) {
  60. var result = randRange(a, a);
  61. c.assert(a == result);
  62. });
  63. declare("randFloatUnit", [],
  64. function(c) {
  65. var result = randFloatUnit();
  66. c.noteArg(result);
  67. c.assert(result >= 0);
  68. c.assert(result < 1);
  69. });
  70. declare("collectTest", [arbArray(arbInt)],
  71. function(c,a) {
  72. c.classify(a.length == 0, "empty array");
  73. c.collect(a.length);
  74. });
  75. var testArr = [1,2,0,1,0];
  76. var testArb = {
  77. arb: function(){
  78. return testArr;
  79. },
  80. shrink: function(s,a) {
  81. //print('input: ' + a);
  82. var r = a.slice(1);
  83. //print('ret: ' + r);
  84. return r.length == 0 ? [] : [r];
  85. }
  86. }
  87. declare("shrinkTest... must FAIL", [testArb],
  88. function(c){
  89. c.assert(false);
  90. });
  91. declare("expect Exception", [arbInt],
  92. expectException(function(c,i) {
  93. throw("test");
  94. }));