tests/testthat/test_params.R

context('Test validity of new parameters and data')

test_that('New food demand parameters (vector) are valid', {
    parameter_data <- read.csv("test_outputs/parameter_data.csv")
    params <- (c(parameter_data$params_vector.par))

    expect(validate.params(params),"New vector of parameters calculated are invalid.")
})


test_that('Optimization when fitting parameters is accurate', {
    func_MC <- mc.setup("test_outputs/Processed_Data_for_MC.csv")
    original_param_vector <- c(c(1.28,1.14,-0.19,0.21,-0.33,0.5,0.1,16,5.06,100,20))

    Old_prob_density <- func_MC(original_param_vector)

    parameter_data <- read.csv("test_outputs/parameter_data.csv")
    params <- (c(parameter_data$params_vector.par))

    New_prob_density <- func_MC(params)

    expect(New_prob_density > Old_prob_density,"Optimization when fitting model parameters was not successful.
           New probability density is lower than old probability density.")
})

test_that('Check that clustering algorithm is generating enough clusters',{

    Data <- read.csv("test_outputs/Training_Data.csv") %>% filter(year %in% c(2000,2010))

    expect_silent(create_dataset_for_parameter_fit(data=Data,min_clusters = 1,outdir = tempdir())->tmp)

    expect(length(unique(tmp$clusterID))>=0,"Clustering algorithm is generating skewed results. Parameters calculated may not be valid.")
})


test_that('Clusters created are valid ', {
    MC_data <- read.csv("test_outputs/Processed_Data_for_MC.csv")

    unique_clusters <- unique(MC_data$clusterID)

    min_clusters <- 1

    expect(length(unique_clusters) >= min_clusters,"Clusters created in the processed data are under 20. sigma^2 values generated may be unreliable.")
})


test_that('MC function can be set up correctly with old data', {
    old_data <- read.csv("test_outputs/food-dmnd-price-allrgn.csv")

    expect_silent(func_MC <- mc.setup("test_outputs/food-dmnd-price-allrgn.csv"))
    original_param_vector <- c(c(1.28,1.14,-0.19,0.21,-0.33,0.5,0.1,16,5.06,100,20))

    expect_silent(original_probability_density <- func_MC(original_param_vector))

    expect_equal(original_probability_density,-897,tolerance=0.01,info= paste("Unable to generate original probability density from Edmonds et al."))
})

test_that("Parameters calculated on test data are valid",{

    #Run for only 1 teration
    expect_silent(calculate_ambrosia_params(datadir = "test_outputs/Processed_Data_for_MC.csv",max_iterations = 1,outdir = tempdir()) -> tmp_param)


    expect(validate.params(tmp_param),"Parameters calculated by function are invalid. Please check results.")

})
JGCRI/ambrosia documentation built on June 11, 2025, 12:29 a.m.