Skip to content

Commit 15126e5

Browse files
committed
Failing unit test to expose available space bugs in GCDAsyncSocketPreBuffer.
1 parent 42fa5c9 commit 15126e5

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

GCD/Xcode/TestPreBuffer/Shared/TestPreBuffer.m

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ + (void)start
5959
// Run unit tests
6060

6161
[self test_preBuffer];
62-
62+
6363
// Setup benchmarks.
6464
//
6565
// We're going to test a common pattern within GCDAsyncSocket, which is:
@@ -89,7 +89,7 @@ + (void)test_preBuffer
8989
// Test capacity, and initial size methods
9090

9191
size_t capacity = [preBuffer availableSpace];
92-
92+
9393
NSAssert([preBuffer availableSpace] >= 1024, @"1A");
9494
NSAssert([preBuffer availableBytes] == 0, @"1B");
9595

@@ -101,7 +101,7 @@ + (void)test_preBuffer
101101
writePointer1 = [preBuffer writeBuffer];
102102
[preBuffer didWrite:512];
103103
writePointer2 = [preBuffer writeBuffer];
104-
104+
105105
NSAssert(writePointer2 - writePointer1 == 512, @"2A");
106106
NSAssert([preBuffer availableBytes] == 512, @"2B");
107107

@@ -113,15 +113,19 @@ + (void)test_preBuffer
113113
readPointer1 = [preBuffer readBuffer];
114114
[preBuffer didRead:256];
115115
readPointer2 = [preBuffer readBuffer];
116-
116+
117117
NSAssert(readPointer2 - readPointer1 == 256, @"3A");
118118
NSAssert([preBuffer availableBytes] == 256, @"3B");
119119

120120
[preBuffer didRead:256];
121121

122122
NSAssert([preBuffer availableBytes] == 0, @"4A");
123123
NSAssert([preBuffer availableSpace] == capacity, @"4B");
124-
124+
125+
// At this point, the buffer should have reset
126+
NSAssert([preBuffer readBuffer] == [preBuffer writeBuffer], @"4C");
127+
NSAssert([preBuffer availableSpace] == 1024, @"4D");
128+
125129
// Test write and read
126130

127131
char *str = "test";
@@ -140,7 +144,20 @@ + (void)test_preBuffer
140144
NSAssert([preBuffer availableSpace] >= (capacity * 2), @"6A");
141145
NSAssert([preBuffer availableBytes] == strLen, @"6B");
142146
NSAssert(memcmp([preBuffer readBuffer], str, strLen) == 0, @"6C");
143-
147+
148+
// Test available space
149+
[preBuffer reset];
150+
size_t availableSpace = [preBuffer availableSpace];
151+
152+
// Make sure the available space is correct if we write all but 1 byte of our available space
153+
size_t writeCount = availableSpace - 1;
154+
[preBuffer didWrite:writeCount];
155+
NSAssert([preBuffer availableSpace] == 1, @"7A");
156+
157+
// Make sure it doesn't change if we read some, but not all, of the data
158+
[preBuffer didRead:writeCount - 1];
159+
NSAssert([preBuffer availableSpace] == 1, @"7B");
160+
144161
NSLog(@"%@: passed", NSStringFromSelector(_cmd));
145162
}
146163

0 commit comments

Comments
 (0)