Fork of daniellemaywood.uk/gleam — Wasm codegen work
2.6 kB
211 lines
1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: 2024 The Gleam contributors
3
4use crate::assert_js;
5
6#[test]
7pub fn echo_with_a_simple_expression() {
8 assert_js!(
9 r#"
10pub fn main() {
11 echo 1
12}
13"#
14 );
15}
16
17#[test]
18pub fn echo_with_a_simple_expression_and_a_message() {
19 assert_js!(
20 r#"
21pub fn main() {
22 echo 1 as "hello!"
23}
24"#
25 );
26}
27
28#[test]
29pub fn echo_with_complex_expression_as_a_message() {
30 assert_js!(
31 r#"
32pub fn main() {
33 echo 1 as case name() {
34 "Giacomo" -> "hello Jak!"
35 _ -> "hello!"
36 }
37}
38
39fn name() { "Giacomo" }
40"#
41 );
42}
43
44#[test]
45pub fn echo_evaluates_printed_value_before_message() {
46 assert_js!(
47 r#"
48pub fn main() {
49 echo name() as case name() {
50 "Giacomo" -> "hello Jak!"
51 _ -> "hello!"
52 }
53}
54
55fn name() { "Giacomo" }
56"#
57 );
58}
59
60#[test]
61pub fn echo_with_a_block_as_a_message() {
62 assert_js!(
63 r#"
64pub fn main() {
65 echo 1 as {
66 let name = "Giacomo"
67 "Hello, " <> name
68 }
69}
70"#
71 );
72}
73
74#[test]
75pub fn multiple_echos_inside_expression() {
76 assert_js!(
77 r#"
78pub fn main() {
79 echo 1
80 echo 2
81}
82"#
83 );
84}
85
86#[test]
87pub fn echo_with_a_case_expression() {
88 assert_js!(
89 r#"
90pub fn main() {
91 echo case 1 {
92 _ -> 2
93 }
94}
95"#
96 );
97}
98
99#[test]
100pub fn echo_with_a_panic() {
101 assert_js!(
102 r#"
103pub fn main() {
104 echo panic
105}
106"#
107 );
108}
109
110#[test]
111pub fn echo_with_a_function_call() {
112 assert_js!(
113 r#"
114pub fn main() {
115 echo wibble(1, 2)
116}
117
118fn wibble(n: Int, m: Int) { n + m }
119"#
120 );
121}
122
123#[test]
124pub fn echo_with_a_function_call_and_a_message() {
125 assert_js!(
126 r#"
127pub fn main() {
128 echo wibble(1, 2) as message()
129}
130
131fn wibble(n: Int, m: Int) { n + m }
132fn message() { "Hello!" }
133"#
134 );
135}
136
137#[test]
138pub fn echo_with_a_block() {
139 assert_js!(
140 r#"
141pub fn main() {
142 echo {
143 Nil
144 1
145 }
146}
147"#
148 );
149}
150
151#[test]
152pub fn echo_in_a_pipeline() {
153 assert_js!(
154 r#"
155pub fn main() {
156 [1, 2, 3]
157 |> echo
158 |> wibble
159}
160
161pub fn wibble(n) { n }
162"#
163 )
164}
165
166#[test]
167pub fn echo_in_a_pipeline_with_message() {
168 assert_js!(
169 r#"
170pub fn main() {
171 [1, 2, 3]
172 |> echo as "message!!"
173 |> wibble
174}
175
176pub fn wibble(n) { n }
177"#
178 )
179}
180
181#[test]
182pub fn multiple_echos_in_a_pipeline() {
183 assert_js!(
184 r#"
185pub fn main() {
186 [1, 2, 3]
187 |> echo
188 |> wibble
189 |> echo
190 |> wibble
191 |> echo
192}
193
194pub fn wibble(n) { n }
195"#
196 )
197}
198
199#[test]
200pub fn module_named_inspect() {
201 assert_js!(
202 ("other", "other/inspect", "pub const x = Nil"),
203 r#"
204import other/inspect
205
206pub fn main() {
207 echo inspect.x
208}
209"#
210 )
211}