changeset 59:96cadd0da1ae

added invariant tests
author thomask
date Fri, 22 Oct 2004 20:29:58 +0000
parents eedf04fffdc3
children 0d02c5cd0a6f
files nocompile/invariant_03.d nocompile/invariant_04.d nocompile/invariant_05.d nocompile/invariant_06.d nocompile/invariant_07.d nocompile/invariant_08.d nocompile/invariant_09.d run/invariant_01.d run/invariant_02.d run/invariant_10.d run/invariant_11.d run/invariant_12.d run/invariant_13.d run/invariant_14.d run/invariant_15.d
diffstat 15 files changed, 318 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/invariant_03.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,5 @@
+// invariant is only allowed in classes
+
+module dstress.nocompile.invariant_03;
+
+invariant{}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/invariant_04.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,20 @@
+// invariant is only allowed in classes (dmd-0.104 documentation)
+
+module dstress.nocompile.invariant_04;
+
+struct MyStruct{
+	int i;
+
+	void test(){
+	}
+
+	invariant{
+		assert(0);
+	}
+}
+
+int main(){
+	MyStruct s;
+	s.test();
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/invariant_05.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,17 @@
+// invariant is only allowed in classes (dmd-0.104 documentation)
+
+module dstress.nocompile.invariant_05;
+
+invariant{
+	assert(0);
+}
+
+int dummy;
+
+static this(){
+	dummy=4;
+}
+
+static ~this(){
+	dummy++;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/invariant_06.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,20 @@
+// invariant is only allowed in classes (dmd-0.104 documentation)
+
+module dstress.nocompile.invariant_06;
+
+union MyUnion{
+	int i;
+	
+	void test(){
+	}	
+	
+	invariant{
+		assert(0);
+	}
+}
+
+int main(){
+	MyUnion u;
+	u.test();
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/invariant_07.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,15 @@
+// invariant is only allowed in classes (dmd-0.104 documentation)
+
+module dstress.nocompile.invariant_07;
+
+int test()
+	body{
+		return 0;
+	}
+	invariant{
+		assert(0);
+	}
+
+int main(){
+	return test();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/invariant_08.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,15 @@
+// invariant is only allowed in classes (dmd-0.104 documentation)
+
+module dstress.nocompile.invariant_08;
+
+int test()
+{
+	invariant{
+		assert(0);
+	}
+	return 0;
+}
+
+int main(){
+	return test();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/invariant_09.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,17 @@
+// invariant is only allowed in classes (dmd-0.104 documentation)
+
+module dstress.nocompile.invariant_09;
+
+class MyClass{
+	int test(){
+		invariant{
+			assert(0);
+		}
+		return 0;
+	}
+}
+
+int main(){
+	Myclass c = new MyClass();
+	return c.test();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/invariant_01.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,22 @@
+module dstress.run.invariant_01;
+
+class MyClass{
+	int test;
+
+	this(){}
+	
+	invariant{
+		assert(test > 1);
+	}
+}
+
+int main(){
+	int success;
+	try{
+		MyClass c = new MyClass();
+	}catch{
+		success++;
+	}
+	assert(success==1);
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/invariant_02.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,22 @@
+module dstress.run.invariant_02;
+int status;
+
+class MyClass{
+	int test;
+
+	this(){
+		test=2;
+	}
+	
+	invariant{
+		assert(test > 1);
+		status++;
+	}
+}
+
+int main(){
+	assert(status==0);
+	MyClass c = new MyClass();
+	assert(status==1);
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/invariant_10.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,13 @@
+// the name function name "_invariant" isn't forbidden (dmd-0.104 documentation)
+module dstress.run.invariant_10;
+
+class MyClass{
+	void _invariant(){
+		assert(0);
+	}
+}
+
+int main(){
+	MyClass c = new MyClass();
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/invariant_11.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,18 @@
+// the name function name "_invariant" isn't forbidden (dmd-0.104 documentation)
+module dstress.run.invariant_11;
+
+class MyClass{
+        void _invariant(){
+                assert(0);
+        }
+
+	invariant{
+		assert(0);
+	}
+}
+
+int main(){
+        MyClass c = new MyClass();
+        return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/invariant_12.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,31 @@
+module dstress.run.invariant_12.d;
+
+class Parent{
+	int x;
+
+	void test(){
+	}
+	
+	invariant{
+		// even number
+		assert(x&1==0);
+	}
+}
+
+class Child : Parent{
+}
+
+class GrandChild : Child{
+	this(){
+		x=5;	
+	}
+}
+
+int main(){
+	try{
+		GrandChild gc = new GrandChild();
+	}catch{
+		return 0;
+	}
+	assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/invariant_13.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,35 @@
+module dstress.run.invariant_13.d;
+
+class Parent{
+	int x;
+
+	void test(){
+	}
+	
+	invariant{
+		// even number
+		assert(x&1==0);
+	}
+}
+
+class Child : Parent{
+}
+
+class GrandChild : Child{
+	this(int x){
+		this.x=x;	
+	}
+
+	invariant{
+		assert(x>2);
+	}
+}
+
+int main(){
+	try{
+		GrandChild gc = new GrandChild(2);
+	}catch{
+		return 0;
+	}
+	assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/invariant_14.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,33 @@
+module dstress.run.invariant_14.d;
+
+class Parent{
+
+	int x;
+
+	this(){
+		x=3;
+	}
+	
+	invariant{
+		assert(x>2);
+	}
+}
+
+class Child : Parent{
+}
+
+class GrandChild : Child{
+
+	this(){
+		x=5;
+	}
+
+	invariant{
+		assert(x>4);
+	}
+}
+
+int main(){
+	GrandChild gc = new GrandChild();
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/invariant_15.d	Fri Oct 22 20:29:58 2004 +0000
@@ -0,0 +1,35 @@
+module dstress.run.invariant_15.d;
+
+class Parent{
+
+	int x;
+
+	this(){
+		x=3;
+	}
+	
+	invariant{
+		assert(x>2);
+	}
+}
+
+class Child : Parent{
+}
+
+class GrandChild : Child{
+
+	int y;
+
+	this(){
+		y=5;
+	}
+
+	invariant{
+		assert(y>4);
+	}
+}
+
+int main(){
+	GrandChild gc = new GrandChild();
+	return 0;
+}