|
| 1 | +@testset "deprecated" begin |
| 2 | + @testset "@submodel" begin |
| 3 | + @testset "is deprecated" begin |
| 4 | + @model inner() = x ~ Normal() |
| 5 | + @model outer() = @submodel x = inner() |
| 6 | + @test_logs( |
| 7 | + ( |
| 8 | + :warn, |
| 9 | + "`@submodel model` and `@submodel prefix=... model` are deprecated; see `to_submodel` for the up-to-date syntax.", |
| 10 | + ), |
| 11 | + outer()() |
| 12 | + ) |
| 13 | + |
| 14 | + @model outer_with_prefix() = @submodel prefix = "sub" x = inner() |
| 15 | + @test_logs( |
| 16 | + ( |
| 17 | + :warn, |
| 18 | + "`@submodel model` and `@submodel prefix=... model` are deprecated; see `to_submodel` for the up-to-date syntax.", |
| 19 | + ), |
| 20 | + outer_with_prefix()() |
| 21 | + ) |
| 22 | + end |
| 23 | + |
| 24 | + @testset "prefixing still works correctly" begin |
| 25 | + @model inner() = x ~ Normal() |
| 26 | + @model function outer() |
| 27 | + a = @submodel inner() |
| 28 | + b = @submodel prefix = "sub" inner() |
| 29 | + return a, b |
| 30 | + end |
| 31 | + @test outer()() isa Tuple{Float64,Float64} |
| 32 | + vi = VarInfo(outer()) |
| 33 | + @test @varname(x) in keys(vi) |
| 34 | + @test @varname(var"sub.x") in keys(vi) |
| 35 | + end |
| 36 | + |
| 37 | + @testset "logp is still accumulated properly" begin |
| 38 | + @model inner_assume() = x ~ Normal() |
| 39 | + @model inner_observe(x, y) = y ~ Normal(x) |
| 40 | + @model function outer(b) |
| 41 | + a = @submodel inner_assume() |
| 42 | + @submodel inner_observe(a, b) |
| 43 | + end |
| 44 | + y_val = 1.0 |
| 45 | + model = outer(y_val) |
| 46 | + @test model() == y_val |
| 47 | + |
| 48 | + x_val = 1.5 |
| 49 | + vi = VarInfo(outer(b)) |
| 50 | + vn_x = @varname(x) |
| 51 | + DynamicPPL.setindex!!(vi, x_val, vn_x) |
| 52 | + @test logprior(model, vi) ≈ logpdf(Normal(), x_val) |
| 53 | + @test loglikelihood(model, vi) ≈ logpdf(Normal(x_val), y_val) |
| 54 | + @test logjoint(model, vi) ≈ logpdf(Normal(), x_val) + logpdf(Normal(x_val), y_val) |
| 55 | + end |
| 56 | + end |
| 57 | +end |
0 commit comments