• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16function AssertTrue(value) {
17    if (!value) {
18      throw new Error('Assertion failed: expected true');
19    }
20}
21
22function AssertFalse(value) {
23    if (value) {
24      throw new Error('Assertion failed: expected false');
25    }
26}
27
28let array1 = [0,,2,,4,,];
29let array2 = [0.5,,2.5,,NaN,,];
30let array3 = new Array(7);
31array3[1] = 1;
32array3[4] = 5.588;
33array3[6] = NaN;
34let array4 = new Array(5);
35array4[1] = 1;
36array4[2] = "asc";
37array4[3] = NaN;
38array4[4] = 9.0;
39AssertTrue(array1.includes(0));
40AssertTrue(array1.includes(4));
41AssertTrue(array1.includes());
42AssertTrue(array2.includes(0.5));
43AssertTrue(array2.includes(2.5));
44AssertTrue(array2.includes(NaN));
45AssertTrue(array2.includes(undefined));
46AssertTrue(array3.includes(1));
47AssertTrue(array3.includes(5.588));
48AssertTrue(array3.includes(NaN));
49AssertTrue(array3.includes());
50AssertTrue(array4.includes(1));
51AssertTrue(array4.includes("asc"));
52AssertTrue(array4.includes(NaN));
53AssertTrue(array4.includes(9.0));
54
55
56var sample = [42.0000000, 0, 1, NaN];
57AssertTrue(sample.includes(-0));
58AssertTrue(sample.includes(42));
59print(sample.indexOf(-0));
60print(sample.indexOf(42));
61
62var toStrObj = {
63    toString: function() {
64        return 0
65    }
66};
67var one = 1;
68var _float = -(4 / 3);
69var a = new Array(false, undefined, null, "0", toStrObj, -1.3333333333333, "str", -0, true, +0, one, 1, 0, false, _float, -(4 / 3));
70print(a.indexOf(0));
71print([-0].indexOf(+0));
72
73AssertTrue([1, 2, 3].includes(2));
74AssertFalse([1, 2, 3].includes(4));
75AssertTrue([1, 2, NaN].includes(NaN));
76AssertTrue([1, 2, -0].includes(+0));
77AssertTrue([1, 2, -0].includes(-0));
78AssertTrue([1, 2, +0].includes(-0));
79AssertTrue([1, 2, +0].includes(+0));
80AssertFalse([1, 2, -Infinity].includes(+Infinity));
81AssertTrue([1, 2, -Infinity].includes(-Infinity));
82AssertFalse([1, 2, +Infinity].includes(-Infinity));
83AssertTrue([1, 2, +Infinity].includes(+Infinity));
84AssertFalse(["a", "b", "c"].includes({}));
85AssertFalse([{}, {}].includes({}));
86var obj = {};
87AssertTrue([obj].includes(obj));
88AssertFalse([obj].includes(obj, 1));
89AssertTrue([obj, obj].includes(obj, 1));
90AssertTrue([,,,].includes(undefined));
91AssertTrue([12, 13].includes(13, -1));
92AssertFalse([12, 13].includes(12, -1));
93AssertTrue([12, 13].includes(12, -2));
94
95
96const arr3 = [true, false, 0, 1];
97print(arr3.indexOf(true) === 0);
98print(arr3.indexOf(false) === 1);
99
100const arr4 = [NaN, 1, 2, 3];
101print(arr4.indexOf(NaN) === 0);
102
103const arr5 = [undefined, 1, 2, 3];
104print(arr5.indexOf(undefined) === 0);
105print(arr5.indexOf(null) === 0);
106
107const arr7 = [];
108print(arr7.indexOf(1) === -1);
109
110const arr9 = [1, 2, 3, 1, 4];
111print(arr9.indexOf(1) === 0,);
112
113const arr10 = [{ id: 1 }, { id: 2 }];
114const obj1 = { id: 2 };
115print(arr10.indexOf(obj1) === -1);
116
117const arr11 = [{ id: 1 }, { id: 2 }];
118const obj2 = { id: 2 };
119print(arr11.indexOf({ id: 2 }) === -1);
120
121const arr12 = [undefined, 1, 2, 3];
122print(arr12.indexOf(undefined) === 0);
123
124const arr13 = [null, 1, 2, 3];
125print(arr13.indexOf(null) === 0);
126
127const arr14 = [1, 2, 3, 4, 5];
128print(arr14.indexOf(3, 2) === 2);
129print(arr14.indexOf(1, 2) === -1);
130
131const largeArr = new Array(1000).fill(0).concat(1);
132print(largeArr.indexOf(1) === 1000);
133
134const arr15 = [0, '0', false];
135print(arr15.indexOf('0') === 1);
136print(arr15.indexOf(0) === 0);
137print(arr15.indexOf(false) === 2);
138
139const arr16 = ['', 'apple', 'banana'];
140print(arr16.indexOf('') === 0);
141
142const arr17 = ['', ,];
143print(arr17.indexOf(undefined) === 0);
144print(arr17.indexOf() === 0);
145
146