Skip to content

Commit c0976f7

Browse files
committed
test: add build_initial_guess mocks and alias tests (init/i) in test_dispatch and test_orchestration
1 parent 6a4e65b commit c0976f7

2 files changed

Lines changed: 61 additions & 2 deletions

File tree

test/suite/solve/test_dispatch.jl

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ const SHOWTIMING = isdefined(Main, :TestOptions) ? Main.TestOptions.SHOWTIMING :
2626
struct MockOCP <: CTModels.AbstractModel end
2727
struct MockInit <: CTModels.AbstractInitialGuess end
2828
struct MockSolution <: CTModels.AbstractSolution end
29+
CTModels.build_initial_guess(::MockOCP, ::Nothing) = MockInit()
30+
CTModels.build_initial_guess(::MockOCP, i::MockInit) = i
2931

3032
struct MockDiscretizer <: CTDirect.AbstractDiscretizer
3133
options::CTSolvers.StrategyOptions
@@ -113,6 +115,28 @@ function test_solve_dispatch()
113115
Test.@test result isa MockSolution
114116
end
115117

118+
Test.@testset "solve_explicit - alias 'init'" begin
119+
result = OptimalControl.solve_explicit(
120+
ocp;
121+
init=init,
122+
display=false,
123+
registry=registry,
124+
discretizer=disc, modeler=mod, solver=sol
125+
)
126+
Test.@test result isa MockSolution
127+
end
128+
129+
Test.@testset "solve_explicit - alias 'i'" begin
130+
result = OptimalControl.solve_explicit(
131+
ocp;
132+
i=init,
133+
display=false,
134+
registry=registry,
135+
discretizer=disc, modeler=mod, solver=sol
136+
)
137+
Test.@test result isa MockSolution
138+
end
139+
116140
Test.@testset "solve_explicit - partial components (mock registry completes)" begin
117141
result = OptimalControl.solve_explicit(
118142
ocp;
@@ -138,6 +162,26 @@ function test_solve_dispatch()
138162
Test.@test result isa MockSolution
139163
end
140164

165+
Test.@testset "solve_descriptive - alias 'init'" begin
166+
result = OptimalControl.solve_descriptive(
167+
ocp, :collocation, :adnlp, :ipopt;
168+
init=init,
169+
display=false,
170+
registry=registry
171+
)
172+
Test.@test result isa MockSolution
173+
end
174+
175+
Test.@testset "solve_descriptive - alias 'i'" begin
176+
result = OptimalControl.solve_descriptive(
177+
ocp, :collocation, :adnlp, :ipopt;
178+
i=init,
179+
display=false,
180+
registry=registry
181+
)
182+
Test.@test result isa MockSolution
183+
end
184+
141185
Test.@testset "solve_descriptive - empty description dispatches" begin
142186
result = OptimalControl.solve_descriptive(
143187
ocp;

test/suite/solve/test_orchestration.jl

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ const SHOWTIMING = isdefined(Main, :TestOptions) ? Main.TestOptions.SHOWTIMING :
2828
struct MockOCP <: CTModels.AbstractModel end
2929
struct MockInit <: CTModels.AbstractInitialGuess end
3030
struct MockSolution <: CTModels.AbstractSolution end
31+
CTModels.build_initial_guess(::MockOCP, ::Nothing) = MockInit()
32+
CTModels.build_initial_guess(::MockOCP, i::MockInit) = i
3133

3234
struct MockDiscretizer <: CTDirect.AbstractDiscretizer
3335
options::CTSolvers.StrategyOptions
@@ -132,6 +134,20 @@ function test_orchestration()
132134
Test.@test result isa MockSolution
133135
end
134136

137+
Test.@testset "solve_descriptive - alias 'init'" begin
138+
ocp = MockOCP()
139+
result = CommonSolve.solve(ocp, :collocation, :adnlp, :ipopt;
140+
init=MockInit(), display=false)
141+
Test.@test result isa MockSolution
142+
end
143+
144+
Test.@testset "solve_descriptive - alias 'i'" begin
145+
ocp = MockOCP()
146+
result = CommonSolve.solve(ocp, :collocation, :adnlp, :ipopt;
147+
i=MockInit(), display=false)
148+
Test.@test result isa MockSolution
149+
end
150+
135151
Test.@testset "solve_descriptive - error on unknown option" begin
136152
ocp = MockOCP()
137153
Test.@test_throws CTBase.IncorrectArgument begin
@@ -145,13 +161,12 @@ function test_orchestration()
145161
# UNIT TESTS - initial_guess normalization (mocks, no real solver)
146162
# ====================================================================
147163

148-
Test.@testset "initial_guess=nothing uses MockInit fallback" begin
164+
Test.@testset "initial_guess=nothing → default MockInit" begin
149165
ocp = MockOCP()
150166
disc = MockDiscretizer(CTSolvers.StrategyOptions())
151167
mod = MockModeler(CTSolvers.StrategyOptions())
152168
sol = MockSolver(CTSolvers.StrategyOptions())
153169
result = CommonSolve.solve(ocp;
154-
initial_guess=MockInit(),
155170
discretizer=disc, modeler=mod, solver=sol,
156171
display=false
157172
)

0 commit comments

Comments
 (0)