forked from AssemblyScript/assemblyscript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypedarray.ts
More file actions
122 lines (99 loc) · 3.36 KB
/
typedarray.ts
File metadata and controls
122 lines (99 loc) · 3.36 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
assert(Int8Array.BYTES_PER_ELEMENT == 1);
assert(Uint8Array.BYTES_PER_ELEMENT == 1);
assert(Uint8ClampedArray.BYTES_PER_ELEMENT == 1);
assert(Int16Array.BYTES_PER_ELEMENT == 2);
assert(Uint16Array.BYTES_PER_ELEMENT == 2);
assert(Int32Array.BYTES_PER_ELEMENT == 4);
assert(Uint32Array.BYTES_PER_ELEMENT == 4);
assert(Int64Array.BYTES_PER_ELEMENT == 8);
assert(Uint64Array.BYTES_PER_ELEMENT == 8);
assert(Float32Array.BYTES_PER_ELEMENT == 4);
assert(Float64Array.BYTES_PER_ELEMENT == 8);
import "allocator/arena";
function testInstantiate(len: i32): void {
var i8a = new Int8Array(len);
assert(i8a.byteOffset == 0);
assert(i8a.byteLength == len * Int8Array.BYTES_PER_ELEMENT);
assert(i8a.length == len);
var u8a = new Uint8Array(len);
assert(u8a.byteOffset == 0);
assert(u8a.byteLength == len * Uint8Array.BYTES_PER_ELEMENT);
assert(u8a.length == len);
var c8a = new Uint8ClampedArray(len);
assert(c8a.byteOffset == 0);
assert(c8a.byteLength == len * Uint8Array.BYTES_PER_ELEMENT);
assert(c8a.length == len);
var i16a = new Int16Array(len);
assert(i16a.byteOffset == 0);
assert(i16a.byteLength == len * Int16Array.BYTES_PER_ELEMENT);
assert(i16a.length == len);
var u16a = new Uint16Array(len);
assert(u16a.byteOffset == 0);
assert(u16a.byteLength == len * Uint16Array.BYTES_PER_ELEMENT);
assert(u16a.length == len);
var i32a = new Int32Array(len);
assert(i32a.byteOffset == 0);
assert(i32a.byteLength == len * Int32Array.BYTES_PER_ELEMENT);
assert(i32a.length == len);
var u32a = new Uint32Array(len);
assert(u32a.byteOffset == 0);
assert(u32a.byteLength == len * Uint32Array.BYTES_PER_ELEMENT);
assert(u32a.length == len);
var i64a = new Int64Array(len);
assert(i64a.byteOffset == 0);
assert(i64a.byteLength == len * Int64Array.BYTES_PER_ELEMENT);
assert(i64a.length == len);
var u64a = new Uint64Array(len);
assert(u64a.byteOffset == 0);
assert(u64a.byteLength == len * Uint64Array.BYTES_PER_ELEMENT);
assert(u64a.length == len);
var f32a = new Float32Array(len);
assert(f32a.byteOffset == 0);
assert(f32a.byteLength == len * Float32Array.BYTES_PER_ELEMENT);
assert(f32a.length == len);
var f64a = new Float64Array(len);
assert(f64a.byteOffset == 0);
assert(f64a.byteLength == len * Float64Array.BYTES_PER_ELEMENT);
assert(f64a.length == len);
}
testInstantiate(0);
testInstantiate(5);
var arr = new Int32Array(3);
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
assert(arr.length == 3);
assert(arr.byteOffset == 0);
assert(arr.byteLength == 3 * sizeof<i32>());
assert(arr[0] == 1);
assert(arr[1] == 2);
assert(arr[2] == 3);
arr = arr.subarray(1, 2);
assert(arr.length == 1);
assert(arr.byteOffset == 1 * sizeof<i32>());
assert(arr.byteLength == 2 * sizeof<i32>());
assert(arr[0] == 2);
var af64 = new Float64Array(8);
af64[0] = 1;
af64[1] = 2;
af64[2] = 7;
af64[3] = 6;
af64[4] = 5;
af64[5] = 4;
af64[6] = 3;
af64[7] = 8;
af64 = af64.subarray(2, 6);
assert(af64.length == 4);
af64.sort();
assert(af64[0] == 4 && af64[1] == 5 && af64[2] == 6 && af64[3] == 7);
var clampedArr = new Uint8ClampedArray(3);
clampedArr[0] = -32;
clampedArr[1] = 2;
clampedArr[2] = 256;
assert(clampedArr[0] == 0);
assert(clampedArr[1] == 2);
assert(clampedArr[2] == 255);
import { MAX_BLENGTH } from "internal/arraybuffer";
const MAX_F64LENGTH = <u32>MAX_BLENGTH >> alignof<f64>();
new Float64Array(MAX_F64LENGTH); // 1GB
// new Float64Array(MAX_F64 + 1); // throws