@@ -14,7 +14,67 @@ void Test(const TString& input) {
14
14
}
15
15
16
16
Y_UNIT_TEST_SUITE (ParseType) {
17
- Y_UNIT_TEST (Throwing) {
17
+ Y_UNIT_TEST (EmptyVisitor) {
18
+ TEmptyTypeVisitor v;
19
+ v.OnNull ();
20
+ v.OnVoid ();
21
+ v.OnEmptyList ();
22
+ v.OnEmptyDict ();
23
+ v.OnBool ();
24
+ v.OnInt8 ();
25
+ v.OnUint8 ();
26
+ v.OnInt16 ();
27
+ v.OnUint16 ();
28
+ v.OnInt32 ();
29
+ v.OnUint32 ();
30
+ v.OnInt64 ();
31
+ v.OnUint64 ();
32
+ v.OnFloat ();
33
+ v.OnDouble ();
34
+ v.OnString ();
35
+ v.OnUtf8 ();
36
+ v.OnYson ();
37
+ v.OnJson ();
38
+ v.OnJsonDocument ();
39
+ v.OnUuid ();
40
+ v.OnDyNumber ();
41
+ v.OnDate ();
42
+ v.OnDatetime ();
43
+ v.OnTimestamp ();
44
+ v.OnTzDate ();
45
+ v.OnTzDatetime ();
46
+ v.OnTzTimestamp ();
47
+ v.OnInterval ();
48
+ v.OnDate32 ();
49
+ v.OnDatetime64 ();
50
+ v.OnTimestamp64 ();
51
+ v.OnTzDate32 ();
52
+ v.OnTzDatetime64 ();
53
+ v.OnTzTimestamp64 ();
54
+ v.OnInterval64 ();
55
+ v.OnDecimal (10 , 1 );
56
+ v.OnBeginOptional ();
57
+ v.OnEndOptional ();
58
+ v.OnBeginList ();
59
+ v.OnEndList ();
60
+ v.OnBeginTuple ();
61
+ v.OnTupleItem ();
62
+ v.OnEndTuple ();
63
+ v.OnBeginStruct ();
64
+ v.OnStructItem (" foo" );
65
+ v.OnEndStruct ();
66
+ v.OnBeginDict ();
67
+ v.OnDictKey ();
68
+ v.OnDictPayload ();
69
+ v.OnEndDict ();
70
+ v.OnBeginVariant ();
71
+ v.OnEndVariant ();
72
+ v.OnBeginTagged (" foo" );
73
+ v.OnEndTagged ();
74
+ v.OnPgType (" int4" , " N" );
75
+ }
76
+
77
+ Y_UNIT_TEST (ThrowingVisitor) {
18
78
TThrowingTypeVisitor v;
19
79
UNIT_ASSERT_EXCEPTION (v.OnNull (), TUnsupportedException);
20
80
UNIT_ASSERT_EXCEPTION (v.OnVoid (), TUnsupportedException);
@@ -461,6 +521,48 @@ Y_UNIT_TEST_SUITE(ParseResponse) {
461
521
UNIT_ASSERT (!res.IsTruncated );
462
522
}
463
523
524
+ Y_UNIT_TEST (WriteNoType) {
525
+ auto response = NYT::NodeFromYsonString (R"( [
526
+ {
527
+ Write = [
528
+ {
529
+ Data = data;
530
+ Truncated = %true;
531
+ }
532
+ ]
533
+ };
534
+ ])" );
535
+
536
+ auto resList = ParseResponse (response);
537
+ UNIT_ASSERT_VALUES_EQUAL (resList.size (), 1 );
538
+ const auto & res = resList[0 ];
539
+ UNIT_ASSERT_VALUES_EQUAL (res.Writes .size (), 1 );
540
+ const auto & write = res.Writes [0 ];
541
+ UNIT_ASSERT_VALUES_EQUAL (NYT::NodeToCanonicalYsonString (*write.Data ), " \" data\" " );
542
+ UNIT_ASSERT (!write.Type );
543
+ }
544
+
545
+ Y_UNIT_TEST (WriteNoData) {
546
+ auto response = NYT::NodeFromYsonString (R"( [
547
+ {
548
+ Write = [
549
+ {
550
+ Type = type;
551
+ Refs = [];
552
+ }
553
+ ]
554
+ };
555
+ ])" );
556
+
557
+ auto resList = ParseResponse (response);
558
+ UNIT_ASSERT_VALUES_EQUAL (resList.size (), 1 );
559
+ const auto & res = resList[0 ];
560
+ UNIT_ASSERT_VALUES_EQUAL (res.Writes .size (), 1 );
561
+ const auto & write = res.Writes [0 ];
562
+ UNIT_ASSERT_VALUES_EQUAL (NYT::NodeToCanonicalYsonString (*write.Type ), " \" type\" " );
563
+ UNIT_ASSERT (!write.Data );
564
+ }
565
+
464
566
Y_UNIT_TEST (RefsEmpty) {
465
567
auto response = NYT::NodeFromYsonString (R"( [
466
568
{
0 commit comments