@@ -596,6 +596,24 @@ var symdiffCases = []symdiffTestCase{{
596
596
removed : _NS (),
597
597
modified : _NS (),
598
598
added : _NS (_P ("setStr" , _V ("c" ))),
599
+ }, {
600
+ lhs : `{"setStr":["a"]}` ,
601
+ rhs : `{"setStr":["a","b","b"]}` ,
602
+ removed : _NS (),
603
+ modified : _NS (),
604
+ added : _NS (_P ("setStr" , _V ("b" ))),
605
+ }, {
606
+ lhs : `{"setStr":["a","b"]}` ,
607
+ rhs : `{"setStr":["a","b","b"]}` ,
608
+ removed : _NS (_P ("setStr" , _V ("b" ))),
609
+ modified : _NS (),
610
+ added : _NS (_P ("setStr" , _V ("b" ))),
611
+ }, {
612
+ lhs : `{"setStr":["b","b"]}` ,
613
+ rhs : `{"setStr":["a","b","b"]}` ,
614
+ removed : _NS (),
615
+ modified : _NS (),
616
+ added : _NS (_P ("setStr" , _V ("a" ))),
599
617
}, {
600
618
lhs : `{"setStr":["a","b","c"]}` ,
601
619
rhs : `{"setStr":[]}` ,
@@ -618,6 +636,28 @@ var symdiffCases = []symdiffTestCase{{
618
636
removed : _NS (_P ("setNumeric" , _V (3.14159 ))),
619
637
modified : _NS (),
620
638
added : _NS (_P ("setNumeric" , _V (3 ))),
639
+ }, {
640
+ lhs : `{"setStr":["a","b","b","c","a"]}` ,
641
+ rhs : `{"setStr":[]}` ,
642
+ removed : _NS (
643
+ _P ("setStr" , _V ("a" )),
644
+ _P ("setStr" , _V ("b" )),
645
+ _P ("setStr" , _V ("c" )),
646
+ ),
647
+ modified : _NS (),
648
+ added : _NS (),
649
+ }, {
650
+ lhs : `{"setBool":[true,true]}` ,
651
+ rhs : `{"setBool":[false]}` ,
652
+ removed : _NS (_P ("setBool" , _V (true ))),
653
+ modified : _NS (),
654
+ added : _NS (_P ("setBool" , _V (false ))),
655
+ }, {
656
+ lhs : `{"setNumeric":[1,2,2,3.14159,1]}` ,
657
+ rhs : `{"setNumeric":[1,2,3]}` ,
658
+ removed : _NS (_P ("setNumeric" , _V (1 )), _P ("setNumeric" , _V (2 )), _P ("setNumeric" , _V (3.14159 ))),
659
+ modified : _NS (),
660
+ added : _NS (_P ("setNumeric" , _V (1 )), _P ("setNumeric" , _V (2 )), _P ("setNumeric" , _V (3 ))),
621
661
}},
622
662
}, {
623
663
name : "associative list" ,
@@ -743,6 +783,48 @@ var symdiffCases = []symdiffTestCase{{
743
783
removed : _NS (),
744
784
modified : _NS (_P ("atomicList" )),
745
785
added : _NS (),
786
+ }, {
787
+ lhs : `{"list":[{"key":"a","id":1,"nv":2},{"key":"b","id":1},{"key":"a","id":1,"bv":true}]}` ,
788
+ rhs : `{"list":[{"key":"a","id":1},{"key":"a","id":2}]}` ,
789
+ removed : _NS (
790
+ _P ("list" , _KBF ("key" , "b" , "id" , 1 )),
791
+ _P ("list" , _KBF ("key" , "b" , "id" , 1 ), "key" ),
792
+ _P ("list" , _KBF ("key" , "b" , "id" , 1 ), "id" ),
793
+ _P ("list" , _KBF ("key" , "a" , "id" , 1 )),
794
+ ),
795
+ modified : _NS (),
796
+ added : _NS (
797
+ _P ("list" , _KBF ("key" , "a" , "id" , 1 )),
798
+ _P ("list" , _KBF ("key" , "a" , "id" , 1 ), "key" ),
799
+ _P ("list" , _KBF ("key" , "a" , "id" , 1 ), "id" ),
800
+ _P ("list" , _KBF ("key" , "a" , "id" , 2 )),
801
+ _P ("list" , _KBF ("key" , "a" , "id" , 2 ), "key" ),
802
+ _P ("list" , _KBF ("key" , "a" , "id" , 2 ), "id" ),
803
+ ),
804
+ }, {
805
+ lhs : `{"list":[{"key":"a","id":1},{"key":"b","id":1},{"key":"a","id":1,"bv":true}]}` ,
806
+ rhs : `{"list":[{"key":"a","id":1},{"key":"b","id":1},{"key":"a","id":1,"bv":true,"nv":1}]}` ,
807
+ removed : _NS (),
808
+ modified : _NS (_P ("list" , _KBF ("key" , "a" , "id" , 1 ))),
809
+ added : _NS (),
810
+ }, {
811
+ lhs : `{"list":[{"key":"a","id":1},{"key":"b","id":1},{"key":"a","id":1,"bv":true}]}` ,
812
+ rhs : `{"list":[{"key":"a","id":1},{"key":"b","id":1},{"key":"a","id":1,"bv":true}]}` ,
813
+ removed : _NS (),
814
+ modified : _NS (),
815
+ added : _NS (),
816
+ }, {
817
+ lhs : `{"list":[{"key":"a","id":1},{"key":"b","id":1},{"key":"a","id":1,"bv":true}]}` ,
818
+ rhs : `{"list":[{"key":"a","id":1},{"key":"b","id":1,"bv":true},{"key":"a","id":1,"bv":true}]}` ,
819
+ removed : _NS (),
820
+ modified : _NS (),
821
+ added : _NS (_P ("list" , _KBF ("key" , "b" , "id" , 1 ), "bv" )),
822
+ }, {
823
+ lhs : `{"list":[{"key":"a","id":1},{"key":"b","id":1},{"key":"a","id":1,"bv":true}]}` ,
824
+ rhs : `{"list":[{"key":"a","id":1},{"key":"b","id":1},{"key":"a","id":1,"bv":true}],"atomicList":["unrelated"]}` ,
825
+ removed : _NS (),
826
+ modified : _NS (),
827
+ added : _NS (_P ("atomicList" )),
746
828
}},
747
829
}}
748
830
@@ -757,11 +839,11 @@ func (tt symdiffTestCase) test(t *testing.T) {
757
839
t .Parallel ()
758
840
pt := parser .Type (tt .rootTypeName )
759
841
760
- tvLHS , err := pt .FromYAML (quint .lhs )
842
+ tvLHS , err := pt .FromYAML (quint .lhs , typed . AllowDuplicates )
761
843
if err != nil {
762
844
t .Fatalf ("failed to parse lhs: %v" , err )
763
845
}
764
- tvRHS , err := pt .FromYAML (quint .rhs )
846
+ tvRHS , err := pt .FromYAML (quint .rhs , typed . AllowDuplicates )
765
847
if err != nil {
766
848
t .Fatalf ("failed to parse rhs: %v" , err )
767
849
}
0 commit comments