-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathoverloads.jl
More file actions
37 lines (32 loc) · 1.33 KB
/
overloads.jl
File metadata and controls
37 lines (32 loc) · 1.33 KB
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
@testset "overloads" begin
rng = MersenneTwister(123456)
k1 = LinearKernel()
k2 = SqExponentialKernel()
k3 = RationalQuadraticKernel()
for (op, T) in
((+, KernelSum), (*, KernelProduct), (⊗, KernelTensorProduct), (⊕, KernelTensorSum))
if T === KernelTensorProduct || T === KernelTensorSum
v2_1 = rand(rng, 2)
v2_2 = rand(rng, 2)
v3_1 = rand(rng, 3)
v3_2 = rand(rng, 3)
v4_1 = rand(rng, 4)
v4_2 = rand(rng, 4)
else
v2_1 = v3_1 = v4_1 = rand(rng, 3)
v2_2 = v3_2 = v4_2 = rand(rng, 3)
end
k = T(k1, k2)
@test op(k1, k2)(v2_1, v2_2) == k(v2_1, v2_2)
@test op(k, k3)(v3_1, v3_2) == T((k1, k2, k3))(v3_1, v3_2)
@test op(k3, k)(v3_1, v3_2) == T((k3, k1, k2))(v3_1, v3_2)
@test op(k, k)(v4_1, v4_2) == T((k1, k2, k1, k2))(v4_1, v4_2)
@test op(k1, k2) == T([k1, k2]) == T((k1, k2))
@test op(T([k1, k2]), T([k2, k1])).kernels == [k1, k2, k2, k1]
@test op(T([k1, k2]), k3).kernels == [k1, k2, k3]
@test op(k3, T([k1, k2])).kernels == [k3, k1, k2]
@test op(T((k1, k2)), T((k2, k1))).kernels == (k1, k2, k2, k1)
@test op(T((k1, k2)), k3).kernels == (k1, k2, k3)
@test op(k3, T((k1, k2))).kernels == (k3, k1, k2)
end
end