Various additional assertions for the Flix programming language.
at main 230 lines 10 kB view raw
1// SPDX-FileCopyrightText: Copyright 2023 Roland Csaszar 2// SPDX-License-Identifier: Apache-2.0 3// 4// Project: flix-assertions 5// File: TestMain.flix 6// Date: 02.May.2023 7// 8// ============================================================================= 9/// All tests fail! 10 11// The same test in 4 different versions ======================================= 12// `FlixAssertion.eq` 13 14@Test 15def testEq01(): Bool = 16 FlixAssertion.eq(3, 1 + 1, "Something went wrong: '1 + 1'") 17 18@Test 19def testEq02(): Bool = 20 use FlixAssertion.{eq}; 21 "Something went wrong: '1 + 1'" |> (3 `eq` (1 + 1)) 22 23@Test 24def testEq03(): Bool = 25 use FlixAssertion.{eq, <|}; 26 (3 `eq` (1 + 1)) <| "Something went wrong: '1 + 1'" 27 28@Test 29def testEq04(): Bool = 30 use FlixAssertion.{$==, <|}; 31 (3 $== (1 + 1)) <| "Something went wrong: '1 + 1'" 32 33// The same test in 4 different versions ======================================= 34// `FlixAssertion.neq` 35 36@Test 37def testNeq01(): Bool = 38 FlixAssertion.neq(2, 1 + 1, "Something went wrong: '1 + 1'") 39 40@Test 41def testNeq02(): Bool = 42 use FlixAssertion.{neq}; 43 "Something went wrong: '1 + 1'" |> (2 `neq` (1 + 1)) 44 45@Test 46def testNeq03(): Bool = 47 use FlixAssertion.{neq, <|}; 48 (2 `neq` (1 + 1)) <| "Something went wrong: '1 + 1'" 49 50@Test 51def testNeq04(): Bool = 52 use FlixAssertion.{$!=, <|}; 53 (2 $!= (1 + 1)) <| "Something went wrong: '1 + 1'" 54 55// The same test in 4 different versions ======================================= 56// `FlixAssertion.lt` 57 58@Test 59def testLt01(): Bool = 60 FlixAssertion.lt(2, 1 + 1, "Something went wrong: '1 + 1'") 61 62@Test 63def testLt02(): Bool = 64 use FlixAssertion.{lt }; 65 "Something went wrong: '1 + 1'" |> (2 `lt` (1 + 1)) 66 67@Test 68def testLt03(): Bool = 69 use FlixAssertion.{lt, <|}; 70 (2 `lt` (1 + 1)) <| "Something went wrong: '1 + 1'" 71 72@Test 73def testLt04(): Bool = 74 use FlixAssertion.{$<, <|}; 75 (2 $< (1 + 1)) <| "Something went wrong: '1 + 1'" 76 77// The same test in 4 different versions ======================================= 78// `FlixAssertion.lte` 79 80@Test 81def testLte01(): Bool = 82 FlixAssertion.lte(3, 1 + 1, "Something went wrong: '1 + 1'") 83 84@Test 85def testLte02(): Bool = 86 use FlixAssertion.{lte}; 87 "Something went wrong: '1 + 1'" |> (3 `lte` (1 + 1)) 88 89@Test 90def testLte03(): Bool = 91 use FlixAssertion.{lte, <|}; 92 (3 `lte` (1 + 1)) <| "Something went wrong: '1 + 1'" 93 94@Test 95def testLte04(): Bool = 96 use FlixAssertion.{$<=, <|}; 97 (3 $<= (1 + 1)) <| "Something went wrong: '1 + 1'" 98 99// The same test in 4 different versions ======================================= 100// `FlixAssertion.gt` 101 102@Test 103def testGt01(): Bool = 104 FlixAssertion.gt(2, 1 + 1, "Something went wrong: '1 + 1'") 105 106@Test 107def testGt02(): Bool = 108 use FlixAssertion.{gt}; 109 "Something went wrong: '1 + 1'" |> (2 `gt` (1 + 1)) 110 111@Test 112def testGt03(): Bool = 113 use FlixAssertion.{gt, <|}; 114 (2 `gt` (1 + 1)) <| "Something went wrong: '1 + 1'" 115 116@Test 117def testGt04(): Bool = 118 use FlixAssertion.{$>, <|}; 119 (2 $> (1 + 1)) <| "Something went wrong: '1 + 1'" 120 121// The same test in 4 different versions ======================================= 122// `FlixAssertion.gte` 123 124@Test 125def testGte01(): Bool = 126 FlixAssertion.gte(1, 1 + 1, "Something went wrong: '1 + 1'") 127 128@Test 129def testGte02(): Bool = 130 use FlixAssertion.{gte}; 131 "Something went wrong: '1 + 1'" |> (1 `gte` (1 + 1)) 132 133@Test 134def testGte03(): Bool = 135 use FlixAssertion.{gte, <|}; 136 (1 `gte` (1 + 1)) <| "Something went wrong: '1 + 1'" 137 138@Test 139def testGte04(): Bool = 140 use FlixAssertion.{$>=, <|}; 141 (1 $>= (1 + 1)) <| "Something went wrong: '1 + 1'" 142 143// End: the same test in 4 different versions ================================== 144 145@Test 146def testContainsString(): Bool = 147 FlixAssertion.containsString("subString", 148 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean et est a dui semper facilisis. Pellentesque placerat elit a nunc. Nullam tortor odio, rutrum quis, egestas ut, posuere sed, felis. Vestibulum placerat feugiat nisl. Suspendisse lacinia, odio non feugiat vestibulum, sem erat blandit metus, ac nonummy magna odio pharetra felis. Vivamus vehicula velit non metus faucibus auctor. Nam sed augue. Donec orci. Cras eget diam et dolor dapibus sollicitudin. In lacinia, tellus vitae laoreet ultrices, lectus ligula dictum dui, eget condimentum velit dui vitae ante. Nulla nonummy augue nec pede. Pellentesque ut nulla. Donec at libero. Pellentesque at nisl ac nisi fermentum viverra. Praesent odio. Phasellus tincidunt diam ut ipsum. Donec eget est.", 149 "Substring not found! :(") 150 151@Test 152def testNotContainsString(): Bool = 153 FlixAssertion.notContainsString("facilisis", 154 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean et est a dui semper facilisis. Pellentesque placerat elit a nunc. Nullam tortor odio, rutrum quis, egestas ut, posuere sed, felis. Vestibulum placerat feugiat nisl. Suspendisse lacinia, odio non feugiat vestibulum, sem erat blandit metus, ac nonummy magna odio pharetra felis. Vivamus vehicula velit non metus faucibus auctor. Nam sed augue. Donec orci. Cras eget diam et dolor dapibus sollicitudin. In lacinia, tellus vitae laoreet ultrices, lectus ligula dictum dui, eget condimentum velit dui vitae ante. Nulla nonummy augue nec pede. Pellentesque ut nulla. Donec at libero. Pellentesque at nisl ac nisi fermentum viverra. Praesent odio. Phasellus tincidunt diam ut ipsum. Donec eget est.", 155 "Substring found! :(") 156 157@Test 158def testMatchesString(): Bool = 159 FlixAssertion.matchesString("ipsum.*", 160 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean et est a dui semper facilisis. Pellentesque placerat elit a nunc. Nullam tortor odio, rutrum quis, egestas ut, posuere sed, felis. Vestibulum placerat feugiat nisl. Suspendisse lacinia, odio non feugiat vestibulum, sem erat blandit metus, ac nonummy magna odio pharetra felis. Vivamus vehicula velit non metus faucibus auctor. Nam sed augue. Donec orci. Cras eget diam et dolor dapibus sollicitudin. In lacinia, tellus vitae laoreet ultrices, lectus ligula dictum dui, eget condimentum velit dui vitae ante. Nulla nonummy augue nec pede. Pellentesque ut nulla. Donec at libero. Pellentesque at nisl ac nisi fermentum viverra. Praesent odio. Phasellus tincidunt diam ut ipsum. Donec eget est.", 161 "Regex does not match! :(") 162 163@Test 164def testNotMatchesString(): Bool = 165 FlixAssertion.notMatchesString("Lorem.*est.", 166 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean et est a dui semper facilisis. Pellentesque placerat elit a nunc. Nullam tortor odio, rutrum quis, egestas ut, posuere sed, felis. Vestibulum placerat feugiat nisl. Suspendisse lacinia, odio non feugiat vestibulum, sem erat blandit metus, ac nonummy magna odio pharetra felis. Vivamus vehicula velit non metus faucibus auctor. Nam sed augue. Donec orci. Cras eget diam et dolor dapibus sollicitudin. In lacinia, tellus vitae laoreet ultrices, lectus ligula dictum dui, eget condimentum velit dui vitae ante. Nulla nonummy augue nec pede. Pellentesque ut nulla. Donec at libero. Pellentesque at nisl ac nisi fermentum viverra. Praesent odio. Phasellus tincidunt diam ut ipsum. Donec eget est.", 167 "Regex does match! :(") 168 169@Test 170def testMatchesSubString(): Bool = 171 FlixAssertion.matchesSubString("[0-9]+", 172 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean et est a dui semper facilisis. Pellentesque placerat elit a nunc. Nullam tortor odio, rutrum quis, egestas ut, posuere sed, felis. Vestibulum placerat feugiat nisl. Suspendisse lacinia, odio non feugiat vestibulum, sem erat blandit metus, ac nonummy magna odio pharetra felis. Vivamus vehicula velit non metus faucibus auctor. Nam sed augue. Donec orci. Cras eget diam et dolor dapibus sollicitudin. In lacinia, tellus vitae laoreet ultrices, lectus ligula dictum dui, eget condimentum velit dui vitae ante. Nulla nonummy augue nec pede. Pellentesque ut nulla. Donec at libero. Pellentesque at nisl ac nisi fermentum viverra. Praesent odio. Phasellus tincidunt diam ut ipsum. Donec eget est.", 173 "Regex does not match! :(") 174 175@Test 176def testNotMatchesSubString(): Bool = 177 FlixAssertion.notMatchesSubString("\\S+", 178 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean et est a dui semper facilisis. Pellentesque placerat elit a nunc. Nullam tortor odio, rutrum quis, egestas ut, posuere sed, felis. Vestibulum placerat feugiat nisl. Suspendisse lacinia, odio non feugiat vestibulum, sem erat blandit metus, ac nonummy magna odio pharetra felis. Vivamus vehicula velit non metus faucibus auctor. Nam sed augue. Donec orci. Cras eget diam et dolor dapibus sollicitudin. In lacinia, tellus vitae laoreet ultrices, lectus ligula dictum dui, eget condimentum velit dui vitae ante. Nulla nonummy augue nec pede. Pellentesque ut nulla. Donec at libero. Pellentesque at nisl ac nisi fermentum viverra. Praesent odio. Phasellus tincidunt diam ut ipsum. Donec eget est.", 179 "Regex does match! :(") 180 181@Test 182def testContains01(): Bool = 183 use FlixAssertion.{contains, <|}; 184 (Map#{"foo" => 12, "bar" => 42} `contains` 43) <| "Does Map contain 43?" 185 186@Test 187def testNotContains01(): Bool = 188 use FlixAssertion.{notContains, <|}; 189 (Map#{"foo" => 12, "bar" => 42} `notContains` 42) <| "Does Map not contain 42?" 190 191@Test 192def testContainsEff01(): Bool = 193 region r { 194 let set = MutSet.new(r); 195 MutSet.add!(5, set); 196 MutSet.add!(2, set); 197 FlixAssertion.containsEff(set, 43, "Does MutSet contain 43?", MutSet.toString) 198 } 199 200@Test 201def testNotContainsEff01(): Bool = 202 region r { 203 let set = MutSet.new(r); 204 MutSet.add!(5, set); 205 MutSet.add!(42, set); 206 FlixAssertion.notContainsEff(set, 42, "Does MutSet not contain 42?", MutSet.toString) 207 } 208 209@Test 210def testEmpty01(): Bool = 211 FlixAssertion.isEmpty(1 :: Nil, "This should be empty!") 212 213@Test 214def testNotEmpty01(): Bool = 215 FlixAssertion.isNotEmpty(Vector#{}: Vector[Int32], "This should not be the empty vector!") 216 217@Test 218def testEmptyEff01(): Bool = 219 region r { 220 FlixAssertion.isEmptyEff(Array#{1, 2} @ r, "This should be empty!", Array.toString) 221 } 222 223@Test 224def testNotEmptyEff01(): Bool = 225 region r { 226 let emptyList = MutList.new(r): MutList[Int32, r]; 227 FlixAssertion.isNotEmptyEff(emptyList, "This should not be the empty MutList!", MutList.toString) 228 } 229 230pub def main(): Unit \ IO = println("main")