Packages
inplace
0.7.12
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/utils/bit_utils_test.exs
defmodule InPlace.Utils.BitUtilsTest do
use ExUnit.Case
alias InPlace.BitUtils
test "set_bit, unset_bit, bit_set?, bit_count, lsb, msb" do
sample_size = Enum.random(1..64)
random_positions = Enum.take_random(0..63, sample_size)
## Set bits
res = Enum.reduce(random_positions, 0,
fn p, acc -> BitUtils.set_bit(acc, p)
end)
assert BitUtils.bit_count(res) == sample_size
assert Enum.all?(0..63, fn p ->
bit_set? = BitUtils.bit_set?(res, p)
if p in random_positions do
bit_set?
else
!bit_set?
end
end)
## lsb/msb
assert BitUtils.lsb(res) == Enum.min(random_positions)
assert BitUtils.msb(res) == Enum.max(random_positions)
## Unset positions
res = Enum.reduce(random_positions, 0,
fn p, acc -> BitUtils.unset_bit(acc, p)
end)
assert BitUtils.bit_count(res) == 0
assert Enum.all?(0..63, fn p ->
!BitUtils.bit_set?(res, p)
end)
assert is_nil(BitUtils.lsb(res))
assert is_nil(BitUtils.msb(res))
end
end