@@ -40,14 +40,14 @@ var space = "testDecimal"
40
40
var index = "primary"
41
41
42
42
type TupleDecimal struct {
43
- number decimal. Decimal
43
+ number DecNumber
44
44
}
45
45
46
46
func (t * TupleDecimal ) EncodeMsgpack (e * msgpack.Encoder ) error {
47
47
if err := e .EncodeSliceLen (1 ); err != nil {
48
48
return err
49
49
}
50
- return e .EncodeValue (reflect .ValueOf (t .number ))
50
+ return e .EncodeValue (reflect .ValueOf (& t .number ))
51
51
}
52
52
53
53
func (t * TupleDecimal ) DecodeMsgpack (d * msgpack.Decoder ) error {
@@ -64,7 +64,7 @@ func (t *TupleDecimal) DecodeMsgpack(d *msgpack.Decoder) error {
64
64
if err != nil {
65
65
return err
66
66
}
67
- t .number = res .(decimal. Decimal )
67
+ t .number = res .(DecNumber )
68
68
69
69
return nil
70
70
}
@@ -134,15 +134,17 @@ func TestMPEncodeDecode(t *testing.T) {
134
134
t .Fatal (err )
135
135
}
136
136
var buf []byte
137
- tuple := TupleDecimal {number : decNum }
137
+ tuple := TupleDecimal {number : DecNumber { decNum } }
138
138
if buf , err = msgpack .Marshal (& tuple ); err != nil {
139
139
t .Fatalf ("Failed to encode decimal number '%s' to a MessagePack buffer: %s" , testcase .numString , err )
140
140
}
141
141
var v TupleDecimal
142
142
if err = msgpack .Unmarshal (buf , & v ); err != nil {
143
143
t .Fatalf ("Failed to decode MessagePack buffer '%x' to a decimal number: %s" , buf , err )
144
144
}
145
- if ! decNum .Equal (v .number ) {
145
+ if ! decNum .Equal (v .number .Decimal ) {
146
+ fmt .Println (decNum )
147
+ fmt .Println (v .number )
146
148
t .Fatal ("Decimal numbers are not equal" )
147
149
}
148
150
})
@@ -235,7 +237,7 @@ func TestEncodeStringToBCDIncorrectNumber(t *testing.T) {
235
237
func TestEncodeMaxNumber (t * testing.T ) {
236
238
referenceErrMsg := "msgpack: decimal number is bigger than maximum supported number (10^38 - 1)"
237
239
decNum := decimal .New (1 , DecimalPrecision ) // // 10^DecimalPrecision
238
- tuple := TupleDecimal {number : decNum }
240
+ tuple := TupleDecimal {number : DecNumber { decNum } }
239
241
_ , err := msgpack .Marshal (& tuple )
240
242
if err == nil {
241
243
t .Fatalf ("It is possible to encode a number unsupported by Tarantool" )
@@ -249,12 +251,14 @@ func TestEncodeMinNumber(t *testing.T) {
249
251
referenceErrMsg := "msgpack: decimal number is lesser than minimum supported number (-10^38 - 1)"
250
252
two := decimal .NewFromInt (2 )
251
253
decNum := decimal .New (1 , DecimalPrecision ).Neg ().Sub (two ) // -10^DecimalPrecision - 2
252
- tuple := TupleDecimal {number : decNum }
254
+ tuple := TupleDecimal {number : DecNumber { decNum } }
253
255
_ , err := msgpack .Marshal (& tuple )
254
256
if err == nil {
255
257
t .Fatalf ("It is possible to encode a number unsupported by Tarantool" )
256
258
}
257
259
if err .Error () != referenceErrMsg {
260
+ fmt .Println ("Actual message: " , err .Error ())
261
+ fmt .Println ("Expected message: " , referenceErrMsg )
258
262
t .Fatalf ("Incorrect error message on attempt to encode number unsupported by Tarantool" )
259
263
}
260
264
}
@@ -266,7 +270,7 @@ func benchmarkMPEncodeDecode(b *testing.B, src decimal.Decimal, dst interface{})
266
270
var buf []byte
267
271
var err error
268
272
for i := 0 ; i < b .N ; i ++ {
269
- tuple := TupleDecimal {number : src }
273
+ tuple := TupleDecimal {number : DecNumber { src } }
270
274
if buf , err = msgpack .Marshal (& tuple ); err != nil {
271
275
b .Fatal (err )
272
276
}
@@ -348,7 +352,7 @@ func tupleValueIsDecimal(t *testing.T, tuples []interface{}, number decimal.Deci
348
352
if len (tpl ) != 1 {
349
353
t .Fatalf ("Unexpected return value body (tuple len)" )
350
354
}
351
- if val , ok := tpl [0 ].(decimal. Decimal ); ! ok || ! val .Equal (number ) {
355
+ if val , ok := tpl [0 ].(DecNumber ); ! ok || ! val .Equal (number ) {
352
356
t .Fatalf ("Unexpected return value body (tuple 0 field)" )
353
357
}
354
358
}
@@ -441,7 +445,7 @@ func TestSelect(t *testing.T) {
441
445
t .Fatalf ("Failed to prepare test decimal: %s" , err )
442
446
}
443
447
444
- resp , err := conn .Insert (space , []interface {}{number })
448
+ resp , err := conn .Insert (space , []interface {}{& DecNumber { number } })
445
449
if err != nil {
446
450
t .Fatalf ("Decimal insert failed: %s" , err )
447
451
}
@@ -452,7 +456,7 @@ func TestSelect(t *testing.T) {
452
456
453
457
var offset uint32 = 0
454
458
var limit uint32 = 1
455
- resp , err = conn .Select (space , index , offset , limit , IterEq , []interface {}{number })
459
+ resp , err = conn .Select (space , index , offset , limit , IterEq , []interface {}{& DecNumber { number } })
456
460
if err != nil {
457
461
t .Fatalf ("Decimal select failed: %s" , err .Error ())
458
462
}
@@ -461,7 +465,7 @@ func TestSelect(t *testing.T) {
461
465
}
462
466
tupleValueIsDecimal (t , resp .Data , number )
463
467
464
- resp , err = conn .Delete (space , index , []interface {}{number })
468
+ resp , err = conn .Delete (space , index , []interface {}{& DecNumber { number } })
465
469
if err != nil {
466
470
t .Fatalf ("Decimal delete failed: %s" , err )
467
471
}
@@ -474,7 +478,7 @@ func assertInsert(t *testing.T, conn *Connection, numString string) {
474
478
t .Fatalf ("Failed to prepare test decimal: %s" , err )
475
479
}
476
480
477
- resp , err := conn .Insert (space , []interface {}{number })
481
+ resp , err := conn .Insert (space , []interface {}{& DecNumber { number } })
478
482
if err != nil {
479
483
t .Fatalf ("Decimal insert failed: %s" , err )
480
484
}
@@ -483,7 +487,7 @@ func assertInsert(t *testing.T, conn *Connection, numString string) {
483
487
}
484
488
tupleValueIsDecimal (t , resp .Data , number )
485
489
486
- resp , err = conn .Delete (space , index , []interface {}{number })
490
+ resp , err = conn .Delete (space , index , []interface {}{& DecNumber { number } })
487
491
if err != nil {
488
492
t .Fatalf ("Decimal delete failed: %s" , err )
489
493
}
@@ -515,7 +519,7 @@ func TestReplace(t *testing.T) {
515
519
t .Fatalf ("Failed to prepare test decimal: %s" , err )
516
520
}
517
521
518
- respRep , errRep := conn .Replace (space , []interface {}{number })
522
+ respRep , errRep := conn .Replace (space , []interface {}{& DecNumber { number } })
519
523
if errRep != nil {
520
524
t .Fatalf ("Decimal replace failed: %s" , errRep )
521
525
}
@@ -524,7 +528,7 @@ func TestReplace(t *testing.T) {
524
528
}
525
529
tupleValueIsDecimal (t , respRep .Data , number )
526
530
527
- respSel , errSel := conn .Select (space , index , 0 , 1 , IterEq , []interface {}{number })
531
+ respSel , errSel := conn .Select (space , index , 0 , 1 , IterEq , []interface {}{& DecNumber { number } })
528
532
if errSel != nil {
529
533
t .Fatalf ("Decimal select failed: %s" , errSel )
530
534
}
0 commit comments