@@ -376,6 +376,31 @@ TEST_P(ClientCase, Decimal) {
376
376
auto d5 = std::make_shared<ColumnDecimal>(18 , 9 );
377
377
auto d6 = std::make_shared<ColumnDecimal>(38 , 19 );
378
378
379
+ EXPECT_THROW (
380
+ d1->Append (" 1234567890123456789012345678901234567890" ),
381
+ std::runtime_error
382
+ );
383
+ EXPECT_THROW (
384
+ d1->Append (" 123456789012345678901234567890123456.7890" ),
385
+ std::runtime_error
386
+ );
387
+ EXPECT_THROW (
388
+ d1->Append (" -1234567890123456789012345678901234567890" ),
389
+ std::runtime_error
390
+ );
391
+ EXPECT_THROW (
392
+ d1->Append (" 12345678901234567890123456789012345678a" ),
393
+ std::runtime_error
394
+ );
395
+ EXPECT_THROW (
396
+ d1->Append (" 12345678901234567890123456789012345678-" ),
397
+ std::runtime_error
398
+ );
399
+ EXPECT_THROW (
400
+ d1->Append (" 1234.12.1234" ),
401
+ std::runtime_error
402
+ );
403
+
379
404
id->Append (1 );
380
405
d1->Append (123456789 );
381
406
d2->Append (123456789012345678 );
@@ -401,7 +426,6 @@ TEST_P(ClientCase, Decimal) {
401
426
d6->Append (-999999999999999999 );
402
427
403
428
// Check strings with decimal point
404
- // TODO: check that exception is thrown if point doesn't match the `scale`
405
429
id->Append (4 );
406
430
d1->Append (" 12345.6789" );
407
431
d2->Append (" 123456789.012345678" );
@@ -419,6 +443,14 @@ TEST_P(ClientCase, Decimal) {
419
443
d5->Append (" -123456789012345678" );
420
444
d6->Append (" -12345678901234567890123456789012345678" );
421
445
446
+ id->Append (6 );
447
+ d1->Append (" 12345.678" );
448
+ d2->Append (" 123456789.0123456789" );
449
+ d3->Append (" 1234567890123456789.0123456789012345678" );
450
+ d4->Append (" 12345.6789" );
451
+ d5->Append (" 123456789.012345678" );
452
+ d6->Append (" 1234567890123456789.0123456789012345678" );
453
+
422
454
b.AppendColumn (" id" , id);
423
455
b.AppendColumn (" d1" , d1);
424
456
b.AppendColumn (" d2" , d2);
@@ -435,7 +467,7 @@ TEST_P(ClientCase, Decimal) {
435
467
return ;
436
468
}
437
469
438
- ASSERT_EQ (5u , b.GetRowCount ());
470
+ ASSERT_EQ (6u , b.GetRowCount ());
439
471
440
472
auto int128_to_string = [](Int128 value) {
441
473
std::string result;
@@ -504,6 +536,14 @@ TEST_P(ClientCase, Decimal) {
504
536
EXPECT_EQ (" -123456789" , int128_to_string (decimal (4 , 4 )));
505
537
EXPECT_EQ (" -123456789012345678" , int128_to_string (decimal (5 , 4 )));
506
538
EXPECT_EQ (" -12345678901234567890123456789012345678" , int128_to_string (decimal (6 , 4 )));
539
+
540
+ EXPECT_EQ (6u , b[0 ]->As <ColumnUInt64>()->At (5 ));
541
+ EXPECT_EQ (" 123456780" , int128_to_string (decimal (1 , 5 )));
542
+ EXPECT_EQ (" 123456789012345678" , int128_to_string (decimal (2 , 5 )));
543
+ EXPECT_EQ (" 12345678901234567890123456789012345678" , int128_to_string (decimal (3 , 5 )));
544
+ EXPECT_EQ (" 123456789" , int128_to_string (decimal (4 , 5 )));
545
+ EXPECT_EQ (" 123456789012345678" , int128_to_string (decimal (5 , 5 )));
546
+ EXPECT_EQ (" 12345678901234567890123456789012345678" , int128_to_string (decimal (6 , 5 )));
507
547
});
508
548
}
509
549
@@ -518,4 +558,3 @@ INSTANTIATE_TEST_CASE_P(
518
558
.SetPingBeforeQuery(false )
519
559
.SetCompressionMethod(CompressionMethod::LZ4)
520
560
));
521
-
0 commit comments