CLASS {{p}}t02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_loyalty_rules. METHODS setup. METHODS tier_boundaries FOR TESTING. METHODS tier_negative FOR TESTING. METHODS tier_zero FOR TESTING. METHODS discount_all_tiers FOR TESTING. METHODS discount_unknown_tier FOR TESTING. METHODS next_tier_from_basic FOR TESTING. METHODS next_tier_from_silver FOR TESTING. METHODS next_tier_from_gold FOR TESTING. METHODS next_tier_from_platinum FOR TESTING. METHODS next_tier_negative_points FOR TESTING. ENDCLASS. CLASS {{p}}t02_hidden IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}loyalty_evaluator( ). ENDMETHOD. METHOD tier_boundaries. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-basic act = mo_cut->get_tier( 999 ) msg = `999` ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-silver act = mo_cut->get_tier( 1000 ) msg = `1000` ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-silver act = mo_cut->get_tier( 4999 ) msg = `4999` ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-gold act = mo_cut->get_tier( 5000 ) msg = `5000` ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-gold act = mo_cut->get_tier( 19999 ) msg = `19999` ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-platinum act = mo_cut->get_tier( 20000 ) msg = `20000` ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-platinum act = mo_cut->get_tier( 500000 ) msg = `500000` ). ENDMETHOD. METHOD tier_negative. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-basic act = mo_cut->get_tier( -1 ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-basic act = mo_cut->get_tier( -5000 ) ). ENDMETHOD. METHOD tier_zero. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-basic act = mo_cut->get_tier( 0 ) ). ENDMETHOD. METHOD discount_all_tiers. cl_abap_unit_assert=>assert_equals( exp = 0 act = mo_cut->get_discount( {{p}}if_loyalty_rules=>c_tier-basic ) msg = `basic` ). cl_abap_unit_assert=>assert_equals( exp = 3 act = mo_cut->get_discount( {{p}}if_loyalty_rules=>c_tier-silver ) msg = `silver` ). cl_abap_unit_assert=>assert_equals( exp = 7 act = mo_cut->get_discount( {{p}}if_loyalty_rules=>c_tier-gold ) msg = `gold` ). cl_abap_unit_assert=>assert_equals( exp = 12 act = mo_cut->get_discount( {{p}}if_loyalty_rules=>c_tier-platinum ) msg = `platinum` ). ENDMETHOD. METHOD discount_unknown_tier. cl_abap_unit_assert=>assert_equals( exp = 0 act = mo_cut->get_discount( 'X' ) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = mo_cut->get_discount( ' ' ) ). ENDMETHOD. METHOD next_tier_from_basic. cl_abap_unit_assert=>assert_equals( exp = 1000 act = mo_cut->points_to_next_tier( 0 ) msg = `0` ). cl_abap_unit_assert=>assert_equals( exp = 1 act = mo_cut->points_to_next_tier( 999 ) msg = `999` ). ENDMETHOD. METHOD next_tier_from_silver. cl_abap_unit_assert=>assert_equals( exp = 4000 act = mo_cut->points_to_next_tier( 1000 ) msg = `1000` ). cl_abap_unit_assert=>assert_equals( exp = 1 act = mo_cut->points_to_next_tier( 4999 ) msg = `4999` ). ENDMETHOD. METHOD next_tier_from_gold. cl_abap_unit_assert=>assert_equals( exp = 15000 act = mo_cut->points_to_next_tier( 5000 ) msg = `5000` ). cl_abap_unit_assert=>assert_equals( exp = 1 act = mo_cut->points_to_next_tier( 19999 ) msg = `19999` ). ENDMETHOD. METHOD next_tier_from_platinum. cl_abap_unit_assert=>assert_equals( exp = 0 act = mo_cut->points_to_next_tier( 20000 ) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = mo_cut->points_to_next_tier( 999999 ) ). ENDMETHOD. METHOD next_tier_negative_points. cl_abap_unit_assert=>assert_equals( exp = 1000 act = mo_cut->points_to_next_tier( -7 ) ). ENDMETHOD. ENDCLASS.