CLASS ltc_loyalty_evaluator DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}if_loyalty_rules. METHODS setup. METHODS tier_of_boundary_points FOR TESTING. METHODS negative_points_are_basic FOR TESTING. METHODS discount_of_each_tier FOR TESTING. METHODS discount_of_unknown_tier FOR TESTING. METHODS points_to_silver FOR TESTING. METHODS points_to_gold FOR TESTING. METHODS points_to_platinum FOR TESTING. METHODS platinum_needs_no_points FOR TESTING. ENDCLASS. CLASS ltc_loyalty_evaluator IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}loyalty_evaluator( ). ENDMETHOD. METHOD tier_of_boundary_points. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-basic act = mo_cut->get_tier( 0 ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-silver act = mo_cut->get_tier( 1000 ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-gold act = mo_cut->get_tier( 5000 ) ). cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-platinum act = mo_cut->get_tier( 20000 ) ). ENDMETHOD. METHOD negative_points_are_basic. cl_abap_unit_assert=>assert_equals( exp = {{p}}if_loyalty_rules=>c_tier-basic act = mo_cut->get_tier( -100 ) ). ENDMETHOD. METHOD discount_of_each_tier. cl_abap_unit_assert=>assert_equals( exp = 0 act = mo_cut->get_discount( {{p}}if_loyalty_rules=>c_tier-basic ) ). cl_abap_unit_assert=>assert_equals( exp = 3 act = mo_cut->get_discount( {{p}}if_loyalty_rules=>c_tier-silver ) ). cl_abap_unit_assert=>assert_equals( exp = 7 act = mo_cut->get_discount( {{p}}if_loyalty_rules=>c_tier-gold ) ). cl_abap_unit_assert=>assert_equals( exp = 12 act = mo_cut->get_discount( {{p}}if_loyalty_rules=>c_tier-platinum ) ). ENDMETHOD. METHOD discount_of_unknown_tier. cl_abap_unit_assert=>assert_equals( exp = 0 act = mo_cut->get_discount( 'X' ) ). ENDMETHOD. METHOD points_to_silver. cl_abap_unit_assert=>assert_equals( exp = 1000 act = mo_cut->points_to_next_tier( 0 ) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = mo_cut->points_to_next_tier( 999 ) ). ENDMETHOD. METHOD points_to_gold. cl_abap_unit_assert=>assert_equals( exp = 4000 act = mo_cut->points_to_next_tier( 1000 ) ). ENDMETHOD. METHOD points_to_platinum. cl_abap_unit_assert=>assert_equals( exp = 15000 act = mo_cut->points_to_next_tier( 5000 ) ). ENDMETHOD. METHOD platinum_needs_no_points. cl_abap_unit_assert=>assert_equals( exp = 0 act = mo_cut->points_to_next_tier( 20000 ) ). ENDMETHOD. ENDCLASS.