tests/testthat/test_cartesian.R

test_that("test SupportCartesianProduct", {
    s1 = Support(-Inf,Inf,lim=c(-2,2))
    s2 = Support(0,2)
    s3 = Support(X=c(1,2,3))
    s4 = Support(X=c("A","B","C","D"))
    s  = SupportCartesianProduct(s1,s2,s3,s4)
    expect_equal(getSupport(s),s)
    expect_equal(s[[2]],s2)
    expect_true(is(s,"Support"))
    expect_error(getSupport1DPlottingLimits(s))
    expect_equal(getSupport1DPlottingLimits(s1),c(-2,2))

})



test_that("test ReferenceMeasureCartesianProduct", {
    RMCP1 = ReferenceMeasureCartesianProduct(StdReferenceMeasureN01
                                            )
    RMCP2 = ReferenceMeasureCartesianProduct(StdReferenceMeasureN01,
                                            StdReferenceMeasureUnif01
                                            )
    RMCP3 = ReferenceMeasureCartesianProduct(A=StdReferenceMeasureN01,
                                            B=StdReferenceMeasureUnif01,
                                            C=ReferenceMeasureDiscrete(c("A","B","C"),c(0.2,0.3,0.5))
                                            )
    s1 = getSupport(RMCP1)
    s2 = getSupport(RMCP2)
    s3 = getSupport(RMCP3)
    expect_equal(length(s1),1)
    expect_equal(length(s2),2)
    expect_equal(length(s3),3)
    BS1 = getBayesSpace(RMCP1)
    BS2 = getBayesSpace(RMCP2)
    BS3 = getBayesSpace(RMCP3)
    sam1 = getSample(RMCP1)
    sam2 = getSample(RMCP2)
    sam3 = getSample(RMCP3)
    b1 = getBayesSpaceBasis(BS1)
    b2 = getBayesSpaceBasis(BS2)
    b3 = getBayesSpaceBasis(BS3)
    be1 = basisEval(b1,sam1)
    be2 = basisEval(b2,sam2)
    be3 = basisEval(b3,sam3)

})


test_that("test expectation of CartesianProduct", {
    skip_on_cran() # To slow
    BS1 = BayesSpace(ReferenceMeasureDiscrete(c("A","B","C"),c(0.2,0.3,0.5)))
    BS2 = BayesSpace(StdReferenceMeasureUnif01)
    BS3 = BayesSpace(StdReferenceMeasureN01)

    BB1 = BayesSpaceBasis(BS1)
    BB2 = BayesSpaceBasis(BS2)
    BB3 = BayesSpaceBasis(BS3)

    D1 = getBayesSpaceBasisDimension(BB1)
    D2 = getBayesSpaceBasisDimension(BB2)
    D3 = getBayesSpaceBasisDimension(BB3)

    BB123 = cartesianProduct(A=BB1,B=BB2,C=BB3)
    expect_true(is(BB123,"BayesSpaceBasis"))
    BS123 = getBayesSpace(BB123)
    expect_true(is(BS123,"BayesSpace"))
    RM123 = getReferenceMeasure(BS123)
    # print(RM123)
    expect_equal(class(RM123),c("ReferenceMeasureCartesianProduct","ReferenceMeasure"))
    expect_true(is(RM123,"ReferenceMeasure"))

    E1 = expectation(getReferenceMeasure(BS1),as.function(BB1),tolerance=5E-2)
    E2 = expectation(getReferenceMeasure(BS2),as.function(BB2),tolerance=5E-2)
    E3 = expectation(getReferenceMeasure(BS3),as.function(BB3),tolerance=5E-2)

    expect_equal(c(E1),rep(0,D1),tolerance=1E-1)
    expect_equal(c(E2),rep(0,D2),tolerance=1E-1)
    expect_equal(c(E3),rep(0,D3),tolerance=1E-1)


    E123 = expectation(RM123,as.function(BB123))
    expect_equal(length(E123),prod(c(D1,D2,D3)+1)-1)

    expect_equal(c(E123),rep(0,length(E123)),tolerance=1E-2)

})



test_that("test expectation of CartesianProduct", {
    #skip("Skipping to slow test") # simply to slow
    skip_on_cran() # Too slow
    RMCP1 = ReferenceMeasureCartesianProduct(StdReferenceMeasureN01
                                            )
    RMCP2 = ReferenceMeasureCartesianProduct(StdReferenceMeasureN01,
                                            StdReferenceMeasureUnif01
                                            )
    RMCP3 = ReferenceMeasureCartesianProduct(A=StdReferenceMeasureN01,
                                            B=StdReferenceMeasureUnif01,
                                            C=ReferenceMeasureDiscrete(c("A","B","C"),c(0.2,0.3,0.5))
                                            )

    BB1 = BayesSpaceBasis(RMCP1)
    BB2 = BayesSpaceBasis(RMCP2)
    BB3 = BayesSpaceBasis(RMCP3)
   ## Here only to check that it works structurally
    E1 = expectation(RMCP1,as.function(BB1),tolerance=5E-3)
    E2 = expectation(RMCP2,as.function(BB2),tolerance=5E-3)
    E3 = expectation(RMCP3,as.function(BB3),tolerance=5E-3)

    expect_equal(c(E1),rep(0,length(E1)),tolerance=1E-2)
    expect_equal(c(E2),rep(0,length(E2)),tolerance=1E-2)
    #expect_equal(c(E3),rep(0,length(E3)),tolerance=1E-2)

})

Try the DistributionalDDA package in your browser

Any scripts or data that you put into this service are public.

DistributionalDDA documentation built on Oct. 20, 2026, 5:06 p.m.