Skip to content

Commit 5060219

Browse files
committed
Add tests
1 parent 0140e1a commit 5060219

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

test/infeasible.jl

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
using LinearAlgebra, NonlinearSolve, StaticArrays, Test
2+
3+
# this is infeasible
4+
function f1!(out, u, p)
5+
μ = 3.986004415e14
6+
x = 7000.0e3
7+
y = -6.970561549987071e-9
8+
z = -3.784706123246018e-9
9+
v_x = 8.550491684548064e-12 + u[1]
10+
v_y = 6631.60076191005 + u[2]
11+
v_z = 3600.665431405663 + u[3]
12+
r = @SVector [x, y, z]
13+
v = @SVector [v_x, v_y, v_z]
14+
h = cross(r, v)
15+
ev = cross(v, h) / μ - r / norm(r)
16+
i = acos(h[3] / norm(h))
17+
e = norm(ev)
18+
a = 1 / (2 / norm(r) - (norm(v)^2 / μ))
19+
out .= [a - 42.0e6, e - 1e-5, i - 1e-5]
20+
return nothing
21+
end
22+
23+
# this is unfeasible
24+
function f1(u, p)
25+
μ = 3.986004415e14
26+
x = 7000.0e3
27+
y = -6.970561549987071e-9
28+
z = -3.784706123246018e-9
29+
v_x = 8.550491684548064e-12 + u[1]
30+
v_y = 6631.60076191005 + u[2]
31+
v_z = 3600.665431405663 + u[3]
32+
r = @SVector [x, y, z]
33+
v = @SVector [v_x, v_y, v_z]
34+
h = cross(r, v)
35+
ev = cross(v, h) / μ - r / norm(r)
36+
i = acos(h[3] / norm(h))
37+
e = norm(ev)
38+
a = 1 / (2 / norm(r) - (norm(v)^2 / μ))
39+
return [a - 42.0e6, e - 1e-5, i - 1e-5]
40+
end
41+
42+
@testset "[IIP] Infeasible" begin
43+
u0 = [0.0, 0.0, 0.0]
44+
prob = NonlinearProblem(f1!, u0)
45+
sol = solve(prob)
46+
47+
@test all(!isnan, sol.u)
48+
@test !SciMLBase.successful_retcode(sol.retcode)
49+
end
50+
51+
@testset "[OOP] Infeasible" begin
52+
u0 = [0.0, 0.0, 0.0]
53+
prob = NonlinearProblem(f1, u0)
54+
sol = solve(prob)
55+
56+
@test all(!isnan, sol.u)
57+
@test !SciMLBase.successful_retcode(sol.retcode)
58+
59+
try
60+
u0 = @SVector [0.0, 0.0, 0.0]
61+
prob = NonlinearProblem(f1, u0)
62+
sol = solve(prob)
63+
64+
@test all(!isnan, sol.u)
65+
@test !SciMLBase.successful_retcode(sol.retcode)
66+
catch err
67+
# Static Arrays has different default linearsolve which throws an error
68+
@test err isa SingularException
69+
end
70+
end

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ end
1818
@time @safetestset "Polyalgs" include("polyalgs.jl")
1919
@time @safetestset "Matrix Resizing" include("matrix_resizing.jl")
2020
@time @safetestset "Nonlinear Least Squares" include("nonlinear_least_squares.jl")
21+
@time @safetestset "Infeasible Problems" include("infeasible.jl")
2122
end
2223

2324
if GROUP == "All" || GROUP == "23TestProblems"

0 commit comments

Comments
 (0)