summaryrefslogtreecommitdiff
path: root/Libraries/LibJS/Tests/builtins/Math/Math.sign.js
blob: a1e8a6eb72977d2837a18958f08cc89fe6107be3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function isPositiveZero(value) {
    return value === 0 && 1 / value === Infinity;
}

function isNegativeZero(value) {
    return value === 0 && 1 / value === -Infinity;
}

test("basic functionality", () => {
    expect(Math.sign).toHaveLength(1);

    expect(Math.sign(0.0001)).toBe(1);
    expect(Math.sign(1)).toBe(1);
    expect(Math.sign(42)).toBe(1);
    expect(Math.sign(Infinity)).toBe(1);
    expect(isPositiveZero(Math.sign(0))).toBeTrue();
    expect(isPositiveZero(Math.sign(null))).toBeTrue();
    expect(isPositiveZero(Math.sign(""))).toBeTrue();
    expect(isPositiveZero(Math.sign([]))).toBeTrue();

    expect(Math.sign(-0.0001)).toBe(-1);
    expect(Math.sign(-1)).toBe(-1);
    expect(Math.sign(-42)).toBe(-1);
    expect(Math.sign(-Infinity)).toBe(-1);
    expect(isNegativeZero(Math.sign(-0))).toBeTrue();
    expect(isNegativeZero(Math.sign(-null))).toBeTrue();
    expect(isNegativeZero(Math.sign(-""))).toBeTrue();
    expect(isNegativeZero(Math.sign(-[]))).toBeTrue();

    expect(Math.sign()).toBeNaN();
    expect(Math.sign(undefined)).toBeNaN();
    expect(Math.sign([1, 2, 3])).toBeNaN();
    expect(Math.sign({})).toBeNaN();
    expect(Math.sign(NaN)).toBeNaN();
    expect(Math.sign("foo")).toBeNaN();
});