@@ -100,6 +100,95 @@ final class BasicCommandsTests: XCTestCase {
100100 XCTAssertEqual ( first, " 100 " )
101101 }
102102
103+ func test_increment( ) throws {
104+ var result = try connection? . increment ( #function) . wait ( )
105+ XCTAssertEqual ( result, 1 )
106+ result = try connection? . increment ( #function) . wait ( )
107+ XCTAssertEqual ( result, 2 )
108+ }
109+
110+ func test_incrementBy( ) throws {
111+ var result = try connection? . increment ( #function, by: 10 ) . wait ( )
112+ XCTAssertEqual ( result, 10 )
113+ result = try connection? . increment ( #function, by: - 3 ) . wait ( )
114+ XCTAssertEqual ( result, 7 )
115+ result = try connection? . increment ( #function, by: 0 ) . wait ( )
116+ XCTAssertEqual ( result, 7 )
117+ }
118+
119+ func test_incrementByFloat( ) throws {
120+ var float = try connection? . increment ( #function, by: Float ( 3.0 ) ) . wait ( )
121+ XCTAssertEqual ( float, 3.0 )
122+ float = try connection? . increment ( #function, by: Float ( - 10.135901 ) ) . wait ( )
123+ XCTAssertEqual ( float, - 7.135901 )
124+
125+ var double = try connection? . increment ( #function, by: Double ( 10.2839 ) ) . wait ( )
126+ XCTAssertEqual ( double, 3.147999 )
127+ double = try connection? . increment ( #function, by: Double ( 15.2938 ) ) . wait ( )
128+ XCTAssertEqual ( double, 18.441799 )
129+ }
130+
131+ func test_decrement( ) throws {
132+ var result = try connection? . decrement ( #function) . wait ( )
133+ XCTAssertEqual ( result, - 1 )
134+ result = try connection? . decrement ( #function) . wait ( )
135+ XCTAssertEqual ( result, - 2 )
136+ }
137+
138+ func test_decrementBy( ) throws {
139+ var result = try connection? . decrement ( #function, by: - 10 ) . wait ( )
140+ XCTAssertEqual ( result, 10 )
141+ result = try connection? . decrement ( #function, by: 3 ) . wait ( )
142+ XCTAssertEqual ( result, 7 )
143+ result = try connection? . decrement ( #function, by: 0 ) . wait ( )
144+ XCTAssertEqual ( result, 7 )
145+ }
146+
147+ func test_mget( ) throws {
148+ let keys = [ " one " , " two " ]
149+ try keys. forEach { _ = try connection? . set ( $0, to: $0) . wait ( ) }
150+
151+ let values = try connection? . mget ( keys + [ " empty " ] ) . wait ( )
152+ XCTAssertEqual ( values? . count, 3 )
153+ XCTAssertEqual ( values ? [ 0 ] . string, " one " )
154+ XCTAssertEqual ( values ? [ 1 ] . string, " two " )
155+ XCTAssertEqual ( values ? [ 2 ] . isNull, true )
156+
157+ XCTAssertEqual ( try connection? . mget ( [ " empty " , #function] ) . wait ( ) . count, 2 )
158+ }
159+
160+ func test_mset( ) throws {
161+ let data = [
162+ " first " : 1 ,
163+ " second " : 2
164+ ]
165+ XCTAssertNoThrow ( try connection? . mset ( data) . wait ( ) )
166+ let values = try connection? . mget ( [ " first " , " second " ] ) . wait ( ) . compactMap { $0. string }
167+ XCTAssertEqual ( values? . count, 2 )
168+ XCTAssertEqual ( values ? [ 0 ] , " 1 " )
169+ XCTAssertEqual ( values ? [ 1 ] , " 2 " )
170+
171+ XCTAssertNoThrow ( try connection? . mset ( [ " first " : 10 ] ) . wait ( ) )
172+ let val = try connection? . get ( " first " ) . wait ( )
173+ XCTAssertEqual ( val, " 10 " )
174+ }
175+
176+ func test_msetnx( ) throws {
177+ let data = [
178+ " first " : 1 ,
179+ " second " : 2
180+ ]
181+ var success = try connection? . msetnx ( data) . wait ( )
182+ XCTAssertEqual ( success, true )
183+
184+ success = try connection? . msetnx ( [ " first " : 10 , " second " : 20 ] ) . wait ( )
185+ XCTAssertEqual ( success, false )
186+
187+ let values = try connection? . mget ( [ " first " , " second " ] ) . wait ( ) . compactMap { $0. string }
188+ XCTAssertEqual ( values ? [ 0 ] , " 1 " )
189+ XCTAssertEqual ( values ? [ 1 ] , " 2 " )
190+ }
191+
103192 static var allTests = [
104193 ( " test_select " , test_select) ,
105194 ( " test_set " , test_set) ,
@@ -108,5 +197,14 @@ final class BasicCommandsTests: XCTestCase {
108197 ( " test_delete " , test_delete) ,
109198 ( " test_ping " , test_ping) ,
110199 ( " test_echo " , test_echo) ,
200+ ( " test_swapdb " , test_swapdb) ,
201+ ( " test_increment " , test_increment) ,
202+ ( " test_incrementBy " , test_incrementBy) ,
203+ ( " test_incrementByFloat " , test_incrementByFloat) ,
204+ ( " test_decrement " , test_decrement) ,
205+ ( " test_decrementBy " , test_decrementBy) ,
206+ ( " test_mget " , test_mget) ,
207+ ( " test_mset " , test_mset) ,
208+ ( " test_msetnx " , test_msetnx) ,
111209 ]
112210}
0 commit comments