Initial import
[jpf-core.git] / src / tests / gov / nasa / jpf / test / basic / HarnessTest.java
1 /*
2  * Copyright (C) 2014, United States Government, as represented by the
3  * Administrator of the National Aeronautics and Space Administration.
4  * All rights reserved.
5  *
6  * The Java Pathfinder core (jpf-core) platform is licensed under the
7  * Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  * 
10  *        http://www.apache.org/licenses/LICENSE-2.0. 
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and 
16  * limitations under the License.
17  */
18
19 package gov.nasa.jpf.test.basic;
20
21 import gov.nasa.jpf.JPF;
22 import gov.nasa.jpf.util.TypeRef;
23 import gov.nasa.jpf.util.test.TestJPF;
24
25 import org.junit.Test;
26
27 /**
28  * basic test to test the test harness
29  */
30 public class HarnessTest extends TestJPF {
31
32   int d;
33
34   @Test
35   public void noViolation() {
36     if (verifyNoPropertyViolation()) {
37       d += 42;
38
39       System.out.println("** this is noViolation() - it should succeed");
40     }
41   }
42
43   @Test
44   public void verifyAssert() {
45     if (verifyAssertionErrorDetails("java.lang.AssertionError : wrong answer..")) {
46       System.out.println("** this is verifyAssert() - JPF should find an AssertionError");
47
48       assert d == 42 : "wrong answer..";
49     }
50   }
51
52   @Test
53   public void verifyNullPointerException() {
54     if (verifyUnhandledException("java.lang.NullPointerException")) {
55       System.out.println("** this is verifyNullPointerException() - JPF should find an NPE");
56
57       String s = null;
58
59       s.length();
60     }
61   }
62
63   @Test
64   public void verifyRuntimeException() {
65     if (verifyPropertyViolation(new TypeRef("gov.nasa.jpf.vm.NoUncaughtExceptionsProperty"))) {
66       System.out.println("** this is verifyRuntimeException() - JPF should find an unhandled exception");
67
68       throw new RuntimeException("Bang!");
69     }
70   }
71
72   @Test
73   public void verifyJPFExcept() {
74     if (verifyJPFException(new TypeRef("gov.nasa.jpf.JPFConfigException"), "+vm.class=InvalidVMClass", "+pass_exceptions")) {
75       fail("** JPF should not run");
76     }
77   }
78
79   // low level TestJPF API test
80   @Test
81   public void testLowLevelAPI() {
82     
83     JPF jpf = noPropertyViolation();
84
85     if (jpf == null) {
86       System.out.println("** this is low level API test - it should succeed");
87     } else {
88       assert jpf.getSearchErrors().isEmpty() : "unexpected JPF search errors";
89     }
90   }
91 }