Charj: improve unit tests
authorAaron Becker <akbecker@gmail.com>
Mon, 11 Apr 2011 20:38:37 +0000 (15:38 -0500)
committerAaron Becker <akbecker@gmail.com>
Mon, 11 Apr 2011 21:01:41 +0000 (16:01 -0500)
src/langs/charj/tests/run_tests.sh
src/langs/charj/tests/unit/Assert.cj
src/langs/charj/tests/unit/FieldModifiers.cj
src/langs/charj/tests/unit/FieldModifiersFailure.cj [new file with mode: 0644]
src/langs/charj/tests/unit/FuncArgs.cj
src/langs/charj/tests/unit/Main.cj
src/langs/charj/tests/unit/ObjectField.cj

index c8b7fb5ced4b2d8a5ded75f704bb22c469741934..aa71cf935be9e9f23ecfce47c4269868bfb22679 100755 (executable)
@@ -1,8 +1,11 @@
-#!/bin/sh
+#!/bin/bash
 
 tests=0
 passed_tests=0
 
+BASE_DIR=`pwd`
+CHARJC="$BASE_DIR/../bin/charjc"
+
 function test_file() {
     tests=`expr $tests + 1`
     file="$1"
@@ -12,13 +15,13 @@ function test_file() {
         EXPECT="failure"
     fi
 
-    echo "Test $tests: $file" >> run_tests.log
+    echo "Test $tests: $file" >> $BASE_DIR/run_tests.log
     RESULT="success"
-    ../bin/charjc $file &> run_tests.log.tmp
+    $CHARJC $file &> run_tests.log.tmp
     if [ "$?" -ne "0" ]; then
         RESULT="failure"
     fi
-    cat run_tests.log.tmp >> run_tests.log
+    cat run_tests.log.tmp >> $BASE_DIR/run_tests.log
     rm run_tests.log.tmp
 
     PASS="FAIL"
@@ -27,14 +30,18 @@ function test_file() {
         passed_tests=`expr $passed_tests + 1`
     fi
     echo "$PASS" >> run_tests.log
-    printf "Testing %s, expected %s...%s\n" `basename $file` $EXPECT $PASS
+    printf "Testing %s...%s\n" `basename $file` $PASS
 }
 
 rm -f run_tests.log
 TESTDIRS="unit"
-TESTFILES=`find $TESTDIRS -name "*.cj"`
-for f in $TESTFILES; do
-    test_file "$f"
+for dir in $TESTDIRS; do
+    pushd $dir > /dev/null
+    rm -rf *.gen *.decl.h
+    for file in `find . -name "*.cj"`; do
+        test_file "$file"
+    done
+    popd > /dev/null
 done
 echo "Passed $passed_tests/$tests tests"
 
index 7bef533bc4d95b157c8c6ddfb93b740fb20ccda9..7b614b2508753f61893de329abfac56b92865c19 100644 (file)
@@ -2,6 +2,8 @@ package tests.unit;
 
 public class Assert {
     void test() {
+        int x = 1;
+        assert x == 1;
         assert 1 == 1;
         assert 1 == 1: "one equals one";
         assert 1 == 2;
index c1958d654febe0e4c279bd2c4ca363eaf51ab158..27174e200e3fa6880d171b45cee0d313d7c270c2 100644 (file)
@@ -9,8 +9,4 @@ public class FieldModifiers {
     volatile int m;
     protected int n;
     final int r;
-// should fail
-    entry int o; 
-    abstract int p; 
-    transient int q;
 }
diff --git a/src/langs/charj/tests/unit/FieldModifiersFailure.cj b/src/langs/charj/tests/unit/FieldModifiersFailure.cj
new file mode 100644 (file)
index 0000000..64a3a8b
--- /dev/null
@@ -0,0 +1,17 @@
+// expect failure
+package tests.unit;
+
+public class FieldModifiers {
+    int z;
+    public int i;
+    private int j;
+    static int k;
+    public static int l;
+    volatile int m;
+    protected int n;
+    final int r;
+// should fail
+    entry int o; 
+    abstract int p; 
+    transient int q;
+}
index bfb75f87cf37eb0774af9e98de8d472f0a24ecc2..4c466858f499099c9f836925cd345c6999a8e16c 100644 (file)
@@ -1,10 +1,14 @@
 package tests.unit;
 
+public class Foo {
+}
+
 public class FuncArgs {
     void test() {
-        a1(1);
-        a2(a1(2), 2);
+        Foo f;
+        a1(f);
+        a2(a1(f), 2);
     }
-    int a1(MadeUpType x) {}
+    int a1(Foo x) { return 0; }
     void a2(int x, float y) {}
 }
index e42dc45062c256d9bf1888fff04a3afeb0086ed9..67708ad2559f5b1f96a3241a17c132ea672c28e5 100644 (file)
@@ -2,7 +2,7 @@
 package tests.unit;
 
 mainchare Main {
-    public entry Main() {
+    public entry Main(CkArgMsg args) {
     }
 
     public entry void run_tests() {
index 6a5da524c3f665b88948128204bd9ca66953c834..59df4be3161d4118ce6d195e995e99ca8f2d5eb2 100644 (file)
@@ -18,7 +18,7 @@ public class SimpleClass {
         m.property++;
         m.property = 0;
         m.foo.property++;
-        method1(m.property, m.foo);
+        method2(m.property, m.foo);
         //Foo n = new Foo(m.foo.property);
         //this.method(m.property);
         //method(n.property);