TestUtils
Models.TestUtils — ModuleModels.TestUtilsProvides test fakes, FakeTemplate and FakeModel, that are useful for testing downstream dependencies, and test_interface for testing the Models API has been correctly implemented.
Interface Tests
Models.TestUtils.test_interface — Functiontest_interface(template::Template; inputs=rand(5, 5), outputs=rand(5, 5))Test that subtypes of Template and Model implement the expected API. Can be used as an initial test to verify the API has been correctly implemented.
Note on PredictInputTrait Interface Tests
In the case where the PredictInputTrait is PointOrDistributionPredictInput the the Models API requires only that the distribution in question is Sampleable. When using Models.TestUtils.test_interface to test a model where distributions can be passed to predict, the user should provide inputs of the distribution type appropriate to their model. In the example below the CustomModel accepts MvNormal distributions to predict.
using CustomModels
using Distributions
using Models.TestUtils
test_interface(
CustomModelTemplate();
distribution_inputs=[MvNormal(5, 1) for _ in 1:5],
)Test Fakes
Models.TestUtils.FakeModel — TypeFakeModelA fake Model for testing purposes. See FakeTemplate for details.
Models.TestUtils.FakeTemplate — TypeFakeTemplate{E <: EstimateTrait, O <: OutputTrait} <: TemplateThis template is a test double for testing purposes. It should be defined (before fitting) with a predictor, which can be changed by mutating the field.
Fields
predictor::Function: predicts the outputs of theFakeModel. It is(num_variates, inputs) -> outputs, where thenum_variateswill be memorized duringfit.
Methods
Models.TestUtils.FakeTemplate — MethodFakeTemplate{DistributionEstimate, MultiOutput}()A Template whose Model will accept real value variables to predict a multivariate normal distribution (with zero-vector mean and identity covariance matrix) for each observation.
Models.TestUtils.FakeTemplate — MethodFakeTemplate{PointEstimate, MultiOutput}()A Template whose Model will accept real value variables to predict a vector of 0s for each observation. The input and output will have the same dimension.
Models.TestUtils.FakeTemplate — MethodFakeTemplate{DistributionEstimate, SingleOutput}()A Template whose Model will accept real value variables to predict a univariate normal distribution (with zero mean and unit standard deviation) for each observation.
Models.TestUtils.FakeTemplate — MethodFakeTemplate{PointEstimate, SingleOutput}()A Template whose Model will accept real value variables to predict 0 for each observation.