@@ -672,4 +672,134 @@ public function testGetNamesDoesNotEffectIteratorPosition()
672
672
$ set ->getNames ();
673
673
$ this ->assertSame (EnumBasic::TWO , $ set ->current ()->getValue ());
674
674
}
675
+
676
+ public function testUnion ()
677
+ {
678
+ $ set1 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
679
+ $ set1 ->attach (EnumBasic::ONE );
680
+ $ set1 ->attach (EnumBasic::TWO );
681
+
682
+ $ set2 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
683
+ $ set2 ->attach (EnumBasic::TWO );
684
+ $ set2 ->attach (EnumBasic::THREE );
685
+
686
+ $ set3 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
687
+ $ set3 ->attach (EnumBasic::THREE );
688
+ $ set3 ->attach (EnumBasic::FOUR );
689
+
690
+ $ rs = $ set1 ->union ($ set2 , $ set3 );
691
+ $ this ->assertSame (array (
692
+ EnumBasic::ONE ,
693
+ EnumBasic::TWO ,
694
+ EnumBasic::THREE ,
695
+ EnumBasic::FOUR ,
696
+ ), $ rs ->getValues ());
697
+ }
698
+
699
+ public function testUnionThrowsInvalidArgumentException ()
700
+ {
701
+ $ set1 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
702
+ $ set2 = new EnumSet ('MabeEnumTest\TestAsset\Enum32 ' );
703
+
704
+ $ this ->setExpectedException ('InvalidArgumentException ' );
705
+ $ set1 ->union ($ set2 );
706
+ }
707
+
708
+ public function testIntersect ()
709
+ {
710
+ $ set1 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
711
+ $ set1 ->attach (EnumBasic::ONE );
712
+ $ set1 ->attach (EnumBasic::TWO );
713
+ $ set1 ->attach (EnumBasic::THREE );
714
+
715
+ $ set2 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
716
+ $ set2 ->attach (EnumBasic::TWO );
717
+ $ set2 ->attach (EnumBasic::THREE );
718
+ $ set2 ->attach (EnumBasic::FOUR );
719
+
720
+ $ set3 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
721
+ $ set3 ->attach (EnumBasic::THREE );
722
+ $ set3 ->attach (EnumBasic::FOUR );
723
+ $ set3 ->attach (EnumBasic::FIVE );
724
+
725
+ $ rs = $ set1 ->intersect ($ set2 , $ set3 );
726
+ $ this ->assertSame (array (
727
+ EnumBasic::THREE ,
728
+ ), $ rs ->getValues ());
729
+ }
730
+
731
+ public function testIntersectThrowsInvalidArgumentException ()
732
+ {
733
+ $ set1 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
734
+ $ set2 = new EnumSet ('MabeEnumTest\TestAsset\Enum32 ' );
735
+
736
+ $ this ->setExpectedException ('InvalidArgumentException ' );
737
+ $ set1 ->intersect ($ set2 );
738
+ }
739
+
740
+ public function testDiff ()
741
+ {
742
+ $ set1 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
743
+ $ set1 ->attach (EnumBasic::ONE );
744
+ $ set1 ->attach (EnumBasic::TWO );
745
+ $ set1 ->attach (EnumBasic::THREE );
746
+
747
+ $ set2 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
748
+ $ set2 ->attach (EnumBasic::TWO );
749
+ $ set2 ->attach (EnumBasic::THREE );
750
+ $ set2 ->attach (EnumBasic::FOUR );
751
+
752
+ $ set3 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
753
+ $ set3 ->attach (EnumBasic::THREE );
754
+ $ set3 ->attach (EnumBasic::FOUR );
755
+ $ set3 ->attach (EnumBasic::FIVE );
756
+
757
+ $ rs = $ set1 ->diff ($ set2 , $ set3 );
758
+ $ this ->assertSame (array (
759
+ EnumBasic::ONE ,
760
+ ), $ rs ->getValues ());
761
+ }
762
+
763
+ public function testDiffThrowsInvalidArgumentException ()
764
+ {
765
+ $ set1 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
766
+ $ set2 = new EnumSet ('MabeEnumTest\TestAsset\Enum32 ' );
767
+
768
+ $ this ->setExpectedException ('InvalidArgumentException ' );
769
+ $ set1 ->diff ($ set2 );
770
+ }
771
+
772
+ public function testSymDiff ()
773
+ {
774
+ $ set1 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
775
+ $ set1 ->attach (EnumBasic::ONE );
776
+ $ set1 ->attach (EnumBasic::TWO );
777
+ $ set1 ->attach (EnumBasic::THREE );
778
+
779
+ $ set2 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
780
+ $ set2 ->attach (EnumBasic::TWO );
781
+ $ set2 ->attach (EnumBasic::THREE );
782
+ $ set2 ->attach (EnumBasic::FOUR );
783
+
784
+ $ set3 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
785
+ $ set3 ->attach (EnumBasic::THREE );
786
+ $ set3 ->attach (EnumBasic::FOUR );
787
+ $ set3 ->attach (EnumBasic::FIVE );
788
+
789
+ $ rs = $ set1 ->symDiff ($ set2 , $ set3 );
790
+ $ this ->assertSame (array (
791
+ EnumBasic::ONE ,
792
+ EnumBasic::FOUR ,
793
+ EnumBasic::FIVE ,
794
+ ), $ rs ->getValues ());
795
+ }
796
+
797
+ public function testSymDiffThrowsInvalidArgumentException ()
798
+ {
799
+ $ set1 = new EnumSet ('MabeEnumTest\TestAsset\EnumBasic ' );
800
+ $ set2 = new EnumSet ('MabeEnumTest\TestAsset\Enum32 ' );
801
+
802
+ $ this ->setExpectedException ('InvalidArgumentException ' );
803
+ $ set1 ->symDiff ($ set2 );
804
+ }
675
805
}
0 commit comments