summaryrefslogtreecommitdiff
path: root/js/test/Ice/number/Client.js
blob: cceec3e377450ff7277154407648a98cad7f1bdf (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// **********************************************************************
//
// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************

(function(module, require, exports)
{
    var Ice = require("ice").Ice;
    var Promise = Ice.Promise;

    var test = function(b)
    {
        if(!b)
        {
            throw new Error("test failed");
        }
    };

    var run = function(out)
    {
        return Promise.try(() =>
            {
                out.write("Testing Ice.Long... ");
                //
                // Test positive numbers
                //
                test(new Ice.Long(0x00000000, 0x00000000).toNumber() === 0);                        // 0
                test(new Ice.Long(0x00000000, 0x00000001).toNumber() === 1);                        // 1
                test(new Ice.Long(0x00000000, 0x00000400).toNumber() === 1024);                     // 1024
                test(new Ice.Long(0x00000000, 0xFFFFFFFF).toNumber() === Math.pow(2, 32) - 1);      // 2^32 - 1
                test(new Ice.Long(0x00000001, 0x00000000).toNumber() === Math.pow(2, 32));          // 2^32
                test(new Ice.Long(0x00000001, 0xFFFFFFFF).toNumber() === Math.pow(2, 33) - 1);      // 2^33 - 1
                test(new Ice.Long(0x001FFFFF, 0xFFFFFFFF).toNumber() === Math.pow(2, 53) - 1);      // 2^53 - 1
                test(new Ice.Long(0x00200000, 0x00000000).toNumber() === Number.POSITIVE_INFINITY); // 2^53

                //
                // Test negative numbers
                //
                test(new Ice.Long(0xFFFFFFFF, 0xFFFFFFFF).toNumber() === -1);
                test(new Ice.Long(0xFFFFFFFF, 0xFFFFFFFE).toNumber() === -2);
                test(new Ice.Long(0xFFFFFFFF, 0xFFFFFF9C).toNumber() === -100);

                test(new Ice.Long(0xFFFFFFFF, 0x00000000).toNumber() === -Math.pow(2, 32));         // -(2^32)
                test(new Ice.Long(0xFFFFFFFE, 0x00000000).toNumber() === -Math.pow(2, 33));         // -(2^33)
                test(new Ice.Long(0xFFFFFFFE, 0x00000001).toNumber() === -(Math.pow(2, 33) - 1));   // -(2^33 - 1)
                test(new Ice.Long(0xFFF00000, 0x00000000).toNumber() === -Math.pow(2, 52));         // -(2^52)
                test(new Ice.Long(0xFFF00000, 0x00000001).toNumber() === -(Math.pow(2, 52) - 1));   // -(2^52 - 1)
                test(new Ice.Long(0xFFE00000, 0x00000001).toNumber() === -(Math.pow(2, 53) - 1));   // -(2^53 - 1)
                test(new Ice.Long(0xFFE00000, 0x00000000).toNumber() === Number.NEGATIVE_INFINITY); // -(2^53)

                //
                // Test conversion from positive number
                //

                test(new Ice.Long(0).toNumber() === 0);                                             // 0
                test(new Ice.Long(1).toNumber() === 1);                                             // 1
                test(new Ice.Long(1024).toNumber() === 1024);                                       // 1024
                test(new Ice.Long(Math.pow(2, 32) - 1).toNumber() === Math.pow(2, 32) - 1);         // 2^32 - 1
                test(new Ice.Long(Math.pow(2, 32)).toNumber() === Math.pow(2, 32));                 // 2^32
                test(new Ice.Long(Math.pow(2, 33) - 1).toNumber() === Math.pow(2, 33) - 1);         // 2^33 - 1
                test(new Ice.Long(Math.pow(2, 53) - 1).toNumber() === Math.pow(2, 53) - 1);         // 2^53 - 1

                //
                // Test conversion from negative number
                //
                test(new Ice.Long(-1).toNumber() === -1);
                test(new Ice.Long(-2).toNumber() === -2);
                test(new Ice.Long(-100).toNumber() === -100);

                test(new Ice.Long(-Math.pow(2, 32)).toNumber() === -Math.pow(2, 32));               // -(2^32)
                test(new Ice.Long(-Math.pow(2, 33)).toNumber() === -Math.pow(2, 33));               // -(2^33)
                test(new Ice.Long(-Math.pow(2, 33) - 1).toNumber() === -Math.pow(2, 33) - 1);       // -(2^33 - 1)
                test(new Ice.Long(-Math.pow(2, 52)).toNumber() === -Math.pow(2, 52));               // -(2^52)
                test(new Ice.Long(-Math.pow(2, 52) - 1).toNumber() === -Math.pow(2, 52) - 1);       // -(2^52 - 1)



                out.writeLine("ok");
            });
    };
    exports._test = run;
}
(typeof(global) !== "undefined" && typeof(global.process) !== "undefined" ? module : undefined,
 typeof(global) !== "undefined" && typeof(global.process) !== "undefined" ? require : this.Ice._require,
 typeof(global) !== "undefined" && typeof(global.process) !== "undefined" ? exports : this));