diff options
Diffstat (limited to 'main.roc')
-rw-r--r-- | main.roc | 44 |
1 files changed, 43 insertions, 1 deletions
@@ -25,10 +25,52 @@ expect res == Ok (Str.toUtf8 "foo") expect - errCases = ["foo", "1:foo", "4:foo", ":", "foo:", "1:", "::"] + errCases = [ + "", + "foo", + "1:foo", + "4:foo", + ":", + "foo:", + "1:", + "::", + ] List.all errCases \t -> res = bDecodeStr (Str.toUtf8 t) res == Err Malformatted +bDecodeNum: List U8 -> Result I64 [Malformatted] +bDecodeNum = \i -> + when i is + ['i', .., 'e'] -> + ii = List.sublist i {start: 1, len: ((List.len i) - 2)} + when (Str.fromUtf8 ii) is + Ok iii -> + when (Str.toI64 iii) is + Ok res -> Ok res + Err _err -> Err Malformatted + Err _err -> Err Malformatted + _ -> Err Malformatted + +expect + res = bDecodeNum (Str.toUtf8 "i32e") + res == Ok 32i64 + +expect + errCases = [ + "", + "foo", + "i32", + "32e", + "ifooe", + "ie", + "i", + "e", + "i522222222222222222343423432434322e", + ] + List.all errCases \t -> + res = bDecodeNum (Str.toUtf8 t) + res == Err Malformatted + main = Stdout.line "Hello, World" |