76a9aa24adbb0ae952b03cafa0539e80100e2e6b
[WebKit.git] / LayoutTests / fast / js / resources / math-transforms.js
1 description(
2
3 "This test checks for potential edge case bugs with certain math transforms involving multiplication by 1 and unary plus."
4
5 );
6
7 var values = {
8     someInt: 42,
9     someFloat: 42.42,
10     one: 1,
11     minusOne: -1,
12     zero: 0,
13     minusZero: -0,
14     infinity: Infinity,
15     minusInfinity: -Infinity,
16     notANumber: NaN,
17     nonNumberString: "x",
18     someFloatString: "42.42"
19 };
20
21 var numberForString = {
22     nonNumberString: "notANumber",
23     someFloatString: "someFloat"
24 };
25
26 for (var name in values) {
27     var numForStr = numberForString[name] ? numberForString[name] : name;
28
29     shouldBe("values." + name + " * 1", "+values." + name);
30     shouldBe("values." + name + " * 1", "" + values[numForStr]);
31
32     shouldBe("1 * values." + name, "+values." + name);
33     shouldBe("1 * values." + name, "" + values[numForStr]);
34 }
35
36 for (var name1 in values) {
37     var numForStr1 = numberForString[name1] ? numberForString[name1] : name1;
38     for (var name2 in values) {
39         var numForStr2 = numberForString[name2] ? numberForString[name2] : name2;
40
41         shouldBe("+values." + name1 + " * values." + name2, "values." + name1 + " * values." + name2);
42         shouldBe("+values." + name1 + " * values." + name2, "" + (values[name1] * values[name2]));
43         shouldBe("values." + name1 + " * +values." + name2, "values." + name1 + " * values." + name2);
44         shouldBe("values." + name1 + " * +values." + name2, "" + (values[name1] * values[name2]));
45         shouldBe("+values." + name1 + " * +values." + name2, "values." + name1 + " * values." + name2);
46         shouldBe("+values." + name1 + " * +values." + name2, "" + (values[name1] * values[name2]));
47
48         shouldBe("+values." + name1 + " / values." + name2, "values." + name1 + " / values." + name2);
49         shouldBe("+values." + name1 + " / values." + name2, "" + (values[name1] / values[name2]));
50         shouldBe("values." + name1 + " / +values." + name2, "values." + name1 + " / values." + name2);
51         shouldBe("values." + name1 + " / +values." + name2, "" + (values[name1] / values[name2]));
52         shouldBe("+values." + name1 + " / +values." + name2, "values." + name1 + " / values." + name2);
53         shouldBe("+values." + name1 + " / +values." + name2, "" + (values[name1] / values[name2]));
54
55         shouldBe("+values." + name1 + " - values." + name2, "values." + name1 + " - values." + name2);
56         shouldBe("+values." + name1 + " - values." + name2, "" + (values[name1] - values[name2]));
57         shouldBe("values." + name1 + " - +values." + name2, "values." + name1 + " - values." + name2);
58         shouldBe("values." + name1 + " - +values." + name2, "" + (values[name1] - values[name2]));
59         shouldBe("+values." + name1 + " - +values." + name2, "values." + name1 + " - values." + name2);
60         shouldBe("+values." + name1 + " - +values." + name2, "" + (values[name1] - values[name2]));
61     }
62 }
63
64
65 var successfullyParsed = true;