Mercurial > projects > dstep
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