@@ -79,7 +79,7 @@ final class BinaryKitTests: XCTestCase {
7979 XCTAssertEqual ( try bin. readByte ( ) , 173 )
8080 XCTAssertEqual ( try bin. readByte ( ) , 175 )
8181 }
82-
82+
8383 func testByteIndex( ) {
8484 let bytes : [ UInt8 ] = [ 0b1010_1101 , 0b1010_1111 ]
8585 let bin = Binary ( bytes: bytes)
@@ -108,7 +108,55 @@ final class BinaryKitTests: XCTestCase {
108108 XCTAssertEqual ( try bin. getBytes ( range: 0 ..< 2 ) , [ 173 , 175 ] )
109109 XCTAssertThrowsError ( try bin. getBytes ( range: 2 ..< 3 ) )
110110 }
111-
111+
112+ // MARK: - Mixed Reading
113+
114+ func testReadBitReadByte( ) {
115+ let bytes : [ UInt8 ] = [ 0b1010_1101 , 0b1010_1111 ]
116+ var bin = Binary ( bytes: bytes)
117+
118+ XCTAssertEqual ( try bin. readBit ( ) , 1 )
119+ XCTAssertEqual ( try bin. readByte ( ) , 91 )
120+ XCTAssertEqual ( bin. readBitCursor, 9 )
121+ }
122+
123+ func testReadBitReadBytes( ) {
124+ let bytes : [ UInt8 ] = [ 0b1010_1101 , 0b1010_1111 , 0b1000_1101 ]
125+ var bin = Binary ( bytes: bytes)
126+
127+ XCTAssertEqual ( try bin. readBit ( ) , 1 )
128+ XCTAssertEqual ( try bin. readBytes ( 2 ) , [ UInt8 ( 91 ) , UInt8 ( 95 ) ] )
129+ XCTAssertEqual ( bin. readBitCursor, 17 )
130+ }
131+
132+ func testThrowsBeforeActualRead( ) {
133+ let bytes : [ UInt8 ] = [ 0b1010_1101 , 0b1010_1111 , 0b1000_1101 ]
134+ var bin = Binary ( bytes: bytes)
135+
136+ XCTAssertEqual ( try bin. readBit ( ) , 1 )
137+ XCTAssertEqual ( bin. readBitCursor, 1 )
138+ XCTAssertThrowsError ( try bin. readBytes ( 3 ) )
139+ XCTAssertEqual ( bin. readBitCursor, 1 )
140+ }
141+
142+ func testThrowsBeforeAcutalRead1( ) {
143+ let bytes : [ UInt8 ] = [ 0b1010_1101 , 0b1010_1111 , 0b1000_1101 ]
144+ var bin = Binary ( bytes: bytes)
145+
146+ XCTAssertEqual ( bin. readBitCursor, 0 )
147+ XCTAssertThrowsError ( try bin. readBytes ( 4 ) )
148+ XCTAssertEqual ( bin. readBitCursor, 0 )
149+ }
150+
151+ func testThrowsBeforeAcutalRead2( ) {
152+ let bytes : [ UInt8 ] = [ 0b1010_1101 , 0b1010_1111 , 0b1000_1101 ]
153+ var bin = Binary ( bytes: bytes)
154+
155+ XCTAssertEqual ( bin. readBitCursor, 0 )
156+ XCTAssertThrowsError ( try bin. readBits ( 100 ) )
157+ XCTAssertEqual ( bin. readBitCursor, 0 )
158+ }
159+
112160 // MARK: - Init
113161
114162 func testHexInit( ) {
@@ -204,12 +252,14 @@ final class BinaryKitTests: XCTestCase {
204252 XCTAssertEqual ( try bin. readBit ( ) , 1 )
205253 XCTAssertEqual ( try bin. readBit ( ) , 1 )
206254 XCTAssertEqual ( try bin. readBit ( ) , 1 )
255+
207256 XCTAssertEqual ( try bin. readBit ( ) , 1 )
208257 XCTAssertEqual ( try bin. readBit ( ) , 1 )
209258 XCTAssertEqual ( try bin. readBit ( ) , 1 )
210259 XCTAssertEqual ( try bin. readBit ( ) , 1 )
211- XCTAssertEqual ( try bin . readBit ( ) , 1 )
260+
212261 XCTAssertEqual ( try bin. readByte ( ) , 128 )
262+
213263 XCTAssertEqual ( try bin. readByte ( ) , 7 )
214264 XCTAssertEqual ( try bin. readByte ( ) , 128 )
215265 XCTAssertEqual ( try bin. readString ( quantitiyOfBytes: 12 ) , " hello world! " )
0 commit comments