|
37 | 37 | # Test instance structure |
38 | 38 | @test length(instance.prices) == 6 # N items + 1 no-purchase action |
39 | 39 | @test instance.prices[end] == 0.0 # No-purchase action has price 0 |
40 | | - @test all(1.0 ≤ p ≤ 10.0 for p in instance.prices[1:end-1]) # Prices in [1, 10] |
| 40 | + @test all(1.0 ≤ p ≤ 10.0 for p in instance.prices[1:(end - 1)]) # Prices in [1, 10] |
41 | 41 |
|
42 | 42 | @test size(instance.features) == (3, 5) # (d, N) |
43 | 43 | @test all(1.0 ≤ f ≤ 10.0 for f in instance.features) # Features in [1, 10] |
|
67 | 67 |
|
68 | 68 | # Test features structure: [prices; hype_saturation; static_features] |
69 | 69 | @test size(env.features) == (5, 5) # (1 + 2 + d, N) = (1 + 2 + 2, 5) |
70 | | - @test env.features[1, :] == instance.prices[1:end-1] # First row is prices (excluding no-purchase) |
| 70 | + @test env.features[1, :] == instance.prices[1:(end - 1)] # First row is prices (excluding no-purchase) |
71 | 71 |
|
72 | 72 | # Test utility computation |
73 | 73 | @test length(env.utility) == 5 # One utility per item |
|
100 | 100 |
|
101 | 101 | # Features should be reset to initial values |
102 | 102 | expected_features = vcat( |
103 | | - reshape(instance.prices[1:end-1], 1, :), |
| 103 | + reshape(instance.prices[1:(end - 1)], 1, :), |
104 | 104 | instance.starting_hype_and_saturation, |
105 | | - instance.features |
| 105 | + instance.features, |
106 | 106 | ) |
107 | 107 | @test env.features ≈ expected_features |
108 | 108 | end |
|
208 | 208 | end |
209 | 209 |
|
210 | 210 | # Test termination |
211 | | - for _ in 1:(DAP.max_steps(env)-1) |
| 211 | + for _ in 1:(DAP.max_steps(env) - 1) |
212 | 212 | if !is_terminated(env) |
213 | 213 | step!(env, assortment) |
214 | 214 | end |
|
0 commit comments