Math.sign.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. function isPositiveZero(value) {
  2. return value === 0 && 1 / value === Infinity;
  3. }
  4. function isNegativeZero(value) {
  5. return value === 0 && 1 / value === -Infinity;
  6. }
  7. test("basic functionality", () => {
  8. expect(Math.sign).toHaveLength(1);
  9. expect(Math.sign(0.0001)).toBe(1);
  10. expect(Math.sign(1)).toBe(1);
  11. expect(Math.sign(42)).toBe(1);
  12. expect(Math.sign(Infinity)).toBe(1);
  13. expect(isPositiveZero(Math.sign(0))).toBeTrue();
  14. expect(isPositiveZero(Math.sign(null))).toBeTrue();
  15. expect(isPositiveZero(Math.sign(""))).toBeTrue();
  16. expect(isPositiveZero(Math.sign([]))).toBeTrue();
  17. expect(Math.sign(-0.0001)).toBe(-1);
  18. expect(Math.sign(-1)).toBe(-1);
  19. expect(Math.sign(-42)).toBe(-1);
  20. expect(Math.sign(-Infinity)).toBe(-1);
  21. expect(isNegativeZero(Math.sign(-0))).toBeTrue();
  22. expect(isNegativeZero(Math.sign(-null))).toBeTrue();
  23. expect(isNegativeZero(Math.sign(-""))).toBeTrue();
  24. expect(isNegativeZero(Math.sign(-[]))).toBeTrue();
  25. expect(Math.sign()).toBeNaN();
  26. expect(Math.sign(undefined)).toBeNaN();
  27. expect(Math.sign([1, 2, 3])).toBeNaN();
  28. expect(Math.sign({})).toBeNaN();
  29. expect(Math.sign(NaN)).toBeNaN();
  30. expect(Math.sign("foo")).toBeNaN();
  31. });