@@ -7,74 +7,66 @@ final class RESPEncoderParsingTests: XCTestCase {
77 private let encoder = RESPEncoder ( )
88
99 func testSimpleStrings( ) {
10- XCTAssertEqual (
11- encoder. encode ( . simpleString( " Test1 " ) ) ,
12- " +Test1 \r \n " . convertedToData ( )
13- )
14- XCTAssertEqual (
15- encoder. encode ( . simpleString( " ®in§³¾ " ) ) ,
16- " +®in§³¾ \r \n " . convertedToData ( )
17- )
10+ XCTAssertTrue ( testPass ( input: . simpleString( " Test1 " ) , expected: " +Test1 \r \n " ) )
11+ XCTAssertTrue ( testPass ( input: . simpleString( " ®in§³¾ " ) , expected: " +®in§³¾ \r \n " ) )
1812 }
1913
2014 func testBulkStrings( ) {
21- let t1 = Data ( [ 0x01 , 0x02 , 0x0a , 0x1b , 0xaa ] )
22- XCTAssertEqual (
23- encoder. encode ( . bulkString( t1) ) ,
24- " $5 \r \n " . convertedToData ( ) + t1 + " \r \n " . convertedToData ( )
25- )
26- let t2 = " ®in§³¾ " . convertedToData ( )
27- XCTAssertEqual (
28- encoder. encode ( . bulkString( t2) ) ,
29- " $10 \r \n " . convertedToData ( ) + t2 + " \r \n " . convertedToData ( )
30- )
31- let t3 = " " . convertedToData ( )
32- XCTAssertEqual (
33- encoder. encode ( . bulkString( t3) ) ,
34- " $0 \r \n \r \n " . convertedToData ( )
35- )
15+ let bytes = Data ( [ 0x01 , 0x02 , 0x0a , 0x1b , 0xaa ] )
16+ XCTAssertTrue ( testPass ( input: . bulkString( bytes) , expected: Data ( " $5 \r \n " . utf8) + bytes + Data( " \r \n " . utf8) ) )
17+ XCTAssertTrue ( testPass ( input: . init( bulk: " ®in§³¾ " ) , expected: " $10 \r \n ®in§³¾ \r \n " ) )
18+ XCTAssertTrue ( testPass ( input: . init( bulk: " " ) , expected: " $0 \r \n \r \n " ) )
3619 }
3720
3821 func testIntegers( ) {
39- XCTAssertEqual (
40- encoder. encode ( . integer( Int . min) ) ,
41- " : \( Int . min) \r \n " . convertedToData ( )
42- )
43- XCTAssertEqual (
44- encoder. encode ( . integer( 0 ) ) ,
45- " :0 \r \n " . convertedToData ( )
46- )
22+ XCTAssertTrue ( testPass ( input: . integer( Int . min) , expected: " : \( Int . min) \r \n " ) )
23+ XCTAssertTrue ( testPass ( input: . integer( 0 ) , expected: " :0 \r \n " ) )
4724 }
4825
4926 func testArrays( ) {
50- XCTAssertEqual (
51- encoder. encode ( . array( [ ] ) ) ,
52- " *0 \r \n " . convertedToData ( )
53- )
54- let a1 : RESPValue = . array( [ . integer( 3 ) , . simpleString( " foo " ) ] )
55- XCTAssertEqual (
56- encoder. encode ( a1) ,
57- " *2 \r \n :3 \r \n +foo \r \n " . convertedToData ( )
58- )
27+ XCTAssertTrue ( testPass ( input: . array( [ ] ) , expected: " *0 \r \n " ) )
28+ XCTAssertTrue ( testPass (
29+ input: . array( [ . integer( 3 ) , . simpleString( " foo " ) ] ) ,
30+ expected: " *2 \r \n :3 \r \n +foo \r \n "
31+ ) )
5932 let bytes = Data ( [ 0x0a , 0x1a , 0x1b , 0xff ] )
60- let a2 : RESPValue = . array( [ . array( [
61- . integer( 3 ) ,
62- . bulkString( bytes)
63- ] ) ] )
64- XCTAssertEqual (
65- encoder. encode ( a2) ,
66- " *1 \r \n *2 \r \n :3 \r \n $4 \r \n " . convertedToData ( ) + bytes + " \r \n " . convertedToData ( )
67- )
33+ XCTAssertTrue ( testPass (
34+ input: . array( [ . array( [ . integer( 10 ) , . bulkString( bytes) ] ) ] ) ,
35+ expected: Data ( " *1 \r \n *2 \r \n :10 \r \n $4 \r \n " . utf8) + bytes + Data( " \r \n " . utf8)
36+ ) )
6837 }
6938
7039 func testError( ) {
7140 let error = RedisError ( identifier: " testError " , reason: " Manual error " )
72- let result = encoder. encode ( . error( error) )
73- XCTAssertEqual ( result, " - \( error. description) \r \n " . convertedToData ( ) )
41+ XCTAssertTrue ( testPass ( input: . error( error) , expected: " - \( error. description) \r \n " ) )
7442 }
7543
7644 func testNull( ) {
77- XCTAssertEqual ( encoder. encode ( . null) , " $-1 \r \n " . convertedToData ( ) )
45+ XCTAssertTrue ( testPass ( input: . null, expected: " $-1 \r \n " ) )
46+ }
47+
48+ private func testPass( input: RESPValue , expected: Data ) -> Bool {
49+ let allocator = ByteBufferAllocator ( )
50+
51+ var comparisonBuffer = allocator. buffer ( capacity: expected. count)
52+ comparisonBuffer. writeBytes ( expected)
53+
54+ var buffer = allocator. buffer ( capacity: expected. count)
55+ encoder. encode ( input. convertedToRESPValue ( ) , into: & buffer)
56+
57+ return buffer == comparisonBuffer
58+ }
59+
60+ private func testPass( input: RESPValue , expected: String ) -> Bool {
61+ let allocator = ByteBufferAllocator ( )
62+
63+ var comparisonBuffer = allocator. buffer ( capacity: expected. count)
64+ comparisonBuffer. writeString ( expected)
65+
66+ var buffer = allocator. buffer ( capacity: expected. count)
67+ encoder. encode ( input. convertedToRESPValue ( ) , into: & buffer)
68+
69+ return buffer == comparisonBuffer
7870 }
7971}
8072
0 commit comments