@@ -59,7 +59,7 @@ + (void)start
59
59
// Run unit tests
60
60
61
61
[self test_preBuffer ];
62
-
62
+
63
63
// Setup benchmarks.
64
64
//
65
65
// We're going to test a common pattern within GCDAsyncSocket, which is:
@@ -89,7 +89,7 @@ + (void)test_preBuffer
89
89
// Test capacity, and initial size methods
90
90
91
91
size_t capacity = [preBuffer availableSpace ];
92
-
92
+
93
93
NSAssert ([preBuffer availableSpace ] >= 1024 , @" 1A" );
94
94
NSAssert ([preBuffer availableBytes ] == 0 , @" 1B" );
95
95
@@ -101,7 +101,7 @@ + (void)test_preBuffer
101
101
writePointer1 = [preBuffer writeBuffer ];
102
102
[preBuffer didWrite: 512 ];
103
103
writePointer2 = [preBuffer writeBuffer ];
104
-
104
+
105
105
NSAssert (writePointer2 - writePointer1 == 512 , @" 2A" );
106
106
NSAssert ([preBuffer availableBytes ] == 512 , @" 2B" );
107
107
@@ -113,15 +113,19 @@ + (void)test_preBuffer
113
113
readPointer1 = [preBuffer readBuffer ];
114
114
[preBuffer didRead: 256 ];
115
115
readPointer2 = [preBuffer readBuffer ];
116
-
116
+
117
117
NSAssert (readPointer2 - readPointer1 == 256 , @" 3A" );
118
118
NSAssert ([preBuffer availableBytes ] == 256 , @" 3B" );
119
119
120
120
[preBuffer didRead: 256 ];
121
121
122
122
NSAssert ([preBuffer availableBytes ] == 0 , @" 4A" );
123
123
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
+
125
129
// Test write and read
126
130
127
131
char *str = " test" ;
@@ -140,7 +144,20 @@ + (void)test_preBuffer
140
144
NSAssert ([preBuffer availableSpace ] >= (capacity * 2 ), @"6A");
141
145
NSAssert ([preBuffer availableBytes ] == strLen, @" 6B" );
142
146
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
+
144
161
NSLog (@" %@ : passed" , NSStringFromSelector (_cmd));
145
162
}
146
163
0 commit comments