]> ocean-lang.org Git - ocean/blobdiff - csrc/oceani-tests.mdc
oceani: handle some more untested code.
[ocean] / csrc / oceani-tests.mdc
index 6d513487e619bc695ed3b25fd6048c789971a745..4e9f4e388ea123f0c457c97830f6818df8db799f 100644 (file)
@@ -97,7 +97,7 @@ arguments separated from the name by commas.  For each test, there is a section
                ## valgrind test code
                @[ -n "$$SKIP_COVERAGE_CHECK" ] || awk '/NOTEST/ { next } /^ *[1-9]/ {ran+=1} /^ *###/ {skip+=1} \
                    END {printf "coverage: %6.2f%%\n", ran * 100 / (ran + skip); \
-                        if (ran < (ran + skip) *0.98) exit(1) }' \
+                        if (ran < (ran + skip) *0.99) exit(1) }' \
                        coverage/oceani.mdc.gcov
 
        coverage_oceani: oceani.c
@@ -221,12 +221,11 @@ Test merging of variables from multiple cases
                print
 
                for i:=0; then i=i+1; while i < 5:
-                       switch i:
-                               case 0: num:="zero"
-                               case 1: num:="one"
-                               case 2: num:="two"
-                               case 3: num:="three"
-                               else    num:="many"
+                       switch { use i }
+                               case 0: num:="zero" ;
+                               case 1: num:="one" ;
+                               case 2 { num:="two" } case 3 { num:="three" }
+                               else  num:="many"
                        // re-declare a CondScope variable
                        num := i*i
                        print num,", ",
@@ -904,6 +903,7 @@ various places that `type_err()` are called.
                a:number = 4
                a ::number = 5
                c:
+               d:number = 02
 
 ###### output: type_err2
        .tmp.code:4:8: error: variable 'a' redeclared
@@ -915,12 +915,13 @@ various places that `type_err()` are called.
        .tmp.code:7:8: error: variable 'a' redeclared
        .tmp.code:3:8: info: this is where 'a' was first declared
        .tmp.code:8:8: Variable declared with no type or value: c
+       .tmp.code:9:19: error: unsupported number format: 02
 
 ###### test: type_err3
 
        struct foo
                a: number
-               b:string = "hello"
+               b:string = "hello"; d:Boolean
 
        func main()
                c := "hello"
@@ -961,6 +962,12 @@ various places that `type_err()` are called.
 
                x:Boolean = $"42"
 
+               five ::= 5
+               four ::= 4
+               x1:[five]number
+               x2:[four]number
+               x1 = x2
+
 ###### output: type_err3
        .tmp.code:8:12: error: expected number but variable 'c' is string
        .tmp.code:7:8: info: this is where 'c' was set to string
@@ -999,6 +1006,10 @@ various places that `type_err()` are called.
        .tmp.code:41:29: error: string cannot provide length
        .tmp.code:43:21: error: Can only convert string to number, not Boolean
        .tmp.code:43:8: info: variable 'x' was set as Boolean here.
+       .tmp.code:49:13: error: expected [five]number but variable 'x2' is [four]number
+       .tmp.code:48:8: info: this is where 'x2' was set to [four]number
+       .tmp.code:49:8: error: cannot assign value of type [five]number
+       .tmp.code:47:8: info: variable 'x1' was set as [five]number here.
        oceani: type error in program - not running.
 
 ###### test: type_err4
@@ -1021,10 +1032,12 @@ various places that `type_err()` are called.
                b:string
        struct foo
                c:number
+               x:[5]:string
 
 ###### output: type_err5
        .tmp.code:8:7: error: type already declared: foo
        .tmp.code:2:7: info: this is location of declartion: foo
+       .tmp.code:10:13: Syntax error in struct field: :
        .tmp.code:5:7: error: type has recursive definition: baz
        .tmp.code:2:7: error: type has recursive definition: foo