summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_7/TypedObject/scalar_types.js
blob: 5d5ea5c02a9e9638b56baa14c2cd1d28af227ef5 (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
// |reftest| skip-if(!this.hasOwnProperty("TypedObject"))

var BUGNUMBER = 578700;
var summary = 'Byte-sized type conversion';

var T = TypedObject;

function check(results, ctor) {
  print("ctor = ", ctor.toSource());

  // check applying the ctor directly
  for (var i = 0; i < results.length; i++)
    assertEq(results[i][0], ctor(results[i][1]));

  // check writing and reading from a struct
  var S = new T.StructType({f: ctor});
  for (var i = 0; i < results.length; i++) {
    var s = new S({f: results[i][1]});
    assertEq(results[i][0], s.f);
  }
}

function runTests() {
  print(BUGNUMBER + ": " + summary);

  var int8results = [
    [22, 22],
    [-128, 128],
    [-1, 255],
    [-128, -128],
    [127, -129],
    [0x75, 0x7575],
    [-123, 0x7585]
  ];
  check(int8results, T.int8);

  var uint8results = [
    [22, 22],
    [128, 128],
    [255, 255],
    [0, 256],
    [128, -128],
    [127, -129],
    [129, 129],
    [0x75, 0x7575],
    [0x85, 0x7585]
  ];
  check(uint8results, T.uint8);

  var uint8clampedresults = [
    [22, 22],
    [128, 128],
    [255, 255],
    [0, -128],
    [0, -129],
    [129, 129],
    [255, 0x7575],
    [255, 0x7585]
  ];
  check(uint8clampedresults, T.uint8Clamped);

  if (typeof reportCompare === "function")
    reportCompare(true, true);

  print("Tests complete");
}

runTests();