16
16
from .lib .skip import skip_or_run_decimal_test
17
17
from tarantool .error import MsgpackError , MsgpackWarning
18
18
19
- class TestSuite_MsgpackExt (unittest .TestCase ):
19
+ class TestSuite_Decimal (unittest .TestCase ):
20
20
@classmethod
21
21
def setUpClass (self ):
22
- print (' MSGPACK EXT TYPES ' .center (70 , '=' ), file = sys .stderr )
22
+ print (' DECIMAL EXT TYPE ' .center (70 , '=' ), file = sys .stderr )
23
23
print ('-' * 70 , file = sys .stderr )
24
24
self .srv = TarantoolServer ()
25
25
self .srv .script = 'test/suites/box.lua'
@@ -50,7 +50,7 @@ def setUp(self):
50
50
self .adm ("box.space['test']:truncate()" )
51
51
52
52
53
- valid_decimal_cases = {
53
+ valid_cases = {
54
54
'simple_decimal_1' : {
55
55
'python' : decimal .Decimal ('0.7' ),
56
56
'msgpack' : (b'\x01 \x7c ' ),
@@ -219,47 +219,47 @@ def setUp(self):
219
219
},
220
220
}
221
221
222
- def test_decimal_msgpack_decode (self ):
223
- for name in self .valid_decimal_cases .keys ():
222
+ def test_msgpack_decode (self ):
223
+ for name in self .valid_cases .keys ():
224
224
with self .subTest (msg = name ):
225
- decimal_case = self .valid_decimal_cases [name ]
225
+ case = self .valid_cases [name ]
226
226
227
- self .assertEqual (unpacker_ext_hook (1 , decimal_case ['msgpack' ]),
228
- decimal_case ['python' ])
227
+ self .assertEqual (unpacker_ext_hook (1 , case ['msgpack' ]),
228
+ case ['python' ])
229
229
230
230
@skip_or_run_decimal_test
231
- def test_decimal_tarantool_decode (self ):
232
- for name in self .valid_decimal_cases .keys ():
231
+ def test_tarantool_decode (self ):
232
+ for name in self .valid_cases .keys ():
233
233
with self .subTest (msg = name ):
234
- decimal_case = self .valid_decimal_cases [name ]
234
+ case = self .valid_cases [name ]
235
235
236
- self .adm (f"box.space['test']:replace{{'{ name } ', { decimal_case ['tarantool' ]} }}" )
236
+ self .adm (f"box.space['test']:replace{{'{ name } ', { case ['tarantool' ]} }}" )
237
237
238
238
self .assertSequenceEqual (
239
239
self .con .select ('test' , name ),
240
- [[name , decimal_case ['python' ]]])
240
+ [[name , case ['python' ]]])
241
241
242
- def test_decimal_msgpack_encode (self ):
243
- for name in self .valid_decimal_cases .keys ():
242
+ def test_msgpack_encode (self ):
243
+ for name in self .valid_cases .keys ():
244
244
with self .subTest (msg = name ):
245
- decimal_case = self .valid_decimal_cases [name ]
245
+ case = self .valid_cases [name ]
246
246
247
- self .assertEqual (packer_default (decimal_case ['python' ]),
248
- msgpack .ExtType (code = 1 , data = decimal_case ['msgpack' ]))
247
+ self .assertEqual (packer_default (case ['python' ]),
248
+ msgpack .ExtType (code = 1 , data = case ['msgpack' ]))
249
249
250
250
@skip_or_run_decimal_test
251
- def test_decimal_tarantool_encode (self ):
252
- for name in self .valid_decimal_cases .keys ():
251
+ def test_tarantool_encode (self ):
252
+ for name in self .valid_cases .keys ():
253
253
with self .subTest (msg = name ):
254
- decimal_case = self .valid_decimal_cases [name ]
254
+ case = self .valid_cases [name ]
255
255
256
- self .con .insert ('test' , [name , decimal_case ['python' ]])
256
+ self .con .insert ('test' , [name , case ['python' ]])
257
257
258
258
lua_eval = f"""
259
259
local tuple = box.space['test']:get('{ name } ')
260
260
assert(tuple ~= nil)
261
261
262
- local dec = { decimal_case ['tarantool' ]}
262
+ local dec = { case ['tarantool' ]}
263
263
if tuple[2] == dec then
264
264
return true
265
265
else
@@ -271,7 +271,7 @@ def test_decimal_tarantool_encode(self):
271
271
self .assertSequenceEqual (self .con .eval (lua_eval ), [True ])
272
272
273
273
274
- error_decimal_cases = {
274
+ error_cases = {
275
275
'decimal_limit_break_head_1' : {
276
276
'python' : decimal .Decimal ('999999999999999999999999999999999999999' ),
277
277
},
@@ -298,31 +298,31 @@ def test_decimal_tarantool_encode(self):
298
298
},
299
299
}
300
300
301
- def test_decimal_msgpack_encode_error (self ):
302
- for name in self .error_decimal_cases .keys ():
301
+ def test_msgpack_encode_error (self ):
302
+ for name in self .error_cases .keys ():
303
303
with self .subTest (msg = name ):
304
- decimal_case = self .error_decimal_cases [name ]
304
+ case = self .error_cases [name ]
305
305
306
306
msg = 'Decimal cannot be encoded: Tarantool decimal ' + \
307
307
'supports a maximum of 38 digits.'
308
308
self .assertRaisesRegex (
309
309
MsgpackError , msg ,
310
- lambda : packer_default (decimal_case ['python' ]))
310
+ lambda : packer_default (case ['python' ]))
311
311
312
312
@skip_or_run_decimal_test
313
- def test_decimal_tarantool_encode_error (self ):
314
- for name in self .error_decimal_cases .keys ():
313
+ def test_tarantool_encode_error (self ):
314
+ for name in self .error_cases .keys ():
315
315
with self .subTest (msg = name ):
316
- decimal_case = self .error_decimal_cases [name ]
316
+ case = self .error_cases [name ]
317
317
318
318
msg = 'Decimal cannot be encoded: Tarantool decimal ' + \
319
319
'supports a maximum of 38 digits.'
320
320
self .assertRaisesRegex (
321
321
MsgpackError , msg ,
322
- lambda : self .con .insert ('test' , [name , decimal_case ['python' ]]))
322
+ lambda : self .con .insert ('test' , [name , case ['python' ]]))
323
323
324
324
325
- precision_loss_decimal_cases = {
325
+ precision_loss_cases = {
326
326
'decimal_limit_break_tail_1' : {
327
327
'python' : decimal .Decimal ('1.00000000000000000000000000000000000001' ),
328
328
'msgpack' : (b'\x00 \x1c ' ),
@@ -379,41 +379,41 @@ def test_decimal_tarantool_encode_error(self):
379
379
},
380
380
}
381
381
382
- def test_decimal_msgpack_encode_with_precision_loss (self ):
383
- for name in self .precision_loss_decimal_cases .keys ():
382
+ def test_msgpack_encode_with_precision_loss (self ):
383
+ for name in self .precision_loss_cases .keys ():
384
384
with self .subTest (msg = name ):
385
- decimal_case = self .precision_loss_decimal_cases [name ]
385
+ case = self .precision_loss_cases [name ]
386
386
387
387
msg = 'Decimal encoded with loss of precision: ' + \
388
388
'Tarantool decimal supports a maximum of 38 digits.'
389
389
390
390
self .assertWarnsRegex (
391
391
MsgpackWarning , msg ,
392
392
lambda : self .assertEqual (
393
- packer_default (decimal_case ['python' ]),
394
- msgpack .ExtType (code = 1 , data = decimal_case ['msgpack' ])
393
+ packer_default (case ['python' ]),
394
+ msgpack .ExtType (code = 1 , data = case ['msgpack' ])
395
395
)
396
396
)
397
397
398
398
399
399
@skip_or_run_decimal_test
400
- def test_decimal_tarantool_encode_with_precision_loss (self ):
401
- for name in self .precision_loss_decimal_cases .keys ():
400
+ def test_tarantool_encode_with_precision_loss (self ):
401
+ for name in self .precision_loss_cases .keys ():
402
402
with self .subTest (msg = name ):
403
- decimal_case = self .precision_loss_decimal_cases [name ]
403
+ case = self .precision_loss_cases [name ]
404
404
405
405
msg = 'Decimal encoded with loss of precision: ' + \
406
406
'Tarantool decimal supports a maximum of 38 digits.'
407
407
408
408
self .assertWarnsRegex (
409
409
MsgpackWarning , msg ,
410
- lambda : self .con .insert ('test' , [name , decimal_case ['python' ]]))
410
+ lambda : self .con .insert ('test' , [name , case ['python' ]]))
411
411
412
412
lua_eval = f"""
413
413
local tuple = box.space['test']:get('{ name } ')
414
414
assert(tuple ~= nil)
415
415
416
- local dec = { decimal_case ['tarantool' ]}
416
+ local dec = { case ['tarantool' ]}
417
417
if tuple[2] == dec then
418
418
return true
419
419
else
@@ -424,6 +424,7 @@ def test_decimal_tarantool_encode_with_precision_loss(self):
424
424
425
425
self .assertSequenceEqual (self .con .eval (lua_eval ), [True ])
426
426
427
+
427
428
@classmethod
428
429
def tearDownClass (self ):
429
430
self .con .close ()
0 commit comments