Skip to content

Commit 6c2ca97

Browse files
committed
Increase code coverage
1 parent 968b54a commit 6c2ca97

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
@@ -81,14 +81,46 @@ class StreamReaderTests : XCTestCase {
8181
}
8282
}
8383

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

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

0 commit comments

Comments
 (0)