@@ -84,14 +84,46 @@ class StreamReaderTests : XCTestCase {
84
84
}
85
85
}
86
86
87
- func testUpToWithSepBiggerThanBuffer( ) throws {
87
+ func testUpToWithSepBiggerThanBufferWODelimiter( ) throws {
88
+ try runTest ( hexDataString: " 01 23 45 67 89 " , bufferSizes: Array ( 1 ... 9 ) , bufferSizeIncrements: Array ( 1 ... 9 ) , underlyingStreamReadSizeLimits: [ nil ] ) { reader, data, limit, bufferSize, bufferSizeIncrement, underlyingStreamReadSizeLimit in
89
+ let rd = try reader. readData ( upTo: [ Data ( hexEncoded: " 23 45 67 89 " ) !, Data ( hexEncoded: " 45 " ) !] , matchingMode: . shortestDataWins, includeDelimiter: false )
90
+ XCTAssertEqual ( rd. data, data [ 0 ..< 1 ] )
91
+ XCTAssertFalse ( try reader. checkForEOF ( ) )
92
+ }
93
+ }
94
+
95
+ func testUpToWithSepBiggerThanBufferWDelimiter( ) throws {
96
+ try runTest ( hexDataString: " 01 23 45 67 89 " , bufferSizes: Array ( 1 ... 9 ) , bufferSizeIncrements: Array ( 1 ... 9 ) , underlyingStreamReadSizeLimits: [ nil ] ) { reader, data, limit, bufferSize, bufferSizeIncrement, underlyingStreamReadSizeLimit in
97
+ let rd = try reader. readData ( upTo: [ Data ( hexEncoded: " 23 45 67 89 " ) !, Data ( hexEncoded: " 45 " ) !] , matchingMode: . shortestDataWins, includeDelimiter: true )
98
+ XCTAssertEqual ( rd. data, data [ 0 ..< 3 ] )
99
+ XCTAssertFalse ( try reader. checkForEOF ( ) )
100
+ }
101
+ }
102
+
103
+ func testUpToMatchingMinLength( ) throws {
104
+ try runTest ( hexDataString: " 01 23 45 67 89 " , bufferSizes: Array ( 1 ... 9 ) , bufferSizeIncrements: Array ( 1 ... 9 ) , underlyingStreamReadSizeLimits: [ nil ] ) { reader, data, limit, bufferSize, bufferSizeIncrement, underlyingStreamReadSizeLimit in
105
+ let rd = try reader. readData ( upTo: [ Data ( hexEncoded: " 01 23 " ) !, Data ( hexEncoded: " 45 67 " ) !] , matchingMode: . shortestDataWins, includeDelimiter: true )
106
+ XCTAssertEqual ( rd. data, data [ 0 ..< 2 ] )
107
+ XCTAssertFalse ( try reader. checkForEOF ( ) )
108
+ }
109
+ }
110
+
111
+ func testUpToWithWithOverlappingSeps( ) throws {
88
112
try runTest ( hexDataString: " 01 23 45 67 89 " , bufferSizes: Array ( 1 ... 1 ) , bufferSizeIncrements: Array ( 1 ... 1 ) , underlyingStreamReadSizeLimits: [ nil ] ) { reader, data, limit, bufferSize, bufferSizeIncrement, underlyingStreamReadSizeLimit in
89
113
let rd = try reader. readData ( upTo: [ Data ( hexEncoded: " 23 45 " ) !] , matchingMode: . anyMatchWins, includeDelimiter: true )
90
114
XCTAssertEqual ( rd. data, data [ 0 ..< 3 ] )
91
115
XCTAssertFalse ( try reader. checkForEOF ( ) )
92
116
}
93
117
}
94
118
119
+ func testUpToFirstMatchingWinsMultipleCandidates( ) throws {
120
+ try runTest ( hexDataString: " 01 23 45 67 89 " , bufferSizes: Array ( 1 ... 1 ) , bufferSizeIncrements: Array ( 1 ... 1 ) , underlyingStreamReadSizeLimits: [ nil ] ) { reader, data, limit, bufferSize, bufferSizeIncrement, underlyingStreamReadSizeLimit in
121
+ let rd = try reader. readData ( upTo: [ Data ( hexEncoded: " 23 45 " ) !, Data ( hexEncoded: " 01 23 " ) !] , matchingMode: . firstMatchingDelimiterWins, includeDelimiter: false )
122
+ XCTAssertEqual ( rd. data, data [ 0 ..< 1 ] )
123
+ XCTAssertFalse ( try reader. checkForEOF ( ) )
124
+ }
125
+ }
126
+
95
127
func testReadInt( ) throws {
96
128
try runTest ( hexDataString: " 01 23 45 67 " , bufferSizes: Array ( 1 ... 9 ) , bufferSizeIncrements: Array ( 1 ... 9 ) , underlyingStreamReadSizeLimits: [ nil ] + Array( 1 ... 9 ) ) { reader, data, limit, bufferSize, bufferSizeIncrement, underlyingStreamReadSizeLimit in
97
129
let v : Int32 = try reader. readType ( )
0 commit comments