OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 return 4; | 55 return 4; |
56 case "Float64": | 56 case "Float64": |
57 return 8; | 57 return 8; |
58 default: | 58 default: |
59 assertUnreachable(func); | 59 assertUnreachable(func); |
60 } | 60 } |
61 } | 61 } |
62 | 62 |
63 function checkGet(func, index, expected, littleEndian) { | 63 function checkGet(func, index, expected, littleEndian) { |
64 function doGet() { | 64 function doGet() { |
65 return view["get" + func](index, littleEndian); | 65 if (littleEndian != undefined) |
| 66 return view["get" + func](index, littleEndian); |
| 67 else |
| 68 return view["get" + func](index); |
66 } | 69 } |
67 if (index >=0 && index + getElementSize(func) - 1 < view.byteLength) | 70 if (index >=0 && index + getElementSize(func) - 1 < view.byteLength) |
68 assertSame(expected, doGet()); | 71 assertSame(expected, doGet()); |
69 else | 72 else |
70 assertThrows(doGet, RangeError); | 73 assertThrows(doGet, RangeError); |
71 } | 74 } |
72 | 75 |
73 function checkSet(func, index, value, littleEndian) { | 76 function checkSet(func, index, value, littleEndian) { |
74 function doSet() { | 77 function doSet() { |
75 view["set" + func](index, value, littleEndian); | 78 if (littleEndian != undefined) |
| 79 view["set" + func](index, value, littleEndian); |
| 80 else |
| 81 view["set" + func](index, value); |
76 } | 82 } |
77 if (index >= 0 && | 83 if (index >= 0 && |
78 index + getElementSize(func) - 1 < view.byteLength) { | 84 index + getElementSize(func) - 1 < view.byteLength) { |
79 assertSame(undefined, doSet()); | 85 assertSame(undefined, doSet()); |
80 checkGet(func, index, value, littleEndian); | 86 checkGet(func, index, value, littleEndian); |
81 } else { | 87 } else { |
82 assertThrows(doSet, RangeError); | 88 assertThrows(doSet, RangeError); |
83 } | 89 } |
84 } | 90 } |
85 | 91 |
(...skipping 12 matching lines...) Expand all Loading... |
98 arrayBuffer = (new Uint8Array(paddingArray.concat(array))).buffer; | 104 arrayBuffer = (new Uint8Array(paddingArray.concat(array))).buffer; |
99 view = new DataView(arrayBuffer, viewStart, viewLength); | 105 view = new DataView(arrayBuffer, viewStart, viewLength); |
100 if (!littleEndian) | 106 if (!littleEndian) |
101 array.reverse(); // restore the array. | 107 array.reverse(); // restore the array. |
102 } | 108 } |
103 | 109 |
104 function runIntegerTestCases(isTestingGet, array, start, length) { | 110 function runIntegerTestCases(isTestingGet, array, start, length) { |
105 createDataView(array, 0, true, start, length); | 111 createDataView(array, 0, true, start, length); |
106 | 112 |
107 test(isTestingGet, "Int8", 0, 0); | 113 test(isTestingGet, "Int8", 0, 0); |
| 114 test(isTestingGet, "Int8", undefined, 0); |
108 test(isTestingGet, "Int8", 8, -128); | 115 test(isTestingGet, "Int8", 8, -128); |
109 test(isTestingGet, "Int8", 15, -1); | 116 test(isTestingGet, "Int8", 15, -1); |
110 | 117 |
111 test(isTestingGet, "Uint8", 0, 0); | 118 test(isTestingGet, "Uint8", 0, 0); |
| 119 test(isTestingGet, "Uint8", undefined, 0); |
112 test(isTestingGet, "Uint8", 8, 128); | 120 test(isTestingGet, "Uint8", 8, 128); |
113 test(isTestingGet, "Uint8", 15, 255); | 121 test(isTestingGet, "Uint8", 15, 255); |
114 | 122 |
115 // Little endian. | 123 // Little endian. |
116 test(isTestingGet, "Int16", 0, 256, true); | 124 test(isTestingGet, "Int16", 0, 256, true); |
| 125 test(isTestingGet, "Int16", undefined, 256, true); |
117 test(isTestingGet, "Int16", 5, 26213, true); | 126 test(isTestingGet, "Int16", 5, 26213, true); |
118 test(isTestingGet, "Int16", 9, -32127, true); | 127 test(isTestingGet, "Int16", 9, -32127, true); |
119 test(isTestingGet, "Int16", 14, -2, true); | 128 test(isTestingGet, "Int16", 14, -2, true); |
120 | 129 |
121 // Big endian. | 130 // Big endian. |
122 test(isTestingGet, "Int16", 0, 1); | 131 test(isTestingGet, "Int16", 0, 1); |
| 132 test(isTestingGet, "Int16", undefined, 1); |
123 test(isTestingGet, "Int16", 5, 25958); | 133 test(isTestingGet, "Int16", 5, 25958); |
124 test(isTestingGet, "Int16", 9, -32382); | 134 test(isTestingGet, "Int16", 9, -32382); |
125 test(isTestingGet, "Int16", 14, -257); | 135 test(isTestingGet, "Int16", 14, -257); |
126 | 136 |
127 // Little endian. | 137 // Little endian. |
128 test(isTestingGet, "Uint16", 0, 256, true); | 138 test(isTestingGet, "Uint16", 0, 256, true); |
| 139 test(isTestingGet, "Uint16", undefined, 256, true); |
129 test(isTestingGet, "Uint16", 5, 26213, true); | 140 test(isTestingGet, "Uint16", 5, 26213, true); |
130 test(isTestingGet, "Uint16", 9, 33409, true); | 141 test(isTestingGet, "Uint16", 9, 33409, true); |
131 test(isTestingGet, "Uint16", 14, 65534, true); | 142 test(isTestingGet, "Uint16", 14, 65534, true); |
132 | 143 |
133 // Big endian. | 144 // Big endian. |
134 test(isTestingGet, "Uint16", 0, 1); | 145 test(isTestingGet, "Uint16", 0, 1); |
| 146 test(isTestingGet, "Uint16", undefined, 1); |
135 test(isTestingGet, "Uint16", 5, 25958); | 147 test(isTestingGet, "Uint16", 5, 25958); |
136 test(isTestingGet, "Uint16", 9, 33154); | 148 test(isTestingGet, "Uint16", 9, 33154); |
137 test(isTestingGet, "Uint16", 14, 65279); | 149 test(isTestingGet, "Uint16", 14, 65279); |
138 | 150 |
139 // Little endian. | 151 // Little endian. |
140 test(isTestingGet, "Int32", 0, 50462976, true); | 152 test(isTestingGet, "Int32", 0, 50462976, true); |
| 153 test(isTestingGet, "Int32", undefined, 50462976, true); |
141 test(isTestingGet, "Int32", 3, 1717920771, true); | 154 test(isTestingGet, "Int32", 3, 1717920771, true); |
142 test(isTestingGet, "Int32", 6, -2122291354, true); | 155 test(isTestingGet, "Int32", 6, -2122291354, true); |
143 test(isTestingGet, "Int32", 9, -58490239, true); | 156 test(isTestingGet, "Int32", 9, -58490239, true); |
144 test(isTestingGet, "Int32", 12,-66052, true); | 157 test(isTestingGet, "Int32", 12,-66052, true); |
145 | 158 |
146 // Big endian. | 159 // Big endian. |
147 test(isTestingGet, "Int32", 0, 66051); | 160 test(isTestingGet, "Int32", 0, 66051); |
| 161 test(isTestingGet, "Int32", undefined, 66051); |
148 test(isTestingGet, "Int32", 3, 56911206); | 162 test(isTestingGet, "Int32", 3, 56911206); |
149 test(isTestingGet, "Int32", 6, 1718059137); | 163 test(isTestingGet, "Int32", 6, 1718059137); |
150 test(isTestingGet, "Int32", 9, -2122152964); | 164 test(isTestingGet, "Int32", 9, -2122152964); |
151 test(isTestingGet, "Int32", 12, -50462977); | 165 test(isTestingGet, "Int32", 12, -50462977); |
152 | 166 |
153 // Little endian. | 167 // Little endian. |
154 test(isTestingGet, "Uint32", 0, 50462976, true); | 168 test(isTestingGet, "Uint32", 0, 50462976, true); |
| 169 test(isTestingGet, "Uint32", undefined, 50462976, true); |
155 test(isTestingGet, "Uint32", 3, 1717920771, true); | 170 test(isTestingGet, "Uint32", 3, 1717920771, true); |
156 test(isTestingGet, "Uint32", 6, 2172675942, true); | 171 test(isTestingGet, "Uint32", 6, 2172675942, true); |
157 test(isTestingGet, "Uint32", 9, 4236477057, true); | 172 test(isTestingGet, "Uint32", 9, 4236477057, true); |
158 test(isTestingGet, "Uint32", 12,4294901244, true); | 173 test(isTestingGet, "Uint32", 12,4294901244, true); |
159 | 174 |
160 // Big endian. | 175 // Big endian. |
161 test(isTestingGet, "Uint32", 0, 66051); | 176 test(isTestingGet, "Uint32", 0, 66051); |
| 177 test(isTestingGet, "Uint32", undefined, 66051); |
162 test(isTestingGet, "Uint32", 3, 56911206); | 178 test(isTestingGet, "Uint32", 3, 56911206); |
163 test(isTestingGet, "Uint32", 6, 1718059137); | 179 test(isTestingGet, "Uint32", 6, 1718059137); |
164 test(isTestingGet, "Uint32", 9, 2172814332); | 180 test(isTestingGet, "Uint32", 9, 2172814332); |
165 test(isTestingGet, "Uint32", 12, 4244504319); | 181 test(isTestingGet, "Uint32", 12, 4244504319); |
166 } | 182 } |
167 | 183 |
168 function testFloat(isTestingGet, func, array, start, expected) { | 184 function testFloat(isTestingGet, func, array, start, expected) { |
169 // Little endian. | 185 // Little endian. |
170 createDataView(array, 0, true, start); | 186 createDataView(array, 0, true, start); |
171 test(isTestingGet, func, 0, expected, true); | 187 test(isTestingGet, func, 0, expected, true); |
| 188 test(isTestingGet, func, undefined, expected, true); |
172 createDataView(array, 3, true, start); | 189 createDataView(array, 3, true, start); |
173 test(isTestingGet, func, 3, expected, true); | 190 test(isTestingGet, func, 3, expected, true); |
174 createDataView(array, 7, true, start); | 191 createDataView(array, 7, true, start); |
175 test(isTestingGet, func, 7, expected, true); | 192 test(isTestingGet, func, 7, expected, true); |
176 createDataView(array, 10, true, start); | 193 createDataView(array, 10, true, start); |
177 test(isTestingGet, func, 10, expected, true); | 194 test(isTestingGet, func, 10, expected, true); |
178 | 195 |
179 // Big endian. | 196 // Big endian. |
180 createDataView(array, 0, false); | 197 createDataView(array, 0, false); |
181 test(isTestingGet, func, 0, expected, false); | 198 test(isTestingGet, func, 0, expected, false); |
| 199 test(isTestingGet, func, undefined, expected, false); |
182 createDataView(array, 3, false); | 200 createDataView(array, 3, false); |
183 test(isTestingGet, func, 3, expected, false); | 201 test(isTestingGet, func, 3, expected, false); |
184 createDataView(array, 7, false); | 202 createDataView(array, 7, false); |
185 test(isTestingGet, func, 7, expected, false); | 203 test(isTestingGet, func, 7, expected, false); |
186 createDataView(array, 10, false); | 204 createDataView(array, 10, false); |
187 test(isTestingGet, func, 10, expected, false); | 205 test(isTestingGet, func, 10, expected, false); |
188 } | 206 } |
189 | 207 |
190 function runFloatTestCases(isTestingGet, start) { | 208 function runFloatTestCases(isTestingGet, start) { |
191 testFloat(isTestingGet, "Float32", | 209 testFloat(isTestingGet, "Float32", |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 | 297 |
280 } | 298 } |
281 | 299 |
282 TestGetters(); | 300 TestGetters(); |
283 TestSetters(); | 301 TestSetters(); |
284 | 302 |
285 function TestGeneralAccessors() { | 303 function TestGeneralAccessors() { |
286 var a = new DataView(new ArrayBuffer(256)); | 304 var a = new DataView(new ArrayBuffer(256)); |
287 function CheckAccessor(name) { | 305 function CheckAccessor(name) { |
288 var f = a[name]; | 306 var f = a[name]; |
| 307 assertThrows(function() { f(); }, TypeError); |
289 f.call(a, 0, 0); // should not throw | 308 f.call(a, 0, 0); // should not throw |
290 assertThrows(function() { f.call({}, 0, 0); }, TypeError); | 309 assertThrows(function() { f.call({}, 0, 0); }, TypeError); |
| 310 assertThrows(function() { f.call(a); }, TypeError); |
291 } | 311 } |
292 CheckAccessor("getUint8"); | 312 CheckAccessor("getUint8"); |
293 CheckAccessor("setUint8"); | 313 CheckAccessor("setUint8"); |
294 CheckAccessor("getInt8"); | 314 CheckAccessor("getInt8"); |
295 CheckAccessor("setInt8"); | 315 CheckAccessor("setInt8"); |
296 CheckAccessor("getUint16"); | 316 CheckAccessor("getUint16"); |
297 CheckAccessor("setUint16"); | 317 CheckAccessor("setUint16"); |
298 CheckAccessor("getInt16"); | 318 CheckAccessor("getInt16"); |
299 CheckAccessor("setInt16"); | 319 CheckAccessor("setInt16"); |
300 CheckAccessor("getUint32"); | 320 CheckAccessor("getUint32"); |
301 CheckAccessor("setUint32"); | 321 CheckAccessor("setUint32"); |
302 CheckAccessor("getInt32"); | 322 CheckAccessor("getInt32"); |
303 CheckAccessor("setInt32"); | 323 CheckAccessor("setInt32"); |
304 CheckAccessor("getFloat32"); | 324 CheckAccessor("getFloat32"); |
305 CheckAccessor("setFloat32"); | 325 CheckAccessor("setFloat32"); |
306 CheckAccessor("getFloat64"); | 326 CheckAccessor("getFloat64"); |
307 CheckAccessor("setFloat64"); | 327 CheckAccessor("setFloat64"); |
308 } | 328 } |
309 | 329 |
310 TestGeneralAccessors(); | 330 TestGeneralAccessors(); |
OLD | NEW |