index.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. 'use strict';
  2. var test = require('tape');
  3. var v = require('es-value-fixtures');
  4. var forEach = require('for-each');
  5. var inspect = require('object-inspect');
  6. var abs = require('../abs');
  7. var floor = require('../floor');
  8. var isFinite = require('../isFinite');
  9. var isInteger = require('../isInteger');
  10. var isNaN = require('../isNaN');
  11. var isNegativeZero = require('../isNegativeZero');
  12. var max = require('../max');
  13. var min = require('../min');
  14. var mod = require('../mod');
  15. var pow = require('../pow');
  16. var sign = require('../sign');
  17. var maxArrayLength = require('../constants/maxArrayLength');
  18. var maxSafeInteger = require('../constants/maxSafeInteger');
  19. var maxValue = require('../constants/maxValue');
  20. test('abs', function (t) {
  21. t.equal(abs(-1), 1, 'abs(-1) === 1');
  22. t.equal(abs(+1), 1, 'abs(+1) === 1');
  23. t.equal(abs(+0), +0, 'abs(+0) === +0');
  24. t.equal(abs(-0), +0, 'abs(-0) === +0');
  25. t.end();
  26. });
  27. test('floor', function (t) {
  28. t.equal(floor(-1.1), -2, 'floor(-1.1) === -2');
  29. t.equal(floor(+1.1), 1, 'floor(+1.1) === 1');
  30. t.equal(floor(+0), +0, 'floor(+0) === +0');
  31. t.equal(floor(-0), -0, 'floor(-0) === -0');
  32. t.equal(floor(-Infinity), -Infinity, 'floor(-Infinity) === -Infinity');
  33. t.equal(floor(Number(Infinity)), Number(Infinity), 'floor(+Infinity) === +Infinity');
  34. t.equal(floor(NaN), NaN, 'floor(NaN) === NaN');
  35. t.equal(floor(0), +0, 'floor(0) === +0');
  36. t.equal(floor(-0), -0, 'floor(-0) === -0');
  37. t.equal(floor(1), 1, 'floor(1) === 1');
  38. t.equal(floor(-1), -1, 'floor(-1) === -1');
  39. t.equal(floor(1.1), 1, 'floor(1.1) === 1');
  40. t.equal(floor(-1.1), -2, 'floor(-1.1) === -2');
  41. t.equal(floor(maxValue), maxValue, 'floor(maxValue) === maxValue');
  42. t.equal(floor(maxSafeInteger), maxSafeInteger, 'floor(maxSafeInteger) === maxSafeInteger');
  43. t.end();
  44. });
  45. test('isFinite', function (t) {
  46. t.equal(isFinite(0), true, 'isFinite(+0) === true');
  47. t.equal(isFinite(-0), true, 'isFinite(-0) === true');
  48. t.equal(isFinite(1), true, 'isFinite(1) === true');
  49. t.equal(isFinite(Infinity), false, 'isFinite(Infinity) === false');
  50. t.equal(isFinite(-Infinity), false, 'isFinite(-Infinity) === false');
  51. t.equal(isFinite(NaN), false, 'isFinite(NaN) === false');
  52. forEach(v.nonNumbers, function (nonNumber) {
  53. t.equal(isFinite(nonNumber), false, 'isFinite(' + inspect(nonNumber) + ') === false');
  54. });
  55. t.end();
  56. });
  57. test('isInteger', function (t) {
  58. forEach([].concat(
  59. // @ts-expect-error TS sucks with concat
  60. v.nonNumbers,
  61. v.nonIntegerNumbers
  62. ), function (nonInteger) {
  63. t.equal(isInteger(nonInteger), false, 'isInteger(' + inspect(nonInteger) + ') === false');
  64. });
  65. t.end();
  66. });
  67. test('isNaN', function (t) {
  68. forEach([].concat(
  69. // @ts-expect-error TS sucks with concat
  70. v.nonNumbers,
  71. v.infinities,
  72. v.zeroes,
  73. v.integerNumbers
  74. ), function (nonNaN) {
  75. t.equal(isNaN(nonNaN), false, 'isNaN(' + inspect(nonNaN) + ') === false');
  76. });
  77. t.equal(isNaN(NaN), true, 'isNaN(NaN) === true');
  78. t.end();
  79. });
  80. test('isNegativeZero', function (t) {
  81. t.equal(isNegativeZero(-0), true, 'isNegativeZero(-0) === true');
  82. t.equal(isNegativeZero(+0), false, 'isNegativeZero(+0) === false');
  83. t.equal(isNegativeZero(1), false, 'isNegativeZero(1) === false');
  84. t.equal(isNegativeZero(-1), false, 'isNegativeZero(-1) === false');
  85. t.equal(isNegativeZero(NaN), false, 'isNegativeZero(NaN) === false');
  86. t.equal(isNegativeZero(Infinity), false, 'isNegativeZero(Infinity) === false');
  87. t.equal(isNegativeZero(-Infinity), false, 'isNegativeZero(-Infinity) === false');
  88. forEach(v.nonNumbers, function (nonNumber) {
  89. t.equal(isNegativeZero(nonNumber), false, 'isNegativeZero(' + inspect(nonNumber) + ') === false');
  90. });
  91. t.end();
  92. });
  93. test('max', function (t) {
  94. t.equal(max(1, 2), 2, 'max(1, 2) === 2');
  95. t.equal(max(1, 2, 3), 3, 'max(1, 2, 3) === 3');
  96. t.equal(max(1, 2, 3, 4), 4, 'max(1, 2, 3, 4) === 4');
  97. t.equal(max(1, 2, 3, 4, 5), 5, 'max(1, 2, 3, 4, 5) === 5');
  98. t.equal(max(1, 2, 3, 4, 5, 6), 6, 'max(1, 2, 3, 4, 5, 6) === 6');
  99. t.equal(max(1, 2, 3, 4, 5, 6, 7), 7, 'max(1, 2, 3, 4, 5, 6, 7) === 7');
  100. t.end();
  101. });
  102. test('min', function (t) {
  103. t.equal(min(1, 2), 1, 'min(1, 2) === 1');
  104. t.equal(min(1, 2, 3), 1, 'min(1, 2, 3) === 1');
  105. t.equal(min(1, 2, 3, 4), 1, 'min(1, 2, 3, 4) === 1');
  106. t.equal(min(1, 2, 3, 4, 5), 1, 'min(1, 2, 3, 4, 5) === 1');
  107. t.equal(min(1, 2, 3, 4, 5, 6), 1, 'min(1, 2, 3, 4, 5, 6) === 1');
  108. t.end();
  109. });
  110. test('mod', function (t) {
  111. t.equal(mod(1, 2), 1, 'mod(1, 2) === 1');
  112. t.equal(mod(2, 2), 0, 'mod(2, 2) === 0');
  113. t.equal(mod(3, 2), 1, 'mod(3, 2) === 1');
  114. t.equal(mod(4, 2), 0, 'mod(4, 2) === 0');
  115. t.equal(mod(5, 2), 1, 'mod(5, 2) === 1');
  116. t.equal(mod(6, 2), 0, 'mod(6, 2) === 0');
  117. t.equal(mod(7, 2), 1, 'mod(7, 2) === 1');
  118. t.equal(mod(8, 2), 0, 'mod(8, 2) === 0');
  119. t.equal(mod(9, 2), 1, 'mod(9, 2) === 1');
  120. t.equal(mod(10, 2), 0, 'mod(10, 2) === 0');
  121. t.equal(mod(11, 2), 1, 'mod(11, 2) === 1');
  122. t.end();
  123. });
  124. test('pow', function (t) {
  125. t.equal(pow(2, 2), 4, 'pow(2, 2) === 4');
  126. t.equal(pow(2, 3), 8, 'pow(2, 3) === 8');
  127. t.equal(pow(2, 4), 16, 'pow(2, 4) === 16');
  128. t.equal(pow(2, 5), 32, 'pow(2, 5) === 32');
  129. t.equal(pow(2, 6), 64, 'pow(2, 6) === 64');
  130. t.equal(pow(2, 7), 128, 'pow(2, 7) === 128');
  131. t.equal(pow(2, 8), 256, 'pow(2, 8) === 256');
  132. t.equal(pow(2, 9), 512, 'pow(2, 9) === 512');
  133. t.equal(pow(2, 10), 1024, 'pow(2, 10) === 1024');
  134. t.end();
  135. });
  136. test('sign', function (t) {
  137. t.equal(sign(-1), -1, 'sign(-1) === -1');
  138. t.equal(sign(+1), +1, 'sign(+1) === +1');
  139. t.equal(sign(+0), +0, 'sign(+0) === +0');
  140. t.equal(sign(-0), -0, 'sign(-0) === -0');
  141. t.equal(sign(NaN), NaN, 'sign(NaN) === NaN');
  142. t.equal(sign(Infinity), +1, 'sign(Infinity) === +1');
  143. t.equal(sign(-Infinity), -1, 'sign(-Infinity) === -1');
  144. t.equal(sign(maxValue), +1, 'sign(maxValue) === +1');
  145. t.equal(sign(maxSafeInteger), +1, 'sign(maxSafeInteger) === +1');
  146. t.end();
  147. });
  148. test('constants', function (t) {
  149. t.equal(typeof maxArrayLength, 'number', 'typeof maxArrayLength === "number"');
  150. t.equal(typeof maxSafeInteger, 'number', 'typeof maxSafeInteger === "number"');
  151. t.equal(typeof maxValue, 'number', 'typeof maxValue === "number"');
  152. t.end();
  153. });