diff --git a/prism/src/parser/ast/Property.java b/prism/src/parser/ast/Property.java index ce8c1c23..56423fce 100644 --- a/prism/src/parser/ast/Property.java +++ b/prism/src/parser/ast/Property.java @@ -229,8 +229,12 @@ public class Property extends ASTElement // Parse expected result double doubleExp; try { + // See if it's NaN + if (strExpected.equals("NaN")) { + doubleExp = Double.NaN; + } // See if it's a fraction - if (strExpected.matches("[0-9]+/[0-9]+")) { + else if (strExpected.matches("[0-9]+/[0-9]+")) { int numer = Integer.parseInt(strExpected.substring(0, strExpected.indexOf('/'))); int denom = Integer.parseInt(strExpected.substring(strExpected.indexOf('/') + 1)); doubleExp = ((double) numer) / denom; @@ -247,8 +251,14 @@ public class Property extends ASTElement if (!(result instanceof Double)) throw new PrismException("Result is wrong type for (double-valued) property"); doubleRes = ((Double) result).doubleValue(); - if (!PrismUtils.doublesAreCloseRel(doubleRes, doubleExp, 1e-5)) - throw new PrismException("Wrong result (expected " + doubleExp + ")"); + // Compare results + if (Double.isNaN(doubleRes)) { + if (!Double.isNaN(doubleExp)) + throw new PrismException("Wrong result (expected " + doubleExp + ")"); + } else { + if (!PrismUtils.doublesAreCloseRel(doubleRes, doubleExp, 1e-5)) + throw new PrismException("Wrong result (expected " + doubleExp + ")"); + } } // Unknown type