Skip to content

Commit 6140451

Browse files
committed
Add missing tests
1 parent c514bf0 commit 6140451

1 file changed

Lines changed: 129 additions & 3 deletions

File tree

test/ForwardTest.jl

Lines changed: 129 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,35 @@ end
5555
d = KrD(Upper(2), Lower(1))
5656

5757
function lgp(l, r)
58-
return dc.UnaryOperation{dc.Log}(dc.BinaryOperation{dc.Mult}(l, r))
58+
return dc.UnaryOperation{dc.Sin}(dc.BinaryOperation{dc.Mult}(l, r))
5959
end
6060

61-
@test dc.evaluate(lgp(x, d)) == dc.UnaryOperation{dc.Log}(Variable("x", Upper(2)))
62-
@test dc.evaluate(lgp(d, x)) == dc.UnaryOperation{dc.Log}(Variable("x", Upper(2)))
61+
@test dc.evaluate(lgp(x, d)) == dc.UnaryOperation{dc.Sin}(Variable("x", Upper(2)))
62+
@test dc.evaluate(lgp(d, x)) == dc.UnaryOperation{dc.Sin}(Variable("x", Upper(2)))
63+
end
64+
65+
@testset "evaluate product of log and KrD" begin
66+
x = Variable("x", Upper(1))
67+
d = KrD(Upper(2), Lower(1))
68+
d_unrelated = KrD(Upper(5), Lower(6))
69+
70+
function prodlogl(l, r)
71+
return dc.BinaryOperation{dc.Mult}(dc.UnaryOperation{dc.Sin}(l), r)
72+
end
73+
74+
function prodlogr(l, r)
75+
return dc.BinaryOperation{dc.Mult}(l, dc.UnaryOperation{dc.Sin}(r))
76+
end
77+
78+
expected = dc.UnaryOperation{dc.Sin}(Variable("x", Upper(2)))
79+
80+
@test dc.evaluate(prodlogl(x, d)) == expected
81+
@test dc.evaluate(prodlogr(d, x)) == expected
82+
83+
expected2 = prodlogl(x, d_unrelated)
84+
85+
@test dc.evaluate(prodlogl(x, d_unrelated)) == expected2
86+
@test dc.evaluate(prodlogr(d_unrelated, x)) == expected2
6387
end
6488

6589
@testset "evaluate div" begin
@@ -217,6 +241,39 @@ end
217241
@test dc.evaluate(n) == n
218242
end
219243

244+
@testset "evaluate sum of difference and Zero" begin
245+
a = Variable("a", Upper(1))
246+
b = dc.UnaryOperation{dc.Sin}(Variable("b", Upper(1)))
247+
z = Zero(Upper(1))
248+
249+
l = dc.BinaryOperation{dc.Sub}(a, b)
250+
s = dc.BinaryOperation{dc.Add}(l, z)
251+
s2 = dc.BinaryOperation{dc.Add}(z, l)
252+
253+
@test dc.evaluate(s) == l
254+
@test dc.evaluate(s2) == l
255+
end
256+
257+
@testset "evaluate sum of difference and product" begin
258+
a = Variable("a", Upper(1))
259+
b = dc.UnaryOperation{dc.Sin}(Variable("b", Lower(1)))
260+
c = Variable("c", Upper(1))
261+
262+
function mult(l, r)
263+
return dc.BinaryOperation{dc.Mult}(l, r)
264+
end
265+
266+
p = mult(a, b)
267+
d = dc.BinaryOperation{dc.Sub}(p, c)
268+
sum = dc.BinaryOperation{dc.Add}(p, d)
269+
sum2 = dc.BinaryOperation{dc.Add}(p, d)
270+
271+
expected = dc.BinaryOperation{dc.Sub}(mult(2, mult(a, b)), c)
272+
273+
@test dc.evaluate(sum) == expected
274+
@test dc.evaluate(sum2) == expected
275+
end
276+
220277
@testset "evaluate sum of addition and addition" begin
221278
a = Variable("a", Upper(1))
222279
b = Variable("b", Upper(1))
@@ -670,6 +727,75 @@ end
670727
@test evaluate(op2) == mult(mult(mult(y, b), a), z)
671728
end
672729

730+
@testset "evaluate product of product and KrD 1" begin
731+
X = Variable("X", Upper(1), Lower(2))
732+
A = Variable("A", Upper(2), Lower(3))
733+
d = KrD(Lower(1), Upper(4))
734+
735+
function mult(l, r)
736+
return dc.BinaryOperation{dc.Mult}(l, r)
737+
end
738+
739+
@test evaluate(mult(mult(X, A), d)) == mult(Variable("X", Upper(4), Lower(2)), A)
740+
@test evaluate(mult(d, mult(X, A))) == mult(Variable("X", Upper(4), Lower(2)), A)
741+
742+
743+
@test evaluate(mult(mult(A, X), d)) == mult(A, Variable("X", Upper(4), Lower(2)))
744+
@test evaluate(mult(d, mult(A, X))) == mult(A, Variable("X", Upper(4), Lower(2)))
745+
end
746+
747+
@testset "evaluate product of product and KrD 2" begin
748+
X = Variable("X", Upper(1), Lower(2))
749+
Y = Variable("Y", Upper(1), Lower(2))
750+
d = KrD(Lower(1), Upper(4))
751+
752+
function mult(l, r)
753+
return dc.BinaryOperation{dc.Mult}(l, r)
754+
end
755+
756+
@test evaluate(mult(mult(X, Y), d)) ==
757+
mult(Variable("X", Upper(4), Lower(2)), Variable("Y", Upper(4), Lower(2)))
758+
@test evaluate(mult(d, mult(X, Y))) ==
759+
mult(Variable("X", Upper(4), Lower(2)), Variable("Y", Upper(4), Lower(2)))
760+
761+
@test evaluate(mult(mult(Y, X), d)) ==
762+
mult(Variable("Y", Upper(4), Lower(2)), Variable("X", Upper(4), Lower(2)))
763+
@test evaluate(mult(d, mult(Y, X))) ==
764+
mult(Variable("Y", Upper(4), Lower(2)), Variable("X", Upper(4), Lower(2)))
765+
end
766+
767+
@testset "evaluate product of product and KrD 3" begin
768+
X = Variable("X", Upper(1), Lower(2))
769+
Y = Variable("Y", Upper(1), Lower(3))
770+
d = KrD(Upper(2), Lower(4))
771+
772+
function mult(l, r)
773+
return dc.BinaryOperation{dc.Mult}(l, r)
774+
end
775+
776+
@test evaluate(mult(mult(X, Y), d)) ==
777+
mult(Variable("X", Upper(1), Lower(4)), Variable("Y", Upper(1), Lower(3)))
778+
@test evaluate(mult(d, mult(X, Y))) ==
779+
mult(Variable("X", Upper(1), Lower(4)), Variable("Y", Upper(1), Lower(3)))
780+
781+
@test evaluate(mult(mult(Y, X), d)) ==
782+
mult(Variable("Y", Upper(1), Lower(3)), Variable("X", Upper(1), Lower(4)))
783+
@test evaluate(mult(d, mult(Y, X))) ==
784+
mult(Variable("Y", Upper(1), Lower(3)), Variable("X", Upper(1), Lower(4)))
785+
end
786+
787+
@testset "evaluate product of product and KrD 4" begin
788+
X = Variable("X", Upper(1), Lower(2))
789+
d = KrD(Upper(2), Lower(4))
790+
791+
function mult(l, r)
792+
return dc.BinaryOperation{dc.Mult}(l, r)
793+
end
794+
795+
@test evaluate(mult(mult(2, X), d)) == mult(2, Variable("X", Upper(1), Lower(4)))
796+
@test evaluate(mult(d, mult(2, X))) == mult(2, Variable("X", Upper(1), Lower(4)))
797+
end
798+
673799
@testset "evaluate BinaryOperation vector * KrD" begin
674800
x = Variable("x", Upper(2))
675801
d1 = KrD(Lower(2), Upper(3))

0 commit comments

Comments
 (0)