Skip to content

Commit bae1bfb

Browse files
committed
Increase code coverage
1 parent c75b8b9 commit bae1bfb

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

Sources/StreamReader/Matching.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ internal func matchDelimiters(inData data: UnsafeRawBufferPointer, dataStartOffs
6767
/* Reversed enumeration in order to be able to remove an element from the unmatchedDelimiters array while still enumerating it and keeping valid indexes. */
6868
for (delimiterIdx, delimiter) in unmatchedDelimiters.enumerated().reversed() {
6969
let delimiterLength = delimiter.element.count
70-
/* If the delimiter is empty or bigger than the remaining space it cannot match. */
71-
guard delimiterLength > 0 else {continue}
70+
/* If the delimiter is empty or bigger than the remaining space it cannot match.
71+
* Emtpy delimiters are filtered before. */
72+
assert(delimiterLength > 0)
7273
guard delimiterLength <= curRemainingSpace else {
7374
/* The delimiter is too big to compare to the whole data.
7475
* If the delimiter is a potential match (the data available is a prefix of the delimiter),

Tests/StreamReaderTests/StreamReaderTests.swift

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,46 @@ class StreamReaderTests : XCTestCase {
8484
}
8585
}
8686

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 {
88112
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
89113
let rd = try reader.readData(upTo: [Data(hexEncoded: "23 45")!], matchingMode: .anyMatchWins, includeDelimiter: true)
90114
XCTAssertEqual(rd.data, data[0..<3])
91115
XCTAssertFalse(try reader.checkForEOF())
92116
}
93117
}
94118

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+
95127
func testReadInt() throws {
96128
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
97129
let v: Int32 = try reader.readType()

0 commit comments

Comments
 (0)