Fixed behavior of division by 0 on doubles (should be Infinity), added tests.
authorCyrille Artho <artho@kth.se>
Fri, 23 Nov 2018 12:50:45 +0000 (13:50 +0100)
committerCyrille Artho <artho@kth.se>
Fri, 23 Nov 2018 12:50:45 +0000 (13:50 +0100)
src/main/gov/nasa/jpf/jvm/bytecode/DDIV.java
src/tests/gov/nasa/jpf/test/java/lang/DoubleTest.java [new file with mode: 0644]
src/tests/gov/nasa/jpf/test/java/lang/FloatTest.java [new file with mode: 0644]

index c14099be1e54b550c0025fcfbd141ca2dc014957..10397d888aa9918be46ad6f1d802e6f67b098173 100644 (file)
@@ -34,11 +34,6 @@ public class DDIV extends Instruction implements JVMInstruction {
 
     double v1 = frame.popDouble();
     double v2 = frame.popDouble();
 
     double v1 = frame.popDouble();
     double v2 = frame.popDouble();
-    
-    if (v1 == 0) {
-        return ti.createAndThrowException("java.lang.ArithmeticException",
-                                          "division by zero");
-    }
 
     double r = v2 / v1;
     
 
     double r = v2 / v1;
     
diff --git a/src/tests/gov/nasa/jpf/test/java/lang/DoubleTest.java b/src/tests/gov/nasa/jpf/test/java/lang/DoubleTest.java
new file mode 100644 (file)
index 0000000..9930f81
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2018, United States Government, as represented by the
+ * Administrator of the National Aeronautics and Space Administration.
+ * All rights reserved.
+ *
+ * The Java Pathfinder core (jpf-core) platform is licensed under the
+ * Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ * 
+ *        http://www.apache.org/licenses/LICENSE-2.0. 
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+
+package gov.nasa.jpf.test.java.lang;
+
+import gov.nasa.jpf.util.test.TestJPF;
+
+import org.junit.Test;
+
+/**
+ * double related tests
+ */
+public class DoubleTest extends TestJPF {
+
+  @Test
+  public void testDivision() {
+    if (verifyNoPropertyViolation()) {
+      double i = 0;
+      double j = 10 / i;
+      assert(Double.valueOf(j).isInfinite());
+    }
+  }
+}
diff --git a/src/tests/gov/nasa/jpf/test/java/lang/FloatTest.java b/src/tests/gov/nasa/jpf/test/java/lang/FloatTest.java
new file mode 100644 (file)
index 0000000..194e236
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2018, United States Government, as represented by the
+ * Administrator of the National Aeronautics and Space Administration.
+ * All rights reserved.
+ *
+ * The Java Pathfinder core (jpf-core) platform is licensed under the
+ * Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ * 
+ *        http://www.apache.org/licenses/LICENSE-2.0. 
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+
+package gov.nasa.jpf.test.java.lang;
+
+import gov.nasa.jpf.util.test.TestJPF;
+
+import org.junit.Test;
+
+/**
+ * float related tests
+ */
+public class FloatTest extends TestJPF {
+
+  @Test
+  public void testDivision() {
+    if (verifyNoPropertyViolation()) {
+      float i = 0;
+      float j = 10 / i;
+      assert(Float.valueOf(j).isInfinite());
+    }
+  }
+}