@@ -19,6 +19,23 @@ describe SparseBitSet do
1919 s.none?.should eq(true )
2020 end
2121
22+ it " should answer `false` for a non-empty set" do
23+ s = BitSet .new()
24+ s.set(1 _u64 )
25+ s.none?.should eq(false )
26+ end
27+
28+ it " should have no bits set upon creation" do
29+ s = BitSet .new()
30+ s.any?.should eq(false )
31+ end
32+
33+ it " should answer `true` for a non-empty set" do
34+ s = BitSet .new()
35+ s.set(1 _u64 )
36+ s.any?.should eq(true )
37+ end
38+
2239 it " should set the given bit and test it" do
2340 s = BitSet .new()
2441 s.set(1 _u64 )
@@ -690,5 +707,212 @@ describe SparseBitSet do
690707 t = s.complement()
691708 t.length.should eq(997 )
692709 end
710+
711+ it " should have a length that is prior length - 3" do
712+ s = BitSet .new()
713+ s.set(64 _u64 )
714+ s.set(100 _u64 )
715+ s.set(1000 _u64 )
716+ t = s.complement()
717+ t.length.should eq(997 )
718+ end
719+ end
720+
721+ describe " set-wide predicates" do
722+ it " should answer `false`" do
723+ s = BitSet .new()
724+ s.all?.should eq(false )
725+ end
726+
727+ it " should answer `true`" do
728+ s = BitSet .new()
729+ s.set(1 _u64 )
730+ s.all?.should eq(true )
731+ end
732+
733+ it " should answer `false`" do
734+ s = BitSet .new()
735+ s.set(10 _u64 )
736+ s.all?.should eq(false )
737+ end
738+
739+ it " should answer `false`" do
740+ s = BitSet .new()
741+ s.set(100 _u64 )
742+ s.all?.should eq(false )
743+ end
744+
745+ it " should answer `true`" do
746+ s = BitSet .new()
747+ s.set(1 _u64 )
748+ s.set(2 _u64 )
749+ s.all?.should eq(true )
750+ end
751+
752+ it " should answer `true`" do
753+ s = BitSet .new()
754+ s.set(1 _u64 )
755+ s.set(2 _u64 )
756+ s.set(3 _u64 )
757+ s.set(4 _u64 )
758+ s.set(5 _u64 )
759+ s.set(6 _u64 )
760+ s.set(7 _u64 )
761+ s.set(8 _u64 )
762+ s.set(9 _u64 )
763+ s.set(11 _u64 )
764+ s.set(12 _u64 )
765+ s.set(13 _u64 )
766+ s.set(14 _u64 )
767+ s.set(15 _u64 )
768+ s.set(16 _u64 )
769+ s.set(17 _u64 )
770+ s.set(18 _u64 )
771+ s.set(19 _u64 )
772+ s.set(21 _u64 )
773+ s.set(22 _u64 )
774+ s.set(23 _u64 )
775+ s.set(24 _u64 )
776+ s.set(25 _u64 )
777+ s.set(26 _u64 )
778+ s.set(27 _u64 )
779+ s.set(28 _u64 )
780+ s.set(29 _u64 )
781+ s.set(31 _u64 )
782+ s.set(32 _u64 )
783+ s.set(33 _u64 )
784+ s.set(34 _u64 )
785+ s.set(35 _u64 )
786+ s.set(36 _u64 )
787+ s.set(37 _u64 )
788+ s.set(38 _u64 )
789+ s.set(39 _u64 )
790+ s.set(41 _u64 )
791+ s.set(42 _u64 )
792+ s.set(43 _u64 )
793+ s.set(44 _u64 )
794+ s.set(45 _u64 )
795+ s.set(46 _u64 )
796+ s.set(47 _u64 )
797+ s.set(48 _u64 )
798+ s.set(49 _u64 )
799+ s.set(51 _u64 )
800+ s.set(52 _u64 )
801+ s.set(53 _u64 )
802+ s.set(54 _u64 )
803+ s.set(55 _u64 )
804+ s.set(56 _u64 )
805+ s.set(57 _u64 )
806+ s.set(58 _u64 )
807+ s.set(59 _u64 )
808+ s.set(61 _u64 )
809+ s.set(62 _u64 )
810+ s.set(63 _u64 )
811+ s.set(64 _u64 )
812+ s.set(65 _u64 )
813+ s.set(66 _u64 )
814+ s.set(67 _u64 )
815+ s.set(68 _u64 )
816+ s.set(69 _u64 )
817+ s.all?.should eq(true )
818+ end
819+
820+ it " should answer `true`" do
821+ s = BitSet .new()
822+ s.set(64 _u64 )
823+ s.set(65 _u64 )
824+ s.set(66 _u64 )
825+ s.set(67 _u64 )
826+ s.set(68 _u64 )
827+ s.set(69 _u64 )
828+ s.all?.should eq(false )
829+ end
830+ end
831+
832+ describe " superset" do
833+ it " should check two empty sets" do
834+ s = BitSet .new()
835+ t = BitSet .new()
836+ s.superset?(t).should eq(true )
837+ end
838+
839+ it " should check a non-empty and an empty set" do
840+ s = BitSet .new()
841+ s.set(64 _u64 )
842+ t = BitSet .new()
843+ s.superset?(t).should eq(true )
844+ end
845+
846+ it " should check a non-empty and an empty set" do
847+ s = BitSet .new()
848+ s.set(64 _u64 )
849+ t = BitSet .new()
850+ t.superset?(s).should eq(false )
851+ end
852+
853+ it " should check two equal sets" do
854+ s = BitSet .new()
855+ s.set(64 _u64 )
856+ t = BitSet .new()
857+ t.set(64 _u64 )
858+ s.superset?(t).should eq(true )
859+ end
860+
861+ it " should check two unequal sets" do
862+ s = BitSet .new()
863+ s.set(1 _u64 )
864+ s.set(64 _u64 )
865+ t = BitSet .new()
866+ t.set(64 _u64 )
867+ s.superset?(t).should eq(true )
868+ end
869+
870+ it " should check two unequal sets" do
871+ s = BitSet .new()
872+ s.set(64 _u64 )
873+ t = BitSet .new()
874+ t.set(1 _u64 )
875+ t.set(64 _u64 )
876+ s.superset?(t).should eq(false )
877+ end
878+
879+ it " should check two empty sets" do
880+ s = BitSet .new()
881+ t = BitSet .new()
882+ s.strict_superset?(t).should eq(false )
883+ end
884+
885+ it " should check a non-empty and an empty set" do
886+ s = BitSet .new()
887+ s.set(64 _u64 )
888+ t = BitSet .new()
889+ t.strict_superset?(s).should eq(false )
890+ end
891+
892+ it " should check two equal sets" do
893+ s = BitSet .new()
894+ s.set(64 _u64 )
895+ t = BitSet .new()
896+ t.set(64 _u64 )
897+ s.strict_superset?(t).should eq(false )
898+ end
899+
900+ it " should check two unequal sets" do
901+ s = BitSet .new()
902+ s.set(64 _u64 )
903+ t = BitSet .new()
904+ t.set(1 _u64 )
905+ t.set(64 _u64 )
906+ s.strict_superset?(t).should eq(false )
907+ end
908+
909+ it " should check two unequal sets" do
910+ s = BitSet .new()
911+ s.set(64 _u64 )
912+ t = BitSet .new()
913+ t.set(1 _u64 )
914+ t.set(64 _u64 )
915+ t.strict_superset?(s).should eq(true )
916+ end
693917 end
694918end
0 commit comments