Skip to content

Commit 6a4e65b

Browse files
committed
test: fix missing CTBase import and update test_solve_modes to match max_iter=0 behavior
1 parent c6ae139 commit 6a4e65b

2 files changed

Lines changed: 76 additions & 6 deletions

File tree

test/suite/helpers/test_kwarg_extraction.jl

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import Test
1212
import OptimalControl
1313
import CTDirect
1414
import CTSolvers
15+
import CTBase
1516

1617
const VERBOSE = isdefined(Main, :TestOptions) ? Main.TestOptions.VERBOSE : true
1718
const SHOWTIMING = isdefined(Main, :TestOptions) ? Main.TestOptions.SHOWTIMING : true
@@ -94,6 +95,50 @@ function test_kwarg_extraction()
9495
result = OptimalControl._extract_kwarg(kw, CTDirect.AbstractDiscretizer)
9596
Test.@test result isa Nothing
9697
end
98+
# ====================================================================
99+
# UNIT TESTS - Action Kwarg Extraction (aliases)
100+
# ====================================================================
101+
102+
Test.@testset "Action Kwarg Extraction" begin
103+
Test.@testset "Extracts primary name" begin
104+
kw = pairs((; initial_guess=42, display=false))
105+
val, rest = OptimalControl._extract_action_kwarg(kw, (:initial_guess, :init, :i), nothing)
106+
Test.@test val == 42
107+
Test.@test haskey(rest, :display)
108+
Test.@test !haskey(rest, :initial_guess)
109+
end
110+
111+
Test.@testset "Extracts alias 1" begin
112+
kw = pairs((; init=42, display=false))
113+
val, rest = OptimalControl._extract_action_kwarg(kw, (:initial_guess, :init, :i), nothing)
114+
Test.@test val == 42
115+
Test.@test haskey(rest, :display)
116+
Test.@test !haskey(rest, :init)
117+
end
118+
119+
Test.@testset "Extracts alias 2" begin
120+
kw = pairs((; i=42, display=false))
121+
val, rest = OptimalControl._extract_action_kwarg(kw, (:initial_guess, :init, :i), nothing)
122+
Test.@test val == 42
123+
Test.@test haskey(rest, :display)
124+
Test.@test !haskey(rest, :i)
125+
end
126+
127+
Test.@testset "Returns default when not found" begin
128+
kw = pairs((; display=false))
129+
val, rest = OptimalControl._extract_action_kwarg(kw, (:initial_guess, :init, :i), :my_default)
130+
Test.@test val === :my_default
131+
Test.@test haskey(rest, :display)
132+
end
133+
134+
Test.@testset "Throws on multiple aliases present" begin
135+
kw = pairs((; init=42, i=43))
136+
Test.@test_throws CTBase.IncorrectArgument OptimalControl._extract_action_kwarg(kw, (:initial_guess, :init, :i), nothing)
137+
138+
kw2 = pairs((; initial_guess=42, init=43, i=44))
139+
Test.@test_throws CTBase.IncorrectArgument OptimalControl._extract_action_kwarg(kw2, (:initial_guess, :init, :i), nothing)
140+
end
141+
end
97142
end
98143
end
99144

test/suite/solve/test_solve_modes.jl

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ function test_solve_modes()
4848
display=false
4949
)
5050

51-
success = OptimalControl.successful(sol_explicit)
52-
Test.@test success
5351
Test.@test sol_explicit isa OptimalControl.AbstractSolution
5452
end
5553

@@ -67,8 +65,6 @@ function test_solve_modes()
6765
display=false
6866
)
6967

70-
success = OptimalControl.successful(sol_descriptive)
71-
Test.@test success
7268
Test.@test sol_descriptive isa OptimalControl.AbstractSolution
7369
end
7470

@@ -87,10 +83,39 @@ function test_solve_modes()
8783
display=false
8884
)
8985

90-
success = OptimalControl.successful(sol_partial)
91-
Test.@test success
9286
Test.@test sol_partial isa OptimalControl.AbstractSolution
9387
end
88+
89+
# ====================================================================
90+
# Descriptive Mode Integration (Action Option Aliases)
91+
# ====================================================================
92+
Test.@testset "Descriptive Mode (Action Option Aliases)" begin
93+
Test.@testset "Alias 'init'" begin
94+
sol_init = OptimalControl.solve(
95+
pb.ocp,
96+
:collocation;
97+
init=pb.init,
98+
grid_size=20,
99+
max_iter=0,
100+
print_level=0,
101+
display=false
102+
)
103+
Test.@test sol_init isa OptimalControl.AbstractSolution
104+
end
105+
106+
Test.@testset "Alias 'i'" begin
107+
sol_i = OptimalControl.solve(
108+
pb.ocp,
109+
:collocation;
110+
i=pb.init,
111+
grid_size=20,
112+
max_iter=0,
113+
print_level=0,
114+
display=false
115+
)
116+
Test.@test sol_i isa OptimalControl.AbstractSolution
117+
end
118+
end
94119
end
95120
end
96121

0 commit comments

Comments
 (0)