diff options
Diffstat (limited to 'test/optionals.tm')
| -rw-r--r-- | test/optionals.tm | 128 |
1 files changed, 118 insertions, 10 deletions
diff --git a/test/optionals.tm b/test/optionals.tm index 5f6fb78a..d8cbf741 100644 --- a/test/optionals.tm +++ b/test/optionals.tm @@ -1,15 +1,123 @@ +func maybe_int(should_i:Bool)->Int?: + if should_i: + return 123 + else: + return !Int -func main(): - >> opt := @5? - when opt is @nonnull: - >> nonnull[] - = 5 +func maybe_array(should_i:Bool)->[Int]?: + if should_i: + return [10, 20, 30] + else: + return ![Int] + +func maybe_bool(should_i:Bool)->Bool?: + if should_i: + return no + else: + return !Bool + +func maybe_text(should_i:Bool)->Text?: + if should_i: + return "Hello" + else: + return !Text + +func maybe_num(should_i:Bool)->Num?: + if should_i: + return 12.3 else: - fail("Oops") + return !Num - >> opt = !@Int - when opt is @nonnull: - fail("Oops") +func maybe_lambda(should_i:Bool)-> func()?: + if should_i: + return func(): say("hi!") else: - >> opt + return !func() + +func main(): + >> 5? + = 5? : Int? + + >> if no: + !Int + else: + 5 + = 5? : Int? + + do: + !! Ints: + >> yep := maybe_int(yes) + = 123? + >> nope := maybe_int(no) = !Int + >> if yep: >> yep + else: fail("Falsey: $yep") + >> if nope: + fail("Truthy: $nope") + else: !! Falsey: $nope + + do: + !! ... + !! Arrays: + >> yep := maybe_array(yes) + = [10, 20, 30]? + >> nope := maybe_array(no) + = ![Int] + >> if yep: >> yep + else: fail("Falsey: $yep") + >> if nope: + fail("Truthy: $nope") + else: !! Falsey: $nope + + do: + !! ... + !! Bools: + >> yep := maybe_bool(yes) + = no? + >> nope := maybe_bool(no) + = !Bool + >> if yep: >> yep + else: fail("Falsey: $yep") + >> if nope: + fail("Truthy: $nope") + else: !! Falsey: $nope + + do: + !! ... + !! Text: + >> yep := maybe_text(yes) + = "Hello"? + >> nope := maybe_text(no) + = !Text + >> if yep: >> yep + else: fail("Falsey: $yep") + >> if nope: + fail("Truthy: $nope") + else: !! Falsey: $nope + + do: + !! ... + !! Nums: + >> yep := maybe_num(yes) + = 12.3? + >> nope := maybe_num(no) + = !Num + >> if yep: >> yep + else: fail("Falsey: $yep") + >> if nope: + fail("Truthy: $nope") + else: !! Falsey: $nope + + do: + !! ... + !! Lambdas: + >> yep := maybe_lambda(yes) + = func(): ...? + >> nope := maybe_lambda(no) + = !func() + >> if yep: >> yep + else: fail("Falsey: $yep") + >> if nope: + fail("Truthy: $nope") + else: !! Falsey: $nope + |
