diff dstep/foundation/NSScriptWhoseTests.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents 89f3c3ef1fd2
children b9de51448c6b
line wrap: on
line diff
--- a/dstep/foundation/NSScriptWhoseTests.d	Mon Aug 03 15:31:48 2009 +0200
+++ b/dstep/foundation/NSScriptWhoseTests.d	Sun Jan 03 22:06:11 2010 +0100
@@ -7,11 +7,13 @@
 module dstep.foundation.NSScriptWhoseTests;
 
 import dstep.foundation.NSArray;
+import dstep.foundation.NSCoder;
 import dstep.foundation.NSObject;
-import dstep.foundation.NSScriptObjectSpecifier;
+import dstep.foundation.NSObjCRuntime;
+import dstep.foundation.NSScriptObjectSpecifiers;
 import dstep.foundation.NSString;
 import dstep.objc.bridge.Bridge;
-import dstep.objc.objc : id;
+import dstep.objc.objc;
 
 alias NSUInteger NSTestComparisonOperation;
 
@@ -27,9 +29,129 @@
 	NSContainsComparison
 }
 
+const TNSComparisonMethods = `
+
+	bool isEqualTo (Object object)
+	{
+		return invokeObjcSelf!(bool, "isEqualTo:", Object)(object);
+	}
+	
+	bool isLessThanOrEqualTo (Object object)
+	{
+		return invokeObjcSelf!(bool, "isLessThanOrEqualTo:", Object)(object);
+	}
+	
+	bool isLessThan (Object object)
+	{
+		return invokeObjcSelf!(bool, "isLessThan:", Object)(object);
+	}
+	
+	bool isGreaterThanOrEqualTo (Object object)
+	{
+		return invokeObjcSelf!(bool, "isGreaterThanOrEqualTo:", Object)(object);
+	}
+	
+	bool isGreaterThan (Object object)
+	{
+		return invokeObjcSelf!(bool, "isGreaterThan:", Object)(object);
+	}
+	
+	bool isNotEqualTo (Object object)
+	{
+		return invokeObjcSelf!(bool, "isNotEqualTo:", Object)(object);
+	}
+	
+	bool doesContain (Object object)
+	{
+		return invokeObjcSelf!(bool, "doesContain:", Object)(object);
+	}
+	
+	bool isLike (NSString object)
+	{
+		return invokeObjcSelf!(bool, "isLike:", NSString)(object);
+	}
+	
+	bool isCaseInsensitiveLike (NSString object)
+	{
+		return invokeObjcSelf!(bool, "isCaseInsensitiveLike:", NSString)(object);
+	}
+	
+	//mixin ObjcBindMethod!(isEqualTo, "isEqualTo:");
+	//mixin ObjcBindMethod!(isLessThanOrEqualTo, "isLessThanOrEqualTo:");
+	//mixin ObjcBindMethod!(isLessThan, "isLessThan:");
+	//mixin ObjcBindMethod!(isGreaterThanOrEqualTo, "isGreaterThanOrEqualTo:");
+	//mixin ObjcBindMethod!(isGreaterThan, "isGreaterThan:");
+	//mixin ObjcBindMethod!(isNotEqualTo, "isNotEqualTo:");
+	//mixin ObjcBindMethod!(doesContain, "doesContain:");
+	//mixin ObjcBindMethod!(isLike, "isLike:");
+	//mixin ObjcBindMethod!(isCaseInsensitiveLike, "isCaseInsensitiveLike:");
+`;
+
+const TNSScriptingComparisonMethods = `
+
+	bool scriptingIsEqualTo (Object object)
+	{
+		return invokeObjcSelf!(bool, "scriptingIsEqualTo:", Object)(object);
+	}
+	
+	bool scriptingIsLessThanOrEqualTo (Object object)
+	{
+		return invokeObjcSelf!(bool, "scriptingIsLessThanOrEqualTo:", Object)(object);
+	}
+	
+	bool scriptingIsLessThan (Object object)
+	{
+		return invokeObjcSelf!(bool, "scriptingIsLessThan:", Object)(object);
+	}
+	
+	bool scriptingIsGreaterThanOrEqualTo (Object object)
+	{
+		return invokeObjcSelf!(bool, "scriptingIsGreaterThanOrEqualTo:", Object)(object);
+	}
+	
+	bool scriptingIsGreaterThan (Object object)
+	{
+		return invokeObjcSelf!(bool, "scriptingIsGreaterThan:", Object)(object);
+	}
+	
+	bool scriptingBeginsWith (Object object)
+	{
+		return invokeObjcSelf!(bool, "scriptingBeginsWith:", Object)(object);
+	}
+	
+	bool scriptingEndsWith (Object object)
+	{
+		return invokeObjcSelf!(bool, "scriptingEndsWith:", Object)(object);
+	}
+	
+	bool scriptingContains (Object object)
+	{
+		return invokeObjcSelf!(bool, "scriptingContains:", Object)(object);
+	}
+	
+	//mixin ObjcBindMethod!(scriptingIsEqualTo, "scriptingIsEqualTo:");
+	//mixin ObjcBindMethod!(scriptingIsLessThanOrEqualTo, "scriptingIsLessThanOrEqualTo:");
+	//mixin ObjcBindMethod!(scriptingIsLessThan, "scriptingIsLessThan:");
+	//mixin ObjcBindMethod!(scriptingIsGreaterThanOrEqualTo, "scriptingIsGreaterThanOrEqualTo:");
+	//mixin ObjcBindMethod!(scriptingIsGreaterThan, "scriptingIsGreaterThan:");
+	//mixin ObjcBindMethod!(scriptingBeginsWith, "scriptingBeginsWith:");
+	//mixin ObjcBindMethod!(scriptingEndsWith, "scriptingEndsWith:");
+	//mixin ObjcBindMethod!(scriptingContains, "scriptingContains:");
+`;
+
 class NSLogicalTest : NSScriptWhoseTest
 {
-	mixin ObjcWrap;
+	mixin (ObjcWrap);
+	
+	this ()
+	{
+		super(typeof(this).alloc.init.objcObject);
+	}
+	
+	typeof(this) init ()
+	{
+		return invokeObjcSelf!(typeof(this), "init");
+	}
 
 	Object initAndTestWithTests (NSArray subTests)
 	{
@@ -38,13 +160,7 @@
 
 	this (NSArray subTests)
 	{
-		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
-		id result = Bridge.invokeObjcMethod!(id, "initAndTestWithTests:", NSArray)(objcObject, subTests);
-
-		if (result)
-			objcObject = ret;
-
-		dObject = this;
+		typeof(this).alloc.initAndTestWithTests(subTests);
 	}
 
 	Object initOrTestWithTests (NSArray subTests)
@@ -52,17 +168,6 @@
 		return invokeObjcSelf!(Object, "initOrTestWithTests:", NSArray)(subTests);
 	}
 
-	this (NSArray subTests)
-	{
-		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
-		id result = Bridge.invokeObjcMethod!(id, "initOrTestWithTests:", NSArray)(objcObject, subTests);
-
-		if (result)
-			objcObject = ret;
-
-		dObject = this;
-	}
-
 	Object initNotTestWithTest (NSScriptWhoseTest subTest)
 	{
 		return invokeObjcSelf!(Object, "initNotTestWithTest:", NSScriptWhoseTest)(subTest);
@@ -70,19 +175,23 @@
 
 	this (NSScriptWhoseTest subTest)
 	{
-		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
-		id result = Bridge.invokeObjcMethod!(id, "initNotTestWithTest:", NSScriptWhoseTest)(objcObject, subTest);
-
-		if (result)
-			objcObject = ret;
-
-		dObject = this;
+		typeof(this).alloc.initNotTestWithTest(subTest);
 	}
 }
 
 class NSSpecifierTest : NSScriptWhoseTest
 {
-	mixin ObjcWrap;
+	mixin (ObjcWrap);
+	
+	this ()
+	{
+		super(typeof(this).alloc.init.objcObject);
+	}
+	
+	typeof(this) init ()
+	{
+		return invokeObjcSelf!(typeof(this), "init");
+	}
 
 	Object initWithObjectSpecifier (NSScriptObjectSpecifier obj1, uint compOp, Object obj2)
 	{
@@ -91,19 +200,23 @@
 
 	this (NSScriptObjectSpecifier obj1, uint compOp, Object obj2)
 	{
-		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
-		id result = Bridge.invokeObjcMethod!(id, "initWithObjectSpecifier:comparisonOperator:testObject:", NSScriptObjectSpecifier, uint, Object)(objcObject, obj1, compOp, obj2);
-
-		if (result)
-			objcObject = ret;
-
-		dObject = this;
+		typeof(this).alloc.initWithObjectSpecifier(obj1, compOp, obj2);
 	}
 }
 
 class NSScriptWhoseTest : NSObject, INSCoding
 {
-	mixin ObjcWrap;
+	mixin (ObjcWrap);
+	
+	this ()
+	{
+		super(typeof(this).alloc.init.objcObject);
+	}
+	
+	typeof(this) init ()
+	{
+		return invokeObjcSelf!(typeof(this), "init");
+	}
 
 	bool isTrue ()
 	{
@@ -122,38 +235,6 @@
 
 	this (NSCoder aDecoder)
 	{
-		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
-		id result = Bridge.invokeObjcMethod!(id, "initWithCoder:", NSCoder)(objcObject, aDecoder);
-
-		if (result)
-			objcObject = ret;
-
-		dObject = this;
+		typeof(this).alloc.initWithCoder(aDecoder);
 	}
-}
-
-template TNSComparisonMethods ()
-{
-	bool isEqualTo (Object object);
-	bool isLessThanOrEqualTo (Object object);
-	bool isLessThan (Object object);
-	bool isGreaterThanOrEqualTo (Object object);
-	bool isGreaterThan (Object object);
-	bool isNotEqualTo (Object object);
-	bool doesContain (Object object);
-	bool isLike (NSString object);
-	bool isCaseInsensitiveLike (NSString object);
-}
-
-template TNSScriptingComparisonMethods ()
-{
-	bool scriptingIsEqualTo (Object object);
-	bool scriptingIsLessThanOrEqualTo (Object object);
-	bool scriptingIsLessThan (Object object);
-	bool scriptingIsGreaterThanOrEqualTo (Object object);
-	bool scriptingIsGreaterThan (Object object);
-	bool scriptingBeginsWith (Object object);
-	bool scriptingEndsWith (Object object);
-	bool scriptingContains (Object object);
-}
-
+}
\ No newline at end of file