mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-08-25 04:57:03 +00:00
118 lines
2.4 KiB
Plaintext
118 lines
2.4 KiB
Plaintext
@import <Foundation/Foundation.j>
|
|
|
|
@implementation IvarTestClass : CPObject
|
|
{
|
|
id ivar1 @accessors;
|
|
var ivar2 @accessors(readonly);
|
|
CPNumber ivar3;
|
|
}
|
|
|
|
- (void)setIvar1UsingEval:(id)value
|
|
{
|
|
eval(@"var ivar1 = " + value);
|
|
}
|
|
|
|
- (void)doNothingToIvar1UsingEval:(id)value
|
|
{
|
|
(function()
|
|
{
|
|
eval(@"var ivar1 = " + value);
|
|
})();
|
|
}
|
|
|
|
- (void)setIvar1DespiteAWithStatement:(id)value
|
|
{
|
|
with({})
|
|
{
|
|
ivar1 = value;
|
|
}
|
|
}
|
|
|
|
- (void)doNothingToIvar1BecauseOfWithStatement:(id)value
|
|
{
|
|
with({'ivar1':null})
|
|
{
|
|
ivar1 = value;
|
|
}
|
|
}
|
|
|
|
- (void)setIvar1UsingAShadowingLocalVariable:(id)ivar1
|
|
{
|
|
self.ivar1 = ivar1;
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation IvarTest : OJTestCase
|
|
{
|
|
IvarTestClass testClass;
|
|
}
|
|
|
|
- (void)setUp
|
|
{
|
|
testClass = [[IvarTestClass alloc] init];
|
|
}
|
|
|
|
- (void)testDirectAccess
|
|
{
|
|
[self assert:nil equals:testClass.ivar1];
|
|
testClass.ivar1 = 5;
|
|
[self assert:5 equals:testClass.ivar1];
|
|
}
|
|
|
|
- (void)testWithStatementInMethod
|
|
{
|
|
[self assert:nil equals:testClass.ivar1];
|
|
[testClass setIvar1DespiteAWithStatement:5];
|
|
[self assert:5 equals:testClass.ivar1];
|
|
[testClass doNothingToIvar1BecauseOfWithStatement:10];
|
|
[self assert:5 equals:testClass.ivar1];
|
|
}
|
|
|
|
- (void)testEvalInMethod
|
|
{
|
|
[self assert:nil equals:testClass.ivar1];
|
|
[testClass setIvar1UsingEval:5];
|
|
[self assert:5 equals:testClass.ivar1];
|
|
[testClass doNothingToIvar1UsingEval:10];
|
|
[self assert:5 equals:testClass.ivar1];
|
|
}
|
|
|
|
- (void)testIvarShadowing
|
|
{
|
|
[self assert:nil equals:testClass.ivar1];
|
|
[testClass setIvar1UsingAShadowingLocalVariable:5];
|
|
[self assert:5 equals:testClass.ivar1];
|
|
}
|
|
|
|
- (void)testAccessorGeneration
|
|
{
|
|
[self assert:nil equals:[testClass ivar1]];
|
|
[testClass setIvar1:10];
|
|
[self assert:10 equals:[testClass ivar1]];
|
|
[self assert:10 equals:testClass.ivar1];
|
|
|
|
[self assert:nil equals:[testClass ivar2]];
|
|
testClass.ivar2 = 5;
|
|
[self assert:5 equals:[testClass ivar2]];
|
|
[self assert:5 equals:testClass.ivar2];
|
|
[self assertThrows:function()
|
|
{
|
|
[testClass setIvar2:6];
|
|
}];
|
|
[self assert:5 equals:[testClass ivar2]];
|
|
|
|
[self assert:nil equals:testClass.ivar3];
|
|
[self assertThrows:function()
|
|
{
|
|
[testClass ivar3];
|
|
}];
|
|
[self assertThrows:function()
|
|
{
|
|
[testClass setIvar3:20];
|
|
}];
|
|
[self assert:nil equals:testClass.ivar3];
|
|
}
|
|
|
|
@end
|