Skip to content

Commit d143a47

Browse files
GearsDatapackslpil
authored andcommitted
More JS tests
1 parent bbc10d4 commit d143a47

5 files changed

+232
-0
lines changed

compiler-core/src/javascript/tests/case.rs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,3 +413,59 @@ pub fn go(x) {
413413
"
414414
);
415415
}
416+
417+
#[test]
418+
fn bit_array_assignment_utf16() {
419+
assert_js!(
420+
r#"
421+
pub fn main() {
422+
case <<"Hello":utf16>> {
423+
<<"Hello" as m:utf16>> -> m
424+
_ -> ""
425+
}
426+
}
427+
"#
428+
);
429+
}
430+
431+
#[test]
432+
fn bit_array_assignment_utf32() {
433+
assert_js!(
434+
r#"
435+
pub fn main() {
436+
case <<"Hello":utf32>> {
437+
<<"Hello" as m:utf32>> -> m
438+
_ -> ""
439+
}
440+
}
441+
"#
442+
);
443+
}
444+
445+
#[test]
446+
fn bit_array_assignment_utf16_little_endian() {
447+
assert_js!(
448+
r#"
449+
pub fn main() {
450+
case <<"Hello":utf16-little>> {
451+
<<"Hello" as m:utf16-little>> -> m
452+
_ -> ""
453+
}
454+
}
455+
"#
456+
);
457+
}
458+
459+
#[test]
460+
fn bit_array_assignment_utf32_little_endian() {
461+
assert_js!(
462+
r#"
463+
pub fn main() {
464+
case <<"Hello":utf32-little>> {
465+
<<"Hello" as m:utf32-little>> -> m
466+
_ -> ""
467+
}
468+
}
469+
"#
470+
);
471+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
source: compiler-core/src/javascript/tests/case.rs
3+
expression: "\npub fn main() {\n case <<\"Hello\":utf16>> {\n <<\"Hello\" as m:utf16>> -> m\n _ -> \"\"\n }\n}\n"
4+
---
5+
----- SOURCE CODE
6+
7+
pub fn main() {
8+
case <<"Hello":utf16>> {
9+
<<"Hello" as m:utf16>> -> m
10+
_ -> ""
11+
}
12+
}
13+
14+
15+
----- COMPILED JAVASCRIPT
16+
import { toBitArray, stringToUtf16 } from "../gleam.mjs";
17+
18+
export function main() {
19+
let $ = toBitArray([stringToUtf16("Hello", true)]);
20+
if ($.bitSize === 80) {
21+
if ($.byteAt(0) === 0 &&
22+
$.byteAt(1) === 72 &&
23+
$.byteAt(2) === 0 &&
24+
$.byteAt(3) === 101 &&
25+
$.byteAt(4) === 0 &&
26+
$.byteAt(5) === 108 &&
27+
$.byteAt(6) === 0 &&
28+
$.byteAt(7) === 108 &&
29+
$.byteAt(8) === 0 &&
30+
$.byteAt(9) === 111) {
31+
let m = "Hello";
32+
return m;
33+
} else {
34+
return "";
35+
}
36+
} else {
37+
return "";
38+
}
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
source: compiler-core/src/javascript/tests/case.rs
3+
expression: "\npub fn main() {\n case <<\"Hello\":utf16-little>> {\n <<\"Hello\" as m:utf16-little>> -> m\n _ -> \"\"\n }\n}\n"
4+
---
5+
----- SOURCE CODE
6+
7+
pub fn main() {
8+
case <<"Hello":utf16-little>> {
9+
<<"Hello" as m:utf16-little>> -> m
10+
_ -> ""
11+
}
12+
}
13+
14+
15+
----- COMPILED JAVASCRIPT
16+
import { toBitArray, stringToUtf16 } from "../gleam.mjs";
17+
18+
export function main() {
19+
let $ = toBitArray([stringToUtf16("Hello", false)]);
20+
if ($.bitSize === 80) {
21+
if ($.byteAt(0) === 72 &&
22+
$.byteAt(1) === 0 &&
23+
$.byteAt(2) === 101 &&
24+
$.byteAt(3) === 0 &&
25+
$.byteAt(4) === 108 &&
26+
$.byteAt(5) === 0 &&
27+
$.byteAt(6) === 108 &&
28+
$.byteAt(7) === 0 &&
29+
$.byteAt(8) === 111 &&
30+
$.byteAt(9) === 0) {
31+
let m = "Hello";
32+
return m;
33+
} else {
34+
return "";
35+
}
36+
} else {
37+
return "";
38+
}
39+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
source: compiler-core/src/javascript/tests/case.rs
3+
expression: "\npub fn main() {\n case <<\"Hello\":utf32>> {\n <<\"Hello\" as m:utf32>> -> m\n _ -> \"\"\n }\n}\n"
4+
---
5+
----- SOURCE CODE
6+
7+
pub fn main() {
8+
case <<"Hello":utf32>> {
9+
<<"Hello" as m:utf32>> -> m
10+
_ -> ""
11+
}
12+
}
13+
14+
15+
----- COMPILED JAVASCRIPT
16+
import { toBitArray, stringToUtf32 } from "../gleam.mjs";
17+
18+
export function main() {
19+
let $ = toBitArray([stringToUtf32("Hello", true)]);
20+
if ($.bitSize === 160) {
21+
if ($.byteAt(0) === 0 &&
22+
$.byteAt(1) === 0 &&
23+
$.byteAt(2) === 0 &&
24+
$.byteAt(3) === 72 &&
25+
$.byteAt(4) === 0 &&
26+
$.byteAt(5) === 0 &&
27+
$.byteAt(6) === 0 &&
28+
$.byteAt(7) === 101 &&
29+
$.byteAt(8) === 0 &&
30+
$.byteAt(9) === 0 &&
31+
$.byteAt(10) === 0 &&
32+
$.byteAt(11) === 108 &&
33+
$.byteAt(12) === 0 &&
34+
$.byteAt(13) === 0 &&
35+
$.byteAt(14) === 0 &&
36+
$.byteAt(15) === 108 &&
37+
$.byteAt(16) === 0 &&
38+
$.byteAt(17) === 0 &&
39+
$.byteAt(18) === 0 &&
40+
$.byteAt(19) === 111) {
41+
let m = "Hello";
42+
return m;
43+
} else {
44+
return "";
45+
}
46+
} else {
47+
return "";
48+
}
49+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
source: compiler-core/src/javascript/tests/case.rs
3+
expression: "\npub fn main() {\n case <<\"Hello\":utf32-little>> {\n <<\"Hello\" as m:utf32-little>> -> m\n _ -> \"\"\n }\n}\n"
4+
---
5+
----- SOURCE CODE
6+
7+
pub fn main() {
8+
case <<"Hello":utf32-little>> {
9+
<<"Hello" as m:utf32-little>> -> m
10+
_ -> ""
11+
}
12+
}
13+
14+
15+
----- COMPILED JAVASCRIPT
16+
import { toBitArray, stringToUtf32 } from "../gleam.mjs";
17+
18+
export function main() {
19+
let $ = toBitArray([stringToUtf32("Hello", false)]);
20+
if ($.bitSize === 160) {
21+
if ($.byteAt(0) === 72 &&
22+
$.byteAt(1) === 0 &&
23+
$.byteAt(2) === 0 &&
24+
$.byteAt(3) === 0 &&
25+
$.byteAt(4) === 101 &&
26+
$.byteAt(5) === 0 &&
27+
$.byteAt(6) === 0 &&
28+
$.byteAt(7) === 0 &&
29+
$.byteAt(8) === 108 &&
30+
$.byteAt(9) === 0 &&
31+
$.byteAt(10) === 0 &&
32+
$.byteAt(11) === 0 &&
33+
$.byteAt(12) === 108 &&
34+
$.byteAt(13) === 0 &&
35+
$.byteAt(14) === 0 &&
36+
$.byteAt(15) === 0 &&
37+
$.byteAt(16) === 111 &&
38+
$.byteAt(17) === 0 &&
39+
$.byteAt(18) === 0 &&
40+
$.byteAt(19) === 0) {
41+
let m = "Hello";
42+
return m;
43+
} else {
44+
return "";
45+
}
46+
} else {
47+
return "";
48+
}
49+
}

0 commit comments

Comments
 (0)