-
Notifications
You must be signed in to change notification settings - Fork 3
/
product.jl
41 lines (35 loc) · 1.5 KB
/
product.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@testset "Product of boxes" begin
@test product(Box([1], [2]), Box([3], [4])) == Box([1,3], [2,4])
@test product(Box(ones(2,1), 2*ones(2,1)), Box([3], [4])) == Box(@SMatrix([1;1;3]), @SMatrix([2;2;4]))
end
@testset "Product of intervals" begin
@test @inferred product(1..2, 3..4) == Box([1,3], [2,4])
@test @inferred product(1..2, 3..4, 5..6) == Box([1,3,5], [2,4,6])
@test @inferred product(1..2, 3..4, 5..6, 7..8) == Box([1,3,5,7], [2,4,6,8])
end
@testset "Product of Box and interval" begin
@test @inferred product(Box([1,3], [2,4]), 5..6) == Box([1,3,5], [2,4,6])
@test @inferred product(5..6, Box([1,3], [2,4])) == Box([5,1,3], [6,2,4])
end
@testset "TupleProduct discrete" begin
tp = TupleProduct([1,2], [3,4])
@test @inferred rand(tp) in tp
@test (1,3) in tp
@test !((1,2) in tp)
@test @inferred eltype(tp) == Tuple{Int, Int}
@test @inferred SpaceStyle(tp) == FiniteSpaceStyle()
elems = @inferred collect(tp)
@test @inferred all(e in tp for e in elems)
@test @inferred all(e in elems for e in tp)
end
@testset "TupleProduct continuous" begin
tp = TupleProduct(1..2, 3..4)
@test @inferred rand(tp) in tp
@test (1,3) in tp
@test !((1,2) in tp)
@test_broken eltype(tp) == Tuple{Float64, Float64}
@test @inferred SpaceStyle(tp) == ContinuousSpaceStyle()
@test @inferred bounds(tp) == ((1,3), (2,4))
@test @inferred bounds(TupleProduct(1..2, 3..4, 5..6)) == ((1,3,5), (2,4,6))
@test @inferred clamp((0,0), tp) == (1, 3)
end