1use crate::assert_format;
2
3#[test]
4fn construction() {
5 assert_format!(
6 "fn main() {
7 let a = 1
8 let x = <<1, a, 2:bytes>>
9 let size = <<3:2, 4:size(3), 5:bytes-size(4), 6:size(a)>>
10 let unit = <<7:unit(1), 8:bytes-unit(2)>>
11 x
12}
13",
14 );
15}
16
17#[test]
18fn pattern() {
19 assert_format!(
20 "fn main() {
21 let a = 1
22 let <<b, c, d:bytes>> = <<1, a, 2:bytes>>
23 b
24}
25",
26 );
27}
28
29#[test]
30fn long() {
31 assert_format!(
32 "fn main() {
33 let some_really_long_variable_name_to_force_wrapping = 1
34 let bits = <<
35 some_really_long_variable_name_to_force_wrapping,
36 some_really_long_variable_name_to_force_wrapping,
37 >>
38 bits
39}
40",
41 );
42}
43
44// https://github.com/gleam-lang/gleam/issues/2932
45#[test]
46fn tight_empty() {
47 assert_format!(
48 "fn main() {
49 let some_really_really_really_really_really_really_really_long_variable_name_to_force_wrapping = <<>>
50 some_really_really_really_really_really_really_really_long_variable_name_to_force_wrapping
51}
52"
53 );
54}
55
56#[test]
57fn comments_are_not_moved_out_of_empty_bit_array() {
58 assert_format!(
59 r#"pub fn main() {
60 // This is an empty bit array!
61 <<
62 // Nothing here...
63 >>
64}
65"#
66 );
67}
68
69#[test]
70fn empty_bit_arrays_with_comment_inside_are_indented_properly() {
71 assert_format!(
72 r#"pub fn main() {
73 fun(
74 <<
75 // Nothing here...
76 >>,
77 wibble_wobble_wibble_wobble_wibble_wobble_wibble_wobble,
78 <<
79 // Nothing here as well!
80 >>,
81 )
82}
83"#
84 );
85}
86
87#[test]
88fn comments_inside_non_empty_bit_arrays_are_not_moved() {
89 assert_format!(
90 r#"pub fn main() {
91 fun(
92 <<
93 // One is below me.
94 1, 2,
95 // Three is below me.
96 3,
97 >>,
98 wibble_wobble_wibble_wobble_wibble_wobble_wibble_wobble,
99 <<
100 // Three is below me.
101 3,
102 >>,
103 )
104}
105"#
106 );
107}
108
109#[test]
110fn concise_wrapping_of_simple_bit_arrays() {
111 assert_format!(
112 "pub fn main() {
113 <<
114 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400,
115 1500, 1600, 1700, 1800, 1900, 2000,
116 >>
117}
118"
119 );
120}
121
122#[test]
123fn concise_wrapping_of_simple_bit_arrays1() {
124 assert_format!(
125 "pub fn main() {
126 <<
127 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 1.0, 11.0, 12.0, 13.0, 14.0,
128 15.0, 16.0, 17.0, 18.0, 19.0, 2.0,
129 >>
130}
131"
132 );
133}
134
135#[test]
136fn concise_wrapping_of_simple_bit_arrays2() {
137 assert_format!(
138 r#"pub fn main() {
139 <<
140 "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
141 "ten", "eleven", "twelve",
142 >>
143}
144"#
145 );
146}
147
148#[test]
149fn concise_wrapping_of_simple_bit_arrays3() {
150 assert_format!(
151 "const values = <<
152 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400,
153 1500, 1600, 1700, 1800, 1900, 2000,
154>>
155"
156 );
157}
158
159#[test]
160fn concise_wrapping_of_simple_bit_arrays4() {
161 assert_format!(
162 "const values = <<
163 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0,
164 16.0, 17.0, 18.0, 19.0, 2.0,
165>>
166"
167 );
168}
169
170#[test]
171fn concise_wrapping_of_simple_bit_arrays5() {
172 assert_format!(
173 r#"const values = <<
174 "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
175 "eleven", "twelve",
176>>
177"#
178 );
179}
180
181#[test]
182fn binop_value() {
183 assert_format!(
184 r#"pub fn main() {
185 <<{ 1 + 1 }>>
186}
187"#
188 );
189}
190
191#[test]
192fn block_value() {
193 assert_format!(
194 r#"pub fn main() {
195 <<
196 {
197 io.println("hi")
198 1
199 },
200 >>
201}
202"#
203 );
204}