TEST_F(Invaliditetsdaekning_KI_OSV_25_49, Invaliditetsdaekning_Kortvarig_Overbygning_Obligatorisk) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kKortTAE_Daekning, "Obligatorisk"); auto r = re.validate(ta, false); // if (!r.isAllOk()) cout << r; EXPECT_FALSE(r.isAllOk()); // should be missing both KortTAE_Min_obl_faktor and KortTAE_Daekningsperiode EXPECT_EQ(2, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kKortTAE_Min_obl_faktor, kProductElementRequired)); EXPECT_TRUE(r.hasMessages(kKortTAE_Daekningsperiode, kProductElementRequired)); ta.setValue(kKortTAE_Min_obl_faktor, "2"); r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kKortTAE_Daekningsperiode, kProductElementRequired)); ta.setValue(kKortTAE_Daekningsperiode, "6"); r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); ta.setValue(kKortTAE_Min_obl_faktor, "4"); re.printConstantsInParser(); r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kKortTAE_Min_obl_faktor, kValueNotAllowed)); }
arma_hot inline eT op_dot::dot_and_copy_row(eT* out, const TA& A, const uword row, const eT* B_mem, const uword N) { eT acc1 = eT(0); eT acc2 = eT(0); uword i,j; for(i=0, j=1; j < N; i+=2, j+=2) { const eT val_i = A.at(row, i); const eT val_j = A.at(row, j); out[i] = val_i; out[j] = val_j; acc1 += val_i * B_mem[i]; acc2 += val_j * B_mem[j]; } if(i < N) { const eT val_i = A.at(row, i); out[i] = val_i; acc1 += val_i * B_mem[i]; } return acc1 + acc2; }
TEST_F(Invaliditetsdaekning_KI_OSV_25_49, Invaliditetsdaekning_I_PCT_Gage) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAEReguleringskode, "Gage"); auto r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); // if (!r.isAllOk()) cout << r; EXPECT_EQ(4, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEPctGrMin, kProductElementRequired)); EXPECT_TRUE(r.hasMessages(kTAEPctOblMax, kProductElementRequired)); EXPECT_TRUE(r.hasMessages(kTAEBlGrMin, kProductElementRequired)); EXPECT_TRUE(r.hasMessages(kTAESpaendPct, kProductElementRequired)); ta.setValue(kTAEPctGrMin, 40); ta.setValue(kTAEPctOblMax, 50); // now set pct and it should be only complain about missing amount r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); // EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEBlGrMin, kProductElementRequired)); ta.setValue(kTAEBlGrMin, 500000); // now set the min amount and execpt it to be ok r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); // expect to find TAEBlGrMin }
TEST_F(UnionAgreementParsing, UAIncluded_Udbetalingsperiode) { KonceptInfo ki {PROSA, 5, 0, { {11, "true"}, // Parameter-Basis {1, "true"}, // Solidarisk faellestarif {15, "true"}, // FG span {6, "true"} // SEB Firmapensionspulje } }; re.initContext(ki, OUTSIDE); RuleEngine::_printDebug = true; RuleEngine::_printDebugAtValidation = true; re.getContainer().printConstantsFromContext(kUdbetalingsperiode); TA ta {"20247940"}; ta.setValue(kUdbetalingsperiode, 13); ta.setValue(kAftaleIkraftdato, 20150701); ta.setValue(kBidragEjFoesteTrin_MK, false); auto r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); re.initContext(ki, INCLUDED, 6); r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_TRUE(r.hasMessages(kUdbetalingsperiode, kValueNotAllowed)); ta.setValue(kUdbetalingsperiode, 25); r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); }
TEST_F(UnionAgreementParsing, UAIncluded_MaxAndelLinkBidragPCT) { KonceptInfo ki {OSV, 50, 0, { {11, "true"}, // Parameter-Basis {1, "true"}, // Solidarisk faellestarif {15, "true"}, // FG span {6, "true"} // SEB Firmapensionspulje } }; re.initContext(ki, INCLUDED, 4); RuleEngine::_printDebug = true; RuleEngine::_printDebugAtValidation = true; re.getContainer().printKoncepts(); re.getContainer().printSubkonceptConstants(18); re.getContainer().printUnionAgreementConstants(4); TA ta {"20247940"}; ta.setValue(kMaxAndelLinkBidragPCT, 35); ta.setValue(kAftaleIkraftdato, 20150701); ta.setValue(kBidragEjFoesteTrin_MK, false); auto r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_TRUE(r.hasMessages(kMaxAndelLinkBidragPCT, kValueOverLimit)); ta.setValue(kMaxAndelLinkBidragPCT, 30); r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); }
static bool intersects(TA const & a, B const & b) { if (a.hasTransform()) return IntersectionTester::intersects<N, T>(Transformer::transform<N, T>(a.getObject(), a.getTransform()), b); else return IntersectionTester::intersects<N, T>(a.getObject(), b); }
TEST_F(Invaliditetsdaekning_KI_OSV_25_49, Invaliditetsdaekning_TAEUdloebsalder_POSITIVE) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAE_Udlobsforskellig_MK, false); auto r = re.validate(ta, false); // if (!r.isAllOk()) cout << r; EXPECT_TRUE(r.isAllOk()); // should be missing both KortTAE_Min_obl_faktor and KortTAE_Daekningsperiode ta.setValue(kTAE_Udlobsforskellig_MK, true); r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAE_Udlobsalder, kProductElementRequired)); ta.setValue(kTAE_Udlobsalder, 46); r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAE_Udlobsalder, kValueNotAllowed)); ta.setValue(kTAE_Udlobsalder, 65); r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); }
TEST_F(Behandlingsforsikring_KI_OSV_25_49, Behandlingsforsikring_POSITIVE) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040"}; // KonceptOid 4 - OSV ta.setValue(kHospitalsdaekning_MK, false); auto r = re.validate(ta, {kHospitalsdaekning_MK, kHospitalsdaekningFrivillig_MK, kHospitalsdaekningLeverandoer}); EXPECT_TRUE(r.isAllOk()); // if (!r.isAllOk()) cout << r; ta.setValue(kHospitalsdaekning_MK, true); r = re.validate(ta, false);//{kHospitalsdaekning_MK, kHospitalsdaekningFrivillig_MK, kHospitalsdaekningLeverandoer}); EXPECT_FALSE(r.isAllOk()); // if (!r.isAllOk()) cout << r; EXPECT_EQ(2, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kHospitalsdaekningFrivillig_MK, kProductElementRequired)); EXPECT_TRUE(r.hasMessages(kHospitalsdaekningLeverandoer, kProductElementRequired)); ta.setValue(kHospitalsdaekningFrivillig_MK, true); r = re.validate(ta, false); //{kHospitalsdaekning_MK, kHospitalsdaekningFrivillig_MK, kHospitalsdaekningLeverandoer}); EXPECT_FALSE(r.isAllOk()); // if (!r.isAllOk()) cout << r; EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kHospitalsdaekningLeverandoer, kProductElementRequired)); ta.setValue(kHospitalsdaekningLeverandoer, re.getDefaultValue(kHospitalsdaekningLeverandoer)->stringValue()); r = re.validate(ta, false); //{kHospitalsdaekning_MK, kHospitalsdaekningFrivillig_MK, kHospitalsdaekningLeverandoer}); EXPECT_TRUE(r.isAllOk()); // if (!r.isAllOk()) cout << r; }
explicit kernel_matrix(const expansion_type& e, const TA& targets, const SA& sources) : e_(e), targets_(targets.begin(), targets.end()), sources_(sources.begin(), sources.end()), plan(nullptr) { }
TEST_F(TAE_RFY_KI_OSV_25_49, InsuranceCondition_2) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kInsuranceConditionVersion, "2"); ta.setValue(kTAE_RFY, re.getDefaultValue(kTAE_RFY)->stringValue()); auto r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); // Ingen is allowed for insurance condition version 1 }
void VIXTrader::run(void) throw(TraderException) { TA ta; _invested_days = days(0); Series::EODSeries::const_iterator vix_iter(_vix_db.begin()); advance(vix_iter, 100); // Skip first 100 bars to give enough room too BBANDS calculation for( ; vix_iter != _vix_db.end(); ++vix_iter ) { try { // Calculate current invested days if( ! _miPositions.open().empty() ) _invested_days = _invested_days + days(1); // Calculate VIX BBANDS TA::BBRes resBBANDS3 = ta.BBANDS(_vix_db.close(vix_iter, 100), 100, 3, 3); TA::BBRes resBBANDS1 = ta.BBANDS(_vix_db.close(vix_iter, 100), 100, 1, 1); // Check buy signal if( _miPositions.open().empty() && vix_iter->second.close > resBBANDS3.upper_band[0] ) { // Buy tomorrow's close Series::EODSeries::const_iterator iter_entry = _spx_db.after(vix_iter->first); if( iter_entry == _spx_db.end() ) { cerr << "Can't open position after " << vix_iter->first << endl; continue; } buy(_spx_db.name(), iter_entry->first, Price(iter_entry->second.open)); } // Check sell signal if( ! _miPositions.open().empty() && vix_iter->second.close < resBBANDS1.upper_band[0] ) { // Get next bar Series::EODSeries::const_iterator iter_exit = _spx_db.after(vix_iter->first); if( iter_exit == _spx_db.end() ) { cerr << "Can't close position after " << vix_iter->first << endl; continue; } // Close all open positions at tomorrow's close PositionSet ps = _miPositions.open(); for( PositionSet::const_iterator pos_iter = ps.begin(); pos_iter != ps.end(); ++pos_iter ) { PositionPtr pPos = (*pos_iter); close(pPos->id(), iter_exit->first, Price(iter_exit->second.open)); } // end of all open positions } } catch( std::exception& e ) { cerr << e.what() << endl; continue; } } // for each bar }
TEST_F(ContributionLadder_Anciennitet_CONTEXT_KI_OSV_25_50, Bidragsstigningsform_Anciennitet_3_Steps_Inkl_POSITIVE) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040"}; // KonceptOid 4 - OSV // ta.setValue(kUnionAgreementRelationship, kOUTSIDE); ta.setValue(kPrivate_Taxed_MK, false); ta.setValue(kBidragsstigningsform, "Anciennitet" ); ta.setValue(kHospitalsdaekning_MK, true); ta.setValue(kHospitalsdaekningLeverandoer, "Codan"); ta.setValue(kHospitalsdaekningFrivillig_MK, false); ta.addContributionStep( {0, 2.6, 3} ); auto r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); cout << r; ta.addContributionStep( {2, 3, 4} ); r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); cout << r; ta.addContributionStep( {5, 4, 3.2} ); r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); cout << r; }
// Test kIndmeldelsesalder and getting options prior to that TEST_F(ContributionLadder_Ingen_CONTEXT_KI_OSV_25_50, Bidragsstigningsform_Ingen_No_Hospitalsdaekning) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040"}; // KonceptOid 4 - OSV ta.setValue(kPrivate_Taxed_MK, false); ta.setValue(kBidragsstigningsform, "Ingen"); // ta.setValue(kUnionAgreementRelationship, kOUTSIDE); ta.setValue(kHospitalsdaekning_MK, false); // expecting complains about missing step auto r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); // if (r.isAllOk()) cout << r; EXPECT_EQ(1, r.getValidationResults(kBidragstrappe).size()); EXPECT_TRUE(r.hasMessages(kBidragstrappe, kProductElementRequired)); r = re.validate(ta, (unsigned short) kBidragsstigningsform); EXPECT_TRUE(r.isAllOk()); // if (r.isAllOk()) cout << r; r = re.validate(ta, { kBidragsstigningsform, kBidragstrappe }); EXPECT_TRUE(r.isAllOk()); // if (r.isAllOk()) cout << r; EXPECT_EQ(2, r.getWarnings(kBidragstrappe).size()); EXPECT_TRUE(r.hasWarnings(kBidragstrappe, kProductElementRequired)); // now add one step, but let it start from 3 (!=0), and it should fail ta.addContributionStep( { 3, 3.4, 5.3 }); r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); // if (r.isAllOk()) cout << r; EXPECT_TRUE(r.hasMessages(kBidragstrappe, kValueNotAllowed)); // now remove that step, and add one that starts from 0 and no complains ta.removeContributionStep( { 3, 0, 0 }); ta.addContributionStep( { 0, 3.4, 5.3 }); r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); // if (!r.isAllOk()) cout << r; // then add one more and it should complain again, that only 1 step is allowed, when "Ingen" is selected in Bidragsstigningsform ta.addContributionStep( { 1, 4, 6 }); r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); // if (r.isAllOk()) cout << r; EXPECT_TRUE(r.hasMessages(kBidragstrappe, kValueNotAllowed)); // now remove the last step (index!=0), and everything should be fine again ta.removeContributionStep( { 1, 0, 0 }); r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); // if (!r.isAllOk()) cout << r; }
// Test DoedBlGrMin // Allowed values: [0 - 5,000,000] // Expected result: // Validation of value for DoedBlGrMin should be ok // But a warning should be set that says the DoedReguleringskode is not set in the parser TEST_F(Doedsfaldsdaekning_I_Procent_KI_OSV_25_49, DoedBlGrMin_Single_Value_OK_With_Warning2) { TA ta { "15124040" }; ta.setValue(kDoedBlGrMin, (long) 100000); RuleEngine::_printDebugAtValidation = true; auto r = re.validate(ta, {kDoedBlGrMin, kDoedReguleringskode}); EXPECT_TRUE(r.isAllOk()); // if (!r.isAllOk()) cout << r; auto v = r.getWarnings(kDoedReguleringskode); EXPECT_EQ(kTokenNotDefined, v.at(0).getValidationCode()); }
TEST_F(Invaliditetsdaekning_KI_OSV_25_49, Invaliditetsdaekning_TAEBlGrMin_OverLimit) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAEReguleringskode, "Pristal"); ta.setValue(kTAEBlGrMin, 800001); ta.setValue(kTAEBlOblMax, 800001); auto r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_TRUE(r.hasMessages(kTAEBlGrMin, kValueOverLimit)); EXPECT_TRUE(r.hasMessages(kTAEBlOblMax, kValueOverLimit)); ta.setValue(kTAEBlGrMin, 800000); ta.setValue(kTAEBlOblMax, 800000); r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); ta.setValue(kTAEBlGrMin, 799999); ta.setValue(kTAEBlOblMax, 799999); r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); }
TEST_F(Invaliditetsdaekning_ITPension_50, Invaliditetsdaekning_TAEPctGrMin_OverLimit) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAEReguleringskode, "Gage"); ta.setValue(kTAEPctGrMin, 61); ta.setValue(kTAEPctOblMax, 61); auto r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_TRUE(r.hasMessages(kTAEPctGrMin, kValueOverLimit)); EXPECT_TRUE(r.hasMessages(kTAEPctOblMax, kValueOverLimit)); ta.setValue(kTAEPctGrMin, 60); ta.setValue(kTAEPctOblMax, 60); r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); ta.setValue(kTAEPctGrMin, 59); ta.setValue(kTAEPctOblMax, 59); r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); }
// Test DoedBlGrMin // Allowed values: [0 - 5,000,000] // Expected result: // Validation of value should be ok // But a warning should be set that says the DoedReguleringskode is not set in the parser TEST_F(Doedsfaldsdaekning_I_Procent_KI_OSV_25_49, DoedBlGrMin_Single_Value_OK_With_Warning) { TA ta { "15124040" }; ta.setValue(kDoedBlGrMin, (long) 100000); RuleEngine::_printDebugAtValidation = true; auto r = re.validate(ta, (unsigned short) kDoedBlGrMin); EXPECT_TRUE(r.isAllOk()); // if (!r.isAllOk()) cout << r; // expecting 2 warnings, because the kDoedReguleringskode has two rules, and its missing in both expressions // and if both cases it should be kTokenNotDefined // EXPECT_EQ(1, r.getWarnings().size()); // EXPECT_TRUE(r.hasWarnings(kDoedReguleringskode, kTokenNotDefined)); }
TEST_F(Invaliditetsdaekning_ITPension_50, Invaliditetsdaekning_TAEBlGrMin_NotRequired) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAEReguleringskode, "Gage"); ta.setValue(kTAEPctGrMin, 40); ta.setValue(kTAEPctOblMax, 50); cout << "is taeblgrmin allowed : " << boolalpha << re.isProductElementAllowed(kTAEBlGrMin) << endl; auto r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.hasMessages(kTAEBlGrMin)); r = re.validate(ta, true); cout << r; EXPECT_FALSE(r.hasMessages(kTAEBlGrMin)); }
arma_hot inline void op_strans::apply_noalias(Mat<eT>& out, const TA& A) { arma_extra_debug_sigprint(); const uword A_n_cols = A.n_cols; const uword A_n_rows = A.n_rows; out.set_size(A_n_cols, A_n_rows); if( (TA::is_row) || (TA::is_col) || (A_n_cols == 1) || (A_n_rows == 1) ) { arrayops::copy( out.memptr(), A.memptr(), A.n_elem ); } else { if( (A_n_rows <= 4) && (A_n_rows == A_n_cols) ) { op_strans::apply_noalias_tinysq(out, A); } else { for(uword k=0; k < A_n_cols; ++k) { uword i, j; const eT* colptr = A.colptr(k); for(i=0, j=1; j < A_n_rows; i+=2, j+=2) { const eT tmp_i = colptr[i]; const eT tmp_j = colptr[j]; out.at(k, i) = tmp_i; out.at(k, j) = tmp_j; } if(i < A_n_rows) { out.at(k, i) = colptr[i]; } } } } }
TEST_F(TAE_RFY_KI_OSV_25_49, InsuranceCondition_1) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kInsuranceConditionVersion, "1"); ta.setValue(kTAE_RFY, re.getDefaultValue(kTAE_RFY)->stringValue()); auto r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); cout << r; r.hasMessages(kTAE_RFY, ValidationCode::kValueNotAllowed); ta.setValue(kTAE_RFY, "Ingen"); r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); // Ingen is allowed for insurance condition version 1 cout << r; }
TEST_F(ContributionLadder_Anciennitet_CONTEXT_KI_OSV_25_50, Bidragsstigningsform_Anciennitet_POSITIVE) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040"}; // KonceptOid 4 - OSV // ta.setValue(kUnionAgreementRelationship, kOUTSIDE); ta.setValue(kPrivate_Taxed_MK, false); ta.setValue(kBidragsstigningsform, "Anciennitet" ); ta.setValue(kHospitalsdaekning_MK, false); auto r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); // if (r.isAllOk()) cout << r; EXPECT_EQ(1, r.getValidationResults(kBidragstrappe).size()); EXPECT_TRUE(r.hasMessages(kBidragstrappe, kProductElementRequired)); ta.addContributionStep( {18,2.5, 5} ); }
// Test Gage with max amount, which should fail // Expected: // No value allowed for DoedBlOblMax as DoedReguleringskode == Gage TEST_F(Doedsfaldsdaekning_I_Procent_KI_OSV_25_49, DoedBlOblMax_Single_Value_NOT_OK) { TA ta { "15124040" }; ta.setValue(kDoedReguleringskode, "Gage"); ta.setValue(kDoedBlOblMax, (long) 700000); RuleEngine::_printDebugAtValidation = true; auto r = re.validate(ta, (unsigned short) kDoedBlOblMax); cout << r; EXPECT_FALSE(r.isAllOk()); std::vector<sbx::ValidationResult> v = r.getValidationResults(kDoedBlOblMax); ASSERT_EQ(1, v.size()); EXPECT_EQ(sbx::ValidationCode::kProductElementNotAllowed, v.at(0).getValidationCode()); if (sbx::ValidationCode::kProductElementNotAllowed != v.at(0).getValidationCode()) cout << r; }
// Test missing value on TA, DoedBlOblMax // Allowed values: // Expected: // Warnings should contain a warning say that the product element being validated is missing on the TA TEST_F(Doedsfaldsdaekning_I_Procent_KI_OSV_25_49, DoedBlGrMin_ValidateNonExistingToken_NOT_OK) { TA ta { "15124040" }; ta.setValue(kDoedReguleringskode, "Pristal"); // set MIN value, DoedBlGrMin ta.setValue(kDoedBlGrMin, (long) 100000); RuleEngine::_printDebugAtValidation = true; // ... but validate MAX, DoedBlOblMax auto r = re.validate(ta, (unsigned short) kDoedBlOblMax); EXPECT_TRUE(r.isAllOk()); // if (!r.isAllOk()) cout << r; ASSERT_EQ(1, r.getWarnings(kDoedBlOblMax).size()); EXPECT_EQ(sbx::ValidationCode::kProductElementRequired, r.getWarnings(kDoedBlOblMax).at(0).getValidationCode()); }
TEST_F(Doedsfaldsdaekning_I_Procent_KI_OSV_25_49, DoedSpaendPct) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kDoedReguleringskode, "Gage"); ta.setValue(kDoedBlGrMin, (long) 100000); ta.setValue(kDoedPctGrMin, (long) 200); ta.setValue(kDoedPctOblMax, (long) 600); auto r = re.validate(ta, true); EXPECT_FALSE(r.isAllOk()); // if (!r.isAllOk()) cout << r; EXPECT_TRUE(r.hasMessages(kDoedSpaendPct, kValueOverLimit)); // re.getContainer().printConstants(17); }
TEST_F(ContributionLadder_Ingen_CONTEXT_KI_OSV_25_50, PrivateTaxedMK_TAETilfirmaMK_NEGATIVE) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040"}; // KonceptOid 4 - OSV ta.setValue(kAftaleIkraftdato, 20150701); ta.setValue(kPrivate_Taxed_MK, true); ta.setValue(kTAETilfirma_MK, true); auto r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_TRUE(r.hasMessages(kTAETilfirma_MK, kValueNotAllowed)); ta.setValue(kTAETilfirma_MK, false); r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.hasMessages(kPrivate_Taxed_MK, kValueNotAllowed)); EXPECT_FALSE(r.hasMessages(kTAETilfirma_MK, kValueNotAllowed)); }
/** * Short description: * Testing the DodReguleringstype = Gage * * Product Elements being tested: * DoedReguleringskode = Gage * DoedPctGrMin, DoedPctOblMax, DoedSpaendPct * DoedBlGrMin * * Expected results: * isAllOk() == true, i.e. no validation messages * * Expected warnings: * no warnings expected * */ TEST_F(Doedsfaldsdaekning_I_Procent_KI_OSV_25_49, DoedReguleringstype_GAGE_POSITIVE) { TA ta { "15124040" }; ta.setValue(kDoedReguleringskode, "Gage"); ta.setValue(kDoedPctGrMin, (long) 200); ta.setValue(kDoedPctOblMax, (long) 300); ta.setValue(kDoedBlGrMin, (long) 200000); RuleEngine::_printDebugAtValidation = true; auto r = re.validate(ta, { kDoedReguleringskode, kDoedPctGrMin, kDoedPctOblMax, kDoedSpaendPct, kDoedBlGrMin }); cout << r; EXPECT_TRUE(r.isAllOk()); }
TEST_F(Invaliditetsdaekning_KI_OSV_25_49, Invaliditetsdaekning_I_Kr_Pristal) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAEReguleringskode, "Pristal"); auto r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); // if (!r.isAllOk()) cout << r; EXPECT_EQ(3, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEBlGrMin, kProductElementRequired)); EXPECT_TRUE(r.hasMessages(kTAEBlOblMax, kProductElementRequired)); EXPECT_TRUE(r.hasMessages(kTAESpaendBl, kProductElementRequired)); ta.setValue(kTAEBlGrMin, 100000); ta.setValue(kTAEBlOblMax, 200000); // now set amounts and it should be happy r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); // }
TEST_F(ContributionLadder_Anciennitet_CONTEXT_KI_OSV_25_50, Bidragsstigningsform_Anciennitet_1_Step_Inkl_NEGATIVE) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040"}; // KonceptOid 4 - OSV ta.setValue(kUnionAgreementRelationship, kOUTSIDE); ta.setValue(kPrivate_Taxed_MK, false); ta.setValue(kBidragsstigningsform, "Anciennitet" ); ta.setValue(kHospitalsdaekning_MK, true); ta.setValue(kHospitalsdaekningLeverandoer, "Codan"); ta.setValue(kHospitalsdaekningFrivillig_MK, false); ta.addContributionStep( {0, 2, 2} ); // == 4 which is below BidragInklHispdaekningPctMin == 5 auto r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); cout << r; EXPECT_EQ(1, r.getValidationResults(kBidragstrappe).size()); EXPECT_TRUE(r.hasMessages(kBidragstrappe, kValueUnderLimit)); EXPECT_EQ("33.1.1.1", r.getValidationResults(kBidragstrappe).at(0).getRuleId()); ta.removeContributionStep( {0, 2, 2} ); // remove and set new step that equals to 5 ta.addContributionStep( {0, 2, 3} ); r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); cout << r; }
TEST_F(Invaliditetsdaekning_KI_OSV_25_49, Invaliditetsdaekning_I_Kr_Ingen_NEGATIVE) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAEReguleringskode, "Ingen"); auto r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); // if (!r.isAllOk()) cout << r; EXPECT_EQ(3, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEBlGrMin, kProductElementRequired)); EXPECT_TRUE(r.hasMessages(kTAEBlOblMax, kProductElementRequired)); EXPECT_TRUE(r.hasMessages(kTAESpaendBl, kProductElementRequired)); ta.setValue(kTAEBlGrMin, 200000); // the span is too big, so should complain ta.setValue(kTAEBlOblMax, 900000); // now set max amounts to more than allowed r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); // EXPECT_EQ(2, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEBlOblMax, kValueOverLimit)); EXPECT_TRUE(r.hasMessages(kTAESpaendBl, kValueOverLimit)); }
TEST_F(ContributionLadder_Ingen_CONTEXT_KI_OSV_25_50, Bidragsstigningsform_Ingen_Over100_NEGATIVE) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040"}; // KonceptOid 4 - OSV ta.setValue(kAftaleIkraftdato, 20150701); // ta.setValue(kUnionAgreementRelationship, kOUTSIDE); ta.setValue(kBidragEjFoesteTrin_MK, false); ta.setValue(kBidragsstigningsform, "Ingen"); ta.setValue(kHospitalsdaekning_MK, false); ta.setValue(kHospitalsdaekningFrivillig_MK, false); ta.setValue(kPrivate_Taxed_MK, false); ta.addContributionStep( {0, 90, 11} ); auto r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); cout << r; EXPECT_TRUE(r.hasMessages(kBidragstrappe, kValueOverLimit)); ta.addContributionStep( {0, 90, 9} ); r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); cout << r; }