summaryrefslogtreecommitdiff
path: root/Test/dafny0/TypeTests.dfy
diff options
context:
space:
mode:
authorGravatar rustanleino <unknown>2010-03-11 00:27:39 +0000
committerGravatar rustanleino <unknown>2010-03-11 00:27:39 +0000
commit2bfb81bd10f969ad2834be5b6604606ad9c14dab (patch)
tree315328ea47d9bff63c38c7c8c85971b80a519a26 /Test/dafny0/TypeTests.dfy
parent4f420b504f7655642470b4e9fc1868b5f9239c32 (diff)
Dafny: Added stratosphere tests for datatypes--that is, it is now checked that every datatype has some value.
Diffstat (limited to 'Test/dafny0/TypeTests.dfy')
-rw-r--r--Test/dafny0/TypeTests.dfy29
1 files changed, 29 insertions, 0 deletions
diff --git a/Test/dafny0/TypeTests.dfy b/Test/dafny0/TypeTests.dfy
index 4cb02858..1616234e 100644
--- a/Test/dafny0/TypeTests.dfy
+++ b/Test/dafny0/TypeTests.dfy
@@ -16,3 +16,32 @@ class C {
datatype D {
A;
}
+
+datatype Nothing { // error: no grounding constructor
+}
+
+datatype NeverendingList { // error: no grounding constructor
+ Cons(int, NeverendingList);
+}
+
+datatype MutuallyRecursiveDataType<T> {
+ FromANumber(int); // this is the base case
+ Else(TheCounterpart<T>, C);
+}
+
+datatype TheCounterpart<T> {
+ TreeLike(TheCounterpart<T>, TheCounterpart<T>);
+ More(MutuallyRecursiveDataType<T>);
+}
+
+// these 'ReverseOrder_' order tests may be called white-box unit tests
+datatype ReverseOrder_MutuallyRecursiveDataType<T> {
+ FromANumber(int); // this is the base case
+ Else(ReverseOrder_TheCounterpart<T>, C);
+}
+
+datatype ReverseOrder_TheCounterpart<T> {
+ TreeLike(ReverseOrder_TheCounterpart<T>, ReverseOrder_TheCounterpart<T>);
+ More(ReverseOrder_MutuallyRecursiveDataType<T>);
+}
+