/** @brief Update by mean vectors and variance vectors */ TEST_F(TestBCM, VarTest) { // pointer should be NULL initially EXPECT_FALSE(m_pSumOfWeightedMeans); EXPECT_FALSE(m_pSumOfInvCovs); // prediction 1 update(pMean1, pVar1); EXPECT_TRUE(m_pSumOfInvCovs->isApprox(*pSumOfInvVar1)); EXPECT_TRUE(m_pSumOfWeightedMeans->isApprox(*pSumOfWeightedMeansByVar1)); // prediction 2 update(pMean2, pVar2); EXPECT_TRUE(m_pSumOfInvCovs->isApprox(*pSumOfInvVar2)); EXPECT_TRUE(m_pSumOfWeightedMeans->isApprox(*pSumOfWeightedMeansByVar2)); // prediction 3 update(pMean3, pVar3); EXPECT_TRUE(m_pSumOfInvCovs->isApprox(*pSumOfInvVar3)); EXPECT_TRUE(m_pSumOfWeightedMeans->isApprox(*pSumOfWeightedMeansByVar3)); // final VectorPtr pMean; MatrixPtr pCov; get(pMean, pCov); EXPECT_TRUE(pCov->isApprox(*pVarFinal)); EXPECT_TRUE(pMean->isApprox(*pMeanByVarFinal)); }
/** @brief Update by mean vectors and covariance matrices */ TEST_F(TestBCM, CovTest) { // pointer should be NULL initially EXPECT_FALSE(m_pSumOfWeightedMeans); EXPECT_FALSE(m_pSumOfInvCovs); // prediction 1 update(pMean1, pCov1); EXPECT_TRUE(m_pSumOfInvCovs->isApprox(*pSumOfInvCovs1)); EXPECT_TRUE(m_pSumOfWeightedMeans->isApprox(*pSumOfWeightedMeansByCov1)); // prediction 2 update(pMean2, pCov2); EXPECT_TRUE(m_pSumOfInvCovs->isApprox(*pSumOfInvCovs2)); EXPECT_TRUE(m_pSumOfWeightedMeans->isApprox(*pSumOfWeightedMeansByCov2)); // prediction 3 update(pMean3, pCov3); EXPECT_TRUE(m_pSumOfInvCovs->isApprox(*pSumOfInvCovs3)); EXPECT_TRUE(m_pSumOfWeightedMeans->isApprox(*pSumOfWeightedMeansByCov3)); // final VectorPtr pMean; MatrixPtr pCov; get(pMean, pCov); EXPECT_TRUE(pCov->isApprox(pCovFinal->diagonal())); // get a variance!!! EXPECT_TRUE(pMean->isApprox(*pMeanByCovFinal)); }