⭐️ A friendly language for building type-safe, scalable systems!
at main 2.4 kB view raw
1use crate::{assert_js, assert_ts_def}; 2 3#[test] 4fn expressions() { 5 assert_js!( 6 r#" 7pub fn go() { 8 True 9 False 10 Nil 11} 12"# 13 ); 14} 15 16#[test] 17fn constants() { 18 assert_js!( 19 r#" 20pub const a = True 21pub const b = False 22pub const c = Nil 23"#, 24 ); 25} 26 27#[test] 28fn constants_typescript() { 29 assert_ts_def!( 30 r#" 31pub const a = True 32pub const b = False 33pub const c = Nil 34"#, 35 ); 36} 37 38#[test] 39fn operators() { 40 assert_js!( 41 r#" 42pub fn go() { 43 True && True 44 False || False 45} 46"#, 47 ); 48} 49 50#[test] 51fn assigning() { 52 assert_js!( 53 r#" 54pub fn go(x, y) { 55 let assert True = x 56 let assert False = x 57 let assert Nil = y 58} 59"#, 60 ); 61} 62 63// https://github.com/gleam-lang/gleam/issues/1112 64// differentiate between prelude constructors and custom type constructors 65#[test] 66fn shadowed_bools_and_nil() { 67 assert_js!( 68 r#" 69pub type True { True False Nil } 70pub fn go(x, y) { 71 let assert True = x 72 let assert False = x 73 let assert Nil = y 74} 75"#, 76 ); 77} 78 79#[test] 80fn shadowed_bools_and_nil_typescript() { 81 assert_ts_def!( 82 r#" 83pub type True { True False Nil } 84pub fn go(x, y) { 85 let assert True = x 86 let assert False = x 87 let assert Nil = y 88} 89"#, 90 ); 91} 92 93#[test] 94fn equality() { 95 assert_js!( 96 r#" 97pub fn go(a, b) { 98 a == True 99 a != True 100 a == False 101 a != False 102 a == a 103 a != a 104 b == Nil 105 b != Nil 106 b == b 107} 108"#, 109 ); 110} 111 112#[test] 113fn case() { 114 assert_js!( 115 r#" 116pub fn go(a) { 117 case a { 118 True -> 1 119 False -> 0 120 } 121} 122"#, 123 ); 124} 125 126#[test] 127fn nil_case() { 128 assert_js!( 129 r#" 130pub fn go(a) { 131 case a { 132 Nil -> 0 133 } 134} 135"#, 136 ); 137} 138 139#[test] 140fn negation() { 141 assert_js!( 142 "pub fn negate(x) { 143 !x 144}" 145 ); 146} 147 148#[test] 149fn negation_block() { 150 assert_js!( 151 "pub fn negate(x) { 152 !{ 153 123 154 x 155 } 156}" 157 ); 158} 159 160#[test] 161fn binop_panic_right() { 162 assert_js!( 163 "pub fn negate(x) { 164 x && panic 165}" 166 ); 167} 168 169#[test] 170fn binop_panic_left() { 171 assert_js!( 172 "pub fn negate(x) { 173 panic && x 174}" 175 ); 176} 177 178#[test] 179fn binop_todo_right() { 180 assert_js!( 181 "pub fn negate(x) { 182 x && todo 183}" 184 ); 185} 186 187#[test] 188fn binop_todo_left() { 189 assert_js!( 190 "pub fn negate(x) { 191 todo && x 192}" 193 ); 194} 195 196#[test] 197fn negate_panic() { 198 assert_js!( 199 "pub fn negate(x) { 200 !panic 201}" 202 ); 203} 204 205#[test] 206fn negate_todo() { 207 assert_js!( 208 "pub fn negate(x) { 209 !todo 210}" 211 ); 212}