Files
cappuccino/Tests/Foundation/CPObjectTest.j
T
cacaodev 5da8728d6c New: CPObject instancesImplementSelector:(SEL)aSelector
Tests if instances of given class implement a selector.

With test.

Note: The naming is from cocoa where this method is semi-public.
2016-11-12 18:30:02 +01:00

120 lines
2.9 KiB
Plaintext

@import <Foundation/CPObject.j>
@implementation CPObjectTest : OJTestCase
{
}
- (void)testCPObjectIsSubclassOfClassCPObjectShouldBeTrue
{
[self assertTrue:[CPObject isSubclassOfClass:[CPObject class]]];
}
- (void)testIsSubclassOfClassWithNonSubclassShouldBeFalse
{
[self assertFalse:[CPObject isSubclassOfClass:[SuperReceiver class]]];
}
- (void)testImplementsSelector
{
var receiver = [[Receiver alloc] init];
[self assertTrue:[receiver implementsSelector:@selector(implementedInReceiverAndSuper)]];
[self assertTrue:[receiver implementsSelector:@selector(implementedInReceiverOnly)]];
[self assertFalse:[receiver implementsSelector:@selector(implementedInSuperOnly)]];
[self assertFalse:[receiver implementsSelector:@selector(notImplementedInSuperNorReceiver)]];
}
- (void)testInstancesImplementSelector
{
[self assertTrue:[Receiver instancesImplementSelector:@selector(implementedInReceiverAndSuper)]];
[self assertTrue:[Receiver instancesImplementSelector:@selector(implementedInReceiverOnly)]];
[self assertFalse:[Receiver instancesImplementSelector:@selector(implementedInSuperOnly)]];
[self assertFalse:[Receiver instancesImplementSelector:@selector(notImplementedInSuperNorReceiver)]];
}
- (void)testVersion
{
// zero by default
[self assert:[CPObject version] equals:0];
// create a random new version and round it to an integer
var newVersion = ROUND(RAND() * 100);
// make sure it's not zero
while (newVersion == 0)
newVersion = ROUND(RAND() * 100);
[CPObject setVersion:newVersion];
// test to make sure the assignment worked
[self assert:[CPObject version] equals:newVersion];
}
- (void)testMultipleArgumentPerformSelector
{
var receiver = [[Receiver alloc] init],
value1 = "a",
value2 = "b",
value3 = "c",
value4 = "d",
selector = @selector(implements:multiple:argument:selector:),
returnValue = [receiver performSelector:selector withObjects:value1, value2, value3, value4],
expectedReturnValue = value1 + value2 + value3 + value4;
[self assertTrue:expectedReturnValue === returnValue];
}
- (void)testCPDescriptionOfObject
{
var jSON = {"name": "Martin", "access":null},
d = CPDescriptionOfObject(jSON);
[self assertTrue:d.indexOf("name:") !== -1 message:"Can't find 'name:' in description of json " + d];
[self assertTrue:d.indexOf("access:") !== -1 message:"Can't find 'access:' in description of json " + d];
}
- (void)testCPObjectNotEqualToNil
{
var anObject = [[CPObject alloc] init];
[self assert:anObject notEqual:nil];
}
@end
@implementation SuperReceiver : CPObject
{
}
- (void)implementedInReceiverAndSuper
{
}
- (void)implementedInSuperOnly
{
}
@end
@implementation Receiver : SuperReceiver
{
}
- (void)implementedInReceiverAndSuper
{
}
- (void)implementedInReceiverOnly
{
}
- (id)implements:(id)a multiple:(id)b argument:(id)c selector:(id)d
{
return a + b + c + d;
}
@end