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)); }
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; }
// 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_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(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_F(ContributionLadder_Anciennitet_CONTEXT_KI_OSV_25_50, Bidragsstigningsform_Anciennitet_1_Step_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( {0, 1, 1} ); 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, kValueUnderLimit)); ta.removeContributionStep( {0, 1, 1} ); ta.addContributionStep( {0, 3, 3} ); r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); // if (r.isAllOk()) cout << r; }
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(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()); }
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(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 }
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)); }
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(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 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(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)); }
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); }
/** * 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_Over100_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, 3} ); auto r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); cout << r; ta.addContributionStep( {2, 99, 2} ); // add a step where the total is not increasing 1+1 < 2+3 r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); cout << r; EXPECT_TRUE(r.hasMessages(kBidragstrappe, kValueOverLimit)); }
TEST_F(ContributionLadder_Anciennitet_CONTEXT_KI_OSV_25_50, Bidragsstigningsform_Anciennitet_1_Step_Ekskl_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, false); ta.addContributionStep( {0, 2, 1} ); // == 3 which is below BidragEksklHispdaekningPctMin == 3 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.2.1", r.getValidationResults(kBidragstrappe).at(0).getRuleId()); ta.removeContributionStep( {0, 2, 1} ); // remove and set new step that equals to 6 ta.addContributionStep( {0, 2, 4} ); r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); cout << r; }
TEST_F(Invaliditetsdaekning_KI_OSV_25_49, Invaliditetsdaekning_I_PCT_Ingen_NEGATIVE_Partial) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAEReguleringskode, "Ingen"); ta.setValue(kTAEBlGrMin, -1); // 20 is min ta.setValue(kTAEBlOblMax, 800001); // 80 is max auto r = re.validate(ta, false); // if (!r.isAllOk()) cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_EQ(3, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEBlGrMin, kValueUnderLimit)); EXPECT_TRUE(r.hasMessages(kTAEBlOblMax, kValueOverLimit)); EXPECT_TRUE(r.hasMessages(kTAESpaendBl, kValueOverLimit)); ta.setValue(kTAEBlGrMin, 600000); ta.setValue(kTAEBlOblMax, 700000); // now set allowed amount and it should be happy r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); // }
TEST_F(Invaliditetsdaekning_KI_OSV_25_49, Invaliditetsdaekning_SoliMax_TAEDaekningstype) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAESoliMax, "Tegningsmaks"); auto r = re.validate(ta, false); // if (!r.isAllOk()) cout << r; EXPECT_TRUE(r.isAllOk()); // ta.setValue(kTAESoliMax, "Obligatorisk maks"); r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEDaekningstype, kProductElementRequired)); ta.setValue(kTAEDaekningstype, re.getDefaultValue(kTAEDaekningstype)->stringValue()); r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); ta.setValue(kTAESoliMax, "Tegningsmaks"); r = re.validate(ta, false); cout << r; EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEDaekningstype, kProductElementNotAllowed)); r = re.validate(ta, false); cout << r; ta.remove(kTAEDaekningstype); ta.setValue(kTAESoliMax, "Ingen"); r = re.validate(ta, false); cout << r; EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEDaekningstype, kProductElementRequired)); }
// 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 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_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 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_F(Doedsfaldsdaekning_I_Procent_KI_OSV_25_49, DoedBlGrMin_Ingen_NEGATIVE_Overlimit) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kDoedReguleringskode, "Gage"); ta.setValue(kDoedBlGrMin, (long) 800001); ta.setValue(kDoedPctGrMin, (long) 200); ta.setValue(kDoedPctOblMax, (long) 300); auto r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); cout << r; EXPECT_TRUE(r.hasMessages(kDoedBlGrMin, kValueOverLimit)); ta.setValue(kDoedBlGrMin, (long) 800000); r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); cout << r; ta.setValue(kDoedBlGrMin, (long) 799999); r = re.validate(ta, false); EXPECT_TRUE(r.isAllOk()); cout << r; }
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; }
TEST_F(Invaliditetsdaekning_KI_OSV_25_49, Invaliditetsdaekning_I_PCT_Gage_NEGATIVE_Partial) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAEReguleringskode, "Gage"); ta.setValue(kTAEPctGrMin, 10); // 20 is min ta.setValue(kTAEPctOblMax, 90); // 80 is max 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, kValueUnderLimit)); EXPECT_TRUE(r.hasMessages(kTAEPctOblMax, kValueOverLimit)); EXPECT_TRUE(r.hasMessages(kTAESpaendPct, kValueOverLimit)); EXPECT_TRUE(r.hasMessages(kTAEBlGrMin, kProductElementRequired)); ta.setValue(kTAEPctGrMin, 60); ta.setValue(kTAEPctOblMax, 70); // now set vallowed pct and it should be happy ta.setValue(kTAEBlGrMin, 200000); // now set vallowed pct and it should be happy r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); // }