Skip to content

Commit 1905623

Browse files
committed
improve coverage
1 parent 522a91f commit 1905623

File tree

2 files changed

+77
-2
lines changed

2 files changed

+77
-2
lines changed

test/dynamic_assortment.jl

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@testitem "DVSP" begin
1+
@testitem "dynamic Assortment" begin
22
using DecisionFocusedLearningBenchmarks
33
using Statistics: mean
44

@@ -18,8 +18,15 @@
1818
expert = policies[1]
1919
greedy = policies[2]
2020

21-
r_expert, _ = evaluate_policy!(expert, environments)
21+
r_expert, d = evaluate_policy!(expert, environments)
2222
r_greedy, _ = evaluate_policy!(greedy, environments)
2323

2424
@test mean(r_expert) >= mean(r_greedy)
25+
26+
model = generate_statistical_model(b)
27+
maximizer = generate_maximizer(b)
28+
sample = d[1]
29+
x = sample.x
30+
θ = model(x)
31+
y = maximizer(θ)
2532
end

test/utils.jl

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,74 @@ end
4646
show(io, sample)
4747
@test String(take!(io)) ==
4848
"DataSample(x=$(sample.x), θ_true=$(sample.θ_true), y_true=$(sample.y_true), instance=$(sample.instance))"
49+
50+
# Test StatsBase methods
51+
using StatsBase:
52+
ZScoreTransform,
53+
UnitRangeTransform,
54+
fit,
55+
transform,
56+
transform!,
57+
reconstruct,
58+
reconstruct!
59+
60+
# Create a dataset for testing
61+
N = 5
62+
dataset = [random_sample() for _ in 1:N]
63+
64+
# Test fit with ZScoreTransform
65+
zt = fit(ZScoreTransform, dataset)
66+
@test zt isa ZScoreTransform
67+
68+
# Test fit with UnitRangeTransform
69+
ut = fit(UnitRangeTransform, dataset)
70+
@test ut isa UnitRangeTransform
71+
72+
# Test transform (non-mutating)
73+
dataset_zt = transform(zt, dataset)
74+
@test length(dataset_zt) == length(dataset)
75+
@test all(d -> d isa DataSample, dataset_zt)
76+
77+
# Check that other fields are preserved
78+
for i in 1:N
79+
@test dataset_zt[i].θ_true == dataset[i].θ_true
80+
@test dataset_zt[i].y_true == dataset[i].y_true
81+
@test dataset_zt[i].instance == dataset[i].instance
82+
end
83+
84+
# Check that features are actually transformed
85+
@test dataset_zt[1].x != dataset[1].x
86+
87+
# Test transform! (mutating)
88+
dataset_copy = deepcopy(dataset)
89+
original_x = copy(dataset_copy[1].x)
90+
transform!(ut, dataset_copy)
91+
@test dataset_copy[1].x != original_x
92+
93+
# Check that other fields remain unchanged after transform!
94+
for i in 1:N
95+
@test dataset_copy[i].θ_true == dataset[i].θ_true
96+
@test dataset_copy[i].y_true == dataset[i].y_true
97+
@test dataset_copy[i].instance == dataset[i].instance
98+
end
99+
100+
# Test reconstruct (non-mutating)
101+
dataset_reconstructed = reconstruct(zt, dataset_zt)
102+
@test length(dataset_reconstructed) == length(dataset)
103+
104+
# Test round-trip consistency (should be close to original)
105+
for i in 1:N
106+
@test dataset_reconstructed[i].x dataset[i].x atol = 1e-10
107+
@test dataset_reconstructed[i].θ_true == dataset[i].θ_true
108+
@test dataset_reconstructed[i].y_true == dataset[i].y_true
109+
@test dataset_reconstructed[i].instance == dataset[i].instance
110+
end
111+
112+
# Test reconstruct! (mutating)
113+
reconstruct!(zt, dataset_zt)
114+
for i in 1:N
115+
@test dataset_zt[i].x dataset[i].x atol = 1e-10
116+
end
49117
end
50118

51119
@testitem "Maximizers" begin

0 commit comments

Comments
 (0)