History

Implemented some tests

Dmitry Kabak (userdima committed 13 years ago

Commit 3968fd71 parent e14eff611 files · +289 −0Browse files

Showing the changes to java (11 of 11 files). Show all

Unified · Split

11 files
  1. java/tests/InnerClassTest.java +56 −0
  2. java/tests/MathTest.java +14 −0
  3. java/tests/README +13 −0
  4. java/tests/SystemIOTest.java +8 −0
  5. java/tests/ThreadTest.java +61 −0
  6. java/tests/itests/common.sh +28 −0
  7. java/tests/itests/t.sh.template +4 −0
  8. java/tests/itests/tests +1 −0
  9. java/tests/mkfile +24 −0
  10. java/tests/utils/Utils.java +61 −0
  11. java/tests/utils/mkfile +19 −0
java/tests/InnerClassTest.java+56−0
@@ -0,0 +1,56 @@
1
2import static utils.Utils.*;
3
4public class InnerClassTest {
5
6 class TestSuperClass {
7 private long privateField;
8 protected int protectedField = 13;
9 public float publicField;
10
11 private void privateFunction() {
12 publicField = protectedField + privateField;
13 }
14 protected int protectedFunction() {
15 privateField = 42;
16 return protectedField;
17 }
18 public boolean publicFunction() {
19 protectedFunction();
20 privateFunction();
21 return true;
22 }
23 }
24
25 class TestDerivedClass extends TestSuperClass {
26 protected int protectedFunction() {
27 protectedField = 44;
28 return protectedField;
29 }
30 public boolean publicFunction() {
31 super.publicFunction();
32 return false;
33 }
34 }
35
36 public void runTests() {
37 TestSuperClass test1 = new TestSuperClass();
38 assertEquals(0.0, test1.publicField);
39 test1.publicField = 6.0f * 9.0f;
40 assertEquals(54.0, test1.publicField);
41 assertEquals(true, test1.publicFunction());
42 assertEquals(55.0, test1.publicField);
43
44 TestDerivedClass test2 = new TestDerivedClass();
45 assertEquals(0.0, test2.publicField);
46 test2.publicField = 6.0f * 8.0f;
47 assertEquals(48.0, test2.publicField);
48 assertEquals(false, test2.publicFunction());
49 assertEquals(44.0, test2.publicField);
50 }
51
52 public static void main(String[] args) {
53 InnerClassTest test = new InnerClassTest();
54 test.runTests();
55 }
56}
java/tests/MathTest.java+14−0
@@ -0,0 +1,14 @@
1
2import static utils.Utils.*;
3import java.lang.Math;
4
5public class MathTest {
6
7 public static void main(String[] args) {
8 assertEquals(42, 6 * 7);
9 assertEquals(0.5, 1.0 / 2);
10 assertEquals(1, Math.sqrt(1));
11 assertEquals(3, Math.sqrt(9));
12 assertEquals(82.5, 6 * 7 / 1 + 45 - 9.0 / 2);
13 }
14}
java/tests/README+13−0
@@ -0,0 +1,13 @@
1This folder contains some jvm tests.
2
3These simple pieces of code try to check some basic jvm
4and jcl features. They are currently using mkfiles as
5tests platform, but may later use Inferno's itest.
6
7Currently tests are defined in mkfile, in TESTS var.
8Every test consists of runnable java class.
9
10Useful commands:
11 mk, or mk tests: compiles and runs all the tests
12 mk test-%test name%: run some specific test
13 mk clean: clean-up all binary and debug files
java/tests/SystemIOTest.java+8−0
@@ -0,0 +1,8 @@
1
2public class SystemIOTest {
3
4 public static void main(String[] args) {
5 System.out.println("System.out stream test");
6 System.err.println("System.err stream test");
7 }
8}
java/tests/ThreadTest.java+61−0
@@ -0,0 +1,61 @@
1
2import static utils.Utils.*;
3
4public class ThreadTest {
5
6 private static class Integer {
7 private int data;
8
9 Integer(int data) {
10 this.data = data;
11 }
12
13 int getData() {
14 return data;
15 }
16
17 void setData(int data) {
18 this.data = data;
19 }
20
21 }
22
23 public static void main(String[] args) throws InterruptedException {
24 final Integer var = new Integer(0);
25 Thread testThread = new Thread(new Runnable() {
26 @Override
27 public void run() {
28 var.setData(42);
29 }
30 });
31 testThread.start();
32 testThread.join();
33 assertEquals(42, var.getData());
34
35 Thread testThread1 = new Thread(new Runnable() {
36 @Override
37 public void run() {
38 for (int i = 0; i < 2000; i++) {
39 synchronized (var) {
40 var.setData(var.getData() + 1);
41 }
42 }
43 }
44 });
45 Thread testThread2 = new Thread(new Runnable() {
46 @Override
47 public void run() {
48 for (int i = 0; i < 1000; i++) {
49 synchronized (var) {
50 var.setData(var.getData() - 1);
51 }
52 }
53 }
54 });
55 testThread1.start();
56 testThread2.start();
57 testThread1.join();
58 testThread2.join();
59 assertEquals(1042, var.getData());
60 }
61}
java/tests/itests/common.sh+28−0
@@ -0,0 +1,28 @@
1#!/dis/sh
2
3load std test
4
5ROOT=/Users/zubr/dev/distributed/inferno-java
6JAVAC=os -d $ROOT`{pwd} javac
7
8subfn test-name {
9 result=SystemIOTest
10}
11
12fn compile-test {
13 report INF 7 'Compiling test $1'
14 $JAVAC $1.java
15 for c in $1^*.class {java/j2d -g $c}
16}
17fn clean-test {
18 report INF 7 'Cleaning test $1'
19 rm *.dis *.s *.class
20}
21fn run-test {
22 report INF 7 'Running test $1'
23 java/jvm $1
24}
25
26test := ${test-name}
27compile-test $test
28#run-test $test
java/tests/itests/t.sh.template+4−0
@@ -0,0 +1,4 @@
1#!/dis/sh
2
3# Common init, compile and run test
4run ../common.sh
java/tests/itests/tests+1−0
@@ -0,0 +1 @@
1
java/tests/mkfile+24−0
@@ -0,0 +1,24 @@
1<../../mkconfig
2ROOT=/Users/zubr/dev/distributed/inferno-java
3
4TESTS= SystemIOTest\
5 MathTest\
6 InnerClassTest\
7 ThreadTest\
8
9OBJ=${TESTS:%=test-%}
10JAVAC=os -d $ROOT`{pwd} javac
11
12tests:QV: utils $OBJ
13
14utils:QV:
15 @{builtin cd utils; mk $MKFLAGS}
16
17test-%:QV:
18 $JAVAC $stem.java
19 for c in $stem*.class {java/j2d -g $c}
20 java/jvm $stem
21 echo $stem passed!
22
23clean:QV:
24 rm *.dis *.class *.sbl
java/tests/utils/Utils.java+61−0
@@ -0,0 +1,61 @@
1
2package utils;
3
4public class Utils {
5
6 public static class AssertionFailedException extends java.lang.RuntimeException {
7 public AssertionFailedException(String msg) {
8 super(msg);
9 System.err.println("Asserion failed: " + msg);
10 }
11 }
12
13 private Utils() {
14 }
15
16 public static void assertEquals(int expected, int found) throws AssertionFailedException {
17 assertEquals(expected, found, "expected " + expected + " but found " + found);
18 }
19 public static void assertEquals(int expected, int found, String msg) throws AssertionFailedException {
20 if (expected != found)
21 throw new AssertionFailedException(msg);
22 }
23
24
25 public static void assertEquals(long expected, long found) throws AssertionFailedException {
26 assertEquals(expected, found, "expected " + expected + " but found " + found);
27 }
28 public static void assertEquals(long expected, long found, String msg) throws AssertionFailedException {
29 if (expected != found)
30 throw new AssertionFailedException(msg);
31 }
32
33 public static void assertEquals(float expected, float found) throws AssertionFailedException {
34 assertEquals(expected, found, "expected " + expected + " but found " + found);
35 }
36 public static void assertEquals(float expected, float found, String msg) throws AssertionFailedException {
37 if (expected != found)
38 throw new AssertionFailedException(msg);
39 }
40
41 public static void assertEquals(double expected, double found) throws AssertionFailedException {
42 assertEquals(expected, found, "expected " + expected + " but found " + found);
43 }
44 public static void assertEquals(double expected, double found, String msg) throws AssertionFailedException {
45 if (expected != found)
46 throw new AssertionFailedException(msg);
47 }
48
49 public static void assertEquals(Object expected, Object found) throws AssertionFailedException {
50 assertEquals(expected, found, "expected " + expected + " but found " + found);
51 }
52 public static void assertEquals(Object expected, Object found, String msg) throws AssertionFailedException {
53 if (!expected.equals(found))
54 throw new AssertionFailedException(msg);
55 }
56
57 public static void main(String[] args) {
58 // This is only for convenience, so that
59 // test system may assume this is also a test
60 }
61}
java/tests/utils/mkfile+19−0
@@ -0,0 +1,19 @@
1<../../../mkconfig
2ROOT=/Users/zubr/dev/distributed/inferno-java
3
4UTILS= Utils\
5
6OBJ=${UTILS:%=%.dis}
7JAVAC=os -d $ROOT`{pwd} javac
8
9all:QV: $OBJ
10 echo Compiled test utils
11
12%.dis:QE: %.class
13 for c in $stem*.class {java/j2d -g $c}
14
15%.class:Q: %.java
16 $JAVAC $stem.java
17
18clean:QV:
19 rm *.dis *.class *.sbl