Packages
fixpoint
0.11.4
0.22.1
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.6
0.20.5
0.20.4
0.20.3
0.20.2
0.20.1
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.18.2
0.18.1
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.13.5
0.13.4
0.13.2
0.13.1
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.2
0.12.1
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.52
0.8.51
0.8.50
0.8.49
0.8.48
0.8.46
0.8.44
0.8.43
0.8.42
0.8.41
0.8.40
0.8.39
0.8.38
0.8.37
0.8.36
0.8.35
0.8.34
0.8.33
0.8.32
0.8.31
0.8.30
0.8.29
0.8.28
0.8.27
0.8.26
0.8.25
0.8.24
0.8.23
0.8.22
0.8.21
0.8.20
0.8.19
0.8.18
0.8.17
0.8.16
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
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.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.1.3
0.1.2
0.1.1
0.1.0
Constraint Programming Solver
Current section
Files
Jump to
Current section
Files
test/variables/interface_test.exs
defmodule CPSolverTest.Variable.Interface do
use ExUnit.Case
describe "Views" do
alias CPSolver.IntVariable, as: Variable
alias CPSolver.Variable.Interface
import CPSolver.Variable.View.Factory
import CPSolver.Utils
test "view vs variable" do
v1_values = 1..10
v2_values = 1..10
values = [v1_values, v2_values]
variables = Enum.map(values, fn d -> Variable.new(d) end)
[var1, _var2] = variables
[view1, view2] = Enum.map(variables, fn var -> minus(var) end)
## Domain
##
assert domain_values(var1) |> Enum.sort() ==
Enum.to_list(v1_values) |> Enum.sort()
assert domain_values(view1) |> Enum.sort() ==
Enum.map(v1_values, fn x -> -x end) |> Enum.sort()
## Size
##
assert Interface.size(var1) == 10
assert Interface.size(view1) == 10
## Min
##
assert Interface.min(var1) == 1
assert Interface.min(view1) == -10
## Max
##
assert Interface.max(var1) == 10
assert Interface.max(view1) == -1
## Contains?
##
assert Interface.contains?(var1, 5)
refute Interface.contains?(var1, -5)
assert Interface.contains?(view1, -5)
refute Interface.contains?(view1, 5)
## Remove
##
assert :min_change == Interface.remove(var1, 1)
assert :no_change == Interface.remove(var1, -1)
assert :min_change == Interface.remove(view2, -1)
assert :no_change == Interface.remove(view2, 1)
## Remove above/below
##
assert :max_change == Interface.removeAbove(var1, 5)
assert :no_change == Interface.removeBelow(var1, -5)
assert :max_change == Interface.removeBelow(view2, -5)
assert :no_change == Interface.removeAbove(view2, 5)
## Fix and Fixed?
##
assert domain_values(var1) == MapSet.new([2, 3, 4, 5])
assert :fixed == Interface.fix(var1, 2)
assert Interface.fixed?(var1)
assert :fail == catch_throw(Interface.fix(var1, 1))
assert domain_values(view2) == MapSet.new([-5, -4, -3, -2])
assert :fixed == Interface.fix(view2, -2)
assert Interface.fixed?(view2)
assert :fail == catch_throw(Interface.fix(view2, 1))
end
end
end