Packages
inplace
0.7.11
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Mutable data structures
Current section
Files
Jump to
Current section
Files
test/adt/bitset_ops_test.exs
defmodule InPlace.BitSetOpsTest do
use ExUnit.Case
alias InPlace.BitSet
## Tests here mirror the MapSet tests from Elixit test suite
## for:
## - union/2
## - intersection/2
## - difference/2
## - symmetric_difference/2
## - disjoint?/2
## - subset?/2
##
test "union/2" do
result = BitSet.union(BitSet.new([1, 3, 4]), BitSet.empty_set())
assert BitSet.equal?(result, BitSet.new([1, 3, 4]))
result = BitSet.union(BitSet.new(5..15), BitSet.new(10..25))
assert BitSet.equal?(result, BitSet.new(5..25))
result = BitSet.union(BitSet.new(1..120), BitSet.new(1..100))
assert BitSet.equal?(result, BitSet.new(1..120))
end
test "intersection/2" do
result = BitSet.intersection(BitSet.empty_set(), BitSet.new(1..21))
assert BitSet.equal?(result, BitSet.empty_set())
result = BitSet.intersection(BitSet.new(1..21), BitSet.new(4..24))
assert BitSet.equal?(result, BitSet.new(4..21))
result = BitSet.intersection(BitSet.new(2..100), BitSet.new(1..120))
assert BitSet.equal?(result, BitSet.new(2..100))
end
test "difference/2" do
result = BitSet.difference(BitSet.new(2..20), BitSet.empty_set())
assert BitSet.equal?(result, BitSet.new(2..20))
result = BitSet.difference(BitSet.new(2..20), BitSet.new(1..21))
assert BitSet.equal?(result, BitSet.empty_set())
result = BitSet.difference(BitSet.new(1..101), BitSet.new(2..100))
assert BitSet.equal?(result, BitSet.new([1, 101]))
end
test "symmetric_difference/2" do
result = BitSet.symmetric_difference(BitSet.new(1..5), BitSet.new(3..8))
assert BitSet.equal?(result, BitSet.new([1, 2, 6, 7, 8]))
result = BitSet.symmetric_difference(BitSet.empty_set(), BitSet.empty_set())
assert BitSet.equal?(result, BitSet.empty_set())
result = BitSet.symmetric_difference(BitSet.new(1..5), BitSet.new(1..5))
assert BitSet.equal?(result, BitSet.empty_set())
result = BitSet.symmetric_difference(BitSet.new([1, 2, 3]), BitSet.empty_set())
assert BitSet.equal?(result, BitSet.new([1, 2, 3]))
result = BitSet.symmetric_difference(BitSet.empty_set(), BitSet.new([1, 2, 3]))
assert BitSet.equal?(result, BitSet.new([1, 2, 3]))
end
test "disjoint?/2" do
assert BitSet.disjoint?(BitSet.empty_set(), BitSet.empty_set())
assert BitSet.disjoint?(BitSet.new(1..6), BitSet.new(8..20))
refute BitSet.disjoint?(BitSet.new(1..6), BitSet.new(5..15))
refute BitSet.disjoint?(BitSet.new(1..120), BitSet.new(1..6))
end
test "subset?/2" do
assert BitSet.subset?(BitSet.empty_set(), BitSet.empty_set())
assert BitSet.subset?(BitSet.new(1..6), BitSet.new(1..10))
assert BitSet.subset?(BitSet.new(1..6), BitSet.new(1..120))
refute BitSet.subset?(BitSet.new(1..120), BitSet.new(1..6))
end
end