File: WeakSetUnitTests.m

package info (click to toggle)
oolite 1.77.1-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 41,264 kB
  • ctags: 5,362
  • sloc: objc: 132,090; ansic: 10,457; python: 2,225; sh: 1,325; makefile: 332; perl: 259; xml: 125; php: 5
file content (141 lines) | stat: -rw-r--r-- 4,430 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*

weakSetUnitTests.m

Unit tests for OOWeakSet.


Written by Jens Ayton in 2012 for Oolite.
This code is hereby placed in the public domain.

*/

#import "weaksetUnitTests.h"
#import "OOWeakSet.h"
#import "OOWeakTestObject.h"


@implementation weaksetUnitTests

- (void) testAddAndCount
{
    OOWeakTestObject *three = [OOWeakTestObject objectWithValue:3];
    OOWeakTestObject *seven = [OOWeakTestObject objectWithValue:7];
	
	OOWeakSet *ws = [OOWeakSet set];
	STAssertNotNil(ws, @"Creating a weak set should produce a set.");
	
	STAssertEquals(ws.count, (NSUInteger)0, @"A newly created weak set should be empty.");
	
	[ws addObject:three];
	[ws addObject:seven];
	
	STAssertEquals(ws.count, (NSUInteger)2, @"After adding two distinct objects, weak set's count should be 2.");
	
	[ws addObject:three];
	[ws addObject:three];
	
	STAssertEquals(ws.count, (NSUInteger)2, @"Adding duplicate objects should not increase weak set's count.");
}


- (void) testContainsObject
{
    OOWeakTestObject *three = [OOWeakTestObject objectWithValue:3];
    OOWeakTestObject *seven = [OOWeakTestObject objectWithValue:7];
	OOWeakSet *ws = [OOWeakSet set];
	
	[ws addObject:three];
	
	STAssertTrue([ws containsObject:three], @"Weak set should contain object that was added.");
	STAssertFalse([ws containsObject:seven], @"Weak set should not contain object that wasn't added.");
}


- (void) testRemoveObject
{
    OOWeakTestObject *three = [OOWeakTestObject objectWithValue:3];
    OOWeakTestObject *seven = [OOWeakTestObject objectWithValue:7];
	OOWeakSet *ws = [OOWeakSet set];
	
	[ws addObject:three];
	[ws addObject:seven];
	
	STAssertEquals(ws.count, (NSUInteger)2, @"After adding two distinct objects, weak set's count should be 2.");
	
	STAssertTrue([ws containsObject:three], @"Weak set should contain object that was added.");
	STAssertTrue([ws containsObject:seven], @"Weak set should contain object that was added.");
	
	[ws removeObject:three];
	
	STAssertEquals(ws.count, (NSUInteger)1, @"After adding two distinct objects and removing one, weak set's count should be 1.");
	
	STAssertFalse([ws containsObject:three], @"Weak set should not contain object that was removed.");
	STAssertTrue([ws containsObject:seven], @"Weak set should contain object that was not removed.");
}


- (void) testEquality
{
    OOWeakTestObject *three = [OOWeakTestObject objectWithValue:3];
    OOWeakTestObject *seven = [OOWeakTestObject objectWithValue:7];
	OOWeakSet *ws1 = [OOWeakSet set];
	OOWeakSet *ws2 = [OOWeakSet set];
	
	STAssertTrue([ws1 isEqual:ws2], @"Two empty weak sets should be equal.");
	
	[ws1 addObject:three];
	[ws2 addObject:seven];
	STAssertFalse([ws1 isEqual:ws2], @"Two weak sets containing different objects should not be equal.");
	
	[ws2 addObject:three];
	[ws1 addObject:seven];
	
	STAssertTrue([ws1 isEqual:ws2], @"Two weak sets containing the same objects should be equal.");
}


- (void) testWeakness
{
    OOWeakTestObject *three = [OOWeakTestObject objectWithValue:3];
	OOWeakSet *ws = [OOWeakSet set];
	
	@autoreleasepool
	{
		OOWeakTestObject *seven = [OOWeakTestObject objectWithValue:7];
		
		[ws addObject:three];
		[ws addObject:seven];
		
		STAssertEquals(ws.count, (NSUInteger)2, @"After adding two distinct objects, weak set's count should be 2.");
	}
	
	STAssertEquals(ws.count, (NSUInteger)1, @"After one object's lifetime expired, weak set's count should be 1.");
	STAssertTrue([ws containsObject:three], @"Weak set should contain object which has not expired.");
}


- (void) testPerformSelector
{
    OOWeakTestObject *three = [OOWeakTestObject objectWithValue:3];
    OOWeakTestObject *seven = [OOWeakTestObject objectWithValue:7];
    OOWeakTestObject *nine = [OOWeakTestObject objectWithValue:9];
	OOWeakSet *ws = [OOWeakSet set];
	
	[ws addObject:three];
	[ws addObject:seven];
	
	NSMutableSet *set = [NSMutableSet set];
	
	[ws makeObjectsPerformSelector:@selector(addSelfToSet:) withObject:set];
	
	STAssertEquals(set.count, ws.count, @"After after having objects from weak set add themselves to a strong set, the two sets' counts should match.");
	STAssertTrue([set containsObject:three], @"Strong set should contain object copied from weak set.");
	STAssertTrue([set containsObject:seven], @"Strong set should contain object copied from weak set.");
	
	[ws addObject:nine];
	
	STAssertFalse([set containsObject:nine], @"Strong set should not contain object not copied from weak set.");
}

@end