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