Skip to content
Snippets Groups Projects
Commit 06c6477c authored by Daniel Plagge's avatar Daniel Plagge
Browse files

Kodkod bugfix: exception when returning a 0 for a POW2 integer, added test case

parent 6c999e77
No related branches found
No related tags found
No related merge requests found
...@@ -80,7 +80,8 @@ public final class Request { ...@@ -80,7 +80,8 @@ public final class Request {
pto.openTerm(tupleType.isSingleton() ? "b" : "s"); pto.openTerm(tupleType.isSingleton() ? "b" : "s");
pto.printAtom(relinfo.getId()); pto.printAtom(relinfo.getId());
if (tupleType.isSingleton()) { if (tupleType.isSingleton()) {
final Tuple tuple = tupleSet.iterator().next(); final Tuple tuple = tupleSet.isEmpty() ? null
: tupleSet.iterator().next();
writeTuple(pto, tupleType, tupleSet, tuple); writeTuple(pto, tupleType, tupleSet, tuple);
} else { } else {
pto.openList(); pto.openList();
......
...@@ -15,7 +15,7 @@ import de.stups.probkodkod.test.Result; ...@@ -15,7 +15,7 @@ import de.stups.probkodkod.test.Result;
import de.stups.probkodkod.test.ResultSetBuilder; import de.stups.probkodkod.test.ResultSetBuilder;
public class KodkodTest extends InteractionTestBase { public class KodkodTest extends InteractionTestBase {
// @Test @Test
public void testLoop() throws ParserException, LexerException, IOException, public void testLoop() throws ParserException, LexerException, IOException,
InterruptedException { InterruptedException {
String problem = load("loop.kodkod"); String problem = load("loop.kodkod");
...@@ -68,7 +68,7 @@ public class KodkodTest extends InteractionTestBase { ...@@ -68,7 +68,7 @@ public class KodkodTest extends InteractionTestBase {
checkSolutions(createExpResLoop(), loop2); checkSolutions(createExpResLoop(), loop2);
} }
// @Test @Test
public void testIntegers() throws IOException, ParserException, public void testIntegers() throws IOException, ParserException,
LexerException, InterruptedException { LexerException, InterruptedException {
ResultSetBuilder b = new ResultSetBuilder(); ResultSetBuilder b = new ResultSetBuilder();
...@@ -76,7 +76,7 @@ public class KodkodTest extends InteractionTestBase { ...@@ -76,7 +76,7 @@ public class KodkodTest extends InteractionTestBase {
testAll("integers", b.toCollection()); testAll("integers", b.toCollection());
} }
// @Test @Test
public void testProjection() throws IOException, ParserException, public void testProjection() throws IOException, ParserException,
LexerException, InterruptedException { LexerException, InterruptedException {
ResultSetBuilder b = new ResultSetBuilder(); ResultSetBuilder b = new ResultSetBuilder();
...@@ -84,7 +84,7 @@ public class KodkodTest extends InteractionTestBase { ...@@ -84,7 +84,7 @@ public class KodkodTest extends InteractionTestBase {
testAll("projection", b.toCollection()); testAll("projection", b.toCollection());
} }
// @Test @Test
public void testFunctions() throws IOException, ParserException, public void testFunctions() throws IOException, ParserException,
LexerException, InterruptedException { LexerException, InterruptedException {
ResultSetBuilder b = new ResultSetBuilder(); ResultSetBuilder b = new ResultSetBuilder();
...@@ -93,7 +93,7 @@ public class KodkodTest extends InteractionTestBase { ...@@ -93,7 +93,7 @@ public class KodkodTest extends InteractionTestBase {
testAll("functions", b.toCollection()); testAll("functions", b.toCollection());
} }
// @Test @Test
public void testIntegerCasts() throws IOException, ParserException, public void testIntegerCasts() throws IOException, ParserException,
LexerException, InterruptedException { LexerException, InterruptedException {
ResultSetBuilder b = new ResultSetBuilder(); ResultSetBuilder b = new ResultSetBuilder();
...@@ -101,7 +101,7 @@ public class KodkodTest extends InteractionTestBase { ...@@ -101,7 +101,7 @@ public class KodkodTest extends InteractionTestBase {
testAll("integercast", b.toCollection()); testAll("integercast", b.toCollection());
} }
// @Test @Test
public void testIntegerVariable() throws IOException, ParserException, public void testIntegerVariable() throws IOException, ParserException,
LexerException, InterruptedException { LexerException, InterruptedException {
ResultSetBuilder b = new ResultSetBuilder(); ResultSetBuilder b = new ResultSetBuilder();
...@@ -109,7 +109,7 @@ public class KodkodTest extends InteractionTestBase { ...@@ -109,7 +109,7 @@ public class KodkodTest extends InteractionTestBase {
testAll("intvar", b.toCollection()); testAll("intvar", b.toCollection());
} }
// @Test @Test
public void testIntegerRange() throws IOException, ParserException, public void testIntegerRange() throws IOException, ParserException,
LexerException, InterruptedException { LexerException, InterruptedException {
ResultSetBuilder b = new ResultSetBuilder(); ResultSetBuilder b = new ResultSetBuilder();
...@@ -126,7 +126,7 @@ public class KodkodTest extends InteractionTestBase { ...@@ -126,7 +126,7 @@ public class KodkodTest extends InteractionTestBase {
testAll("negative", b.toCollection()); testAll("negative", b.toCollection());
} }
// @Test @Test
public void testEmptySetInRequest() throws IOException, ParserException, public void testEmptySetInRequest() throws IOException, ParserException,
LexerException { LexerException {
final String problem = load("simpletwovars.kodkod"); final String problem = load("simpletwovars.kodkod");
...@@ -145,4 +145,18 @@ public class KodkodTest extends InteractionTestBase { ...@@ -145,4 +145,18 @@ public class KodkodTest extends InteractionTestBase {
checkSolutions(b.toCollection(), sol); checkSolutions(b.toCollection(), sol);
} }
@Test
public void testBug1() throws ParserException, LexerException, IOException {
final String problem = load("returnzero.kodkod");
sendMessage(problem + ".");
sendMessage("request returnzero 10 pos ().");
List<SortedMap<String, Result>> sol = new LinkedList<SortedMap<String, Result>>();
getSolutions(false, sol);
ResultSetBuilder b = new ResultSetBuilder();
b.single("x", t(0)).store();
checkSolutions(b.toCollection(), sol);
}
} }
problem returnzero
( (inttype(p2i 0 0)) )
( (x singleton subset p2i) )
(equals(expr2int(relref x))(0))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment