CLASS ltc_soil_evaluator DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}soil_evaluator. METHODS setup. METHODS valid_samples_grade_a FOR TESTING. METHODS valid_samples_grade_b FOR TESTING. METHODS valid_samples_grade_c FOR TESTING. METHODS invalid_ph FOR TESTING. METHODS empty_table FOR TESTING. ENDCLASS. CLASS ltc_soil_evaluator IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}soil_evaluator( ). ENDMETHOD. METHOD valid_samples_grade_a. DATA(lt_samples) = VALUE {{p}}soil_evaluator=>tt_sample( ( ph = '6.5' nutrient = 60 ) ( ph = '7.0' nutrient = 55 ) ). DATA(ls_result) = mo_cut->evaluate( lt_samples ). cl_abap_unit_assert=>assert_equals( exp = {{p}}soil_evaluator=>c_status_ok act = ls_result-status ). cl_abap_unit_assert=>assert_equals( exp = '6.8' act = ls_result-avg_ph ). cl_abap_unit_assert=>assert_equals( exp = 58 act = ls_result-avg_nutrient ). cl_abap_unit_assert=>assert_equals( exp = {{p}}soil_evaluator=>c_grade_a act = ls_result-grade ). ENDMETHOD. METHOD valid_samples_grade_b. DATA(lt_samples) = VALUE {{p}}soil_evaluator=>tt_sample( ( ph = '5.5' nutrient = 35 ) ( ph = '6.0' nutrient = 40 ) ). DATA(ls_result) = mo_cut->evaluate( lt_samples ). cl_abap_unit_assert=>assert_equals( exp = {{p}}soil_evaluator=>c_status_ok act = ls_result-status ). cl_abap_unit_assert=>assert_equals( exp = {{p}}soil_evaluator=>c_grade_b act = ls_result-grade ). ENDMETHOD. METHOD valid_samples_grade_c. DATA(lt_samples) = VALUE {{p}}soil_evaluator=>tt_sample( ( ph = '4.0' nutrient = 10 ) ). DATA(ls_result) = mo_cut->evaluate( lt_samples ). cl_abap_unit_assert=>assert_equals( exp = {{p}}soil_evaluator=>c_status_ok act = ls_result-status ). cl_abap_unit_assert=>assert_equals( exp = {{p}}soil_evaluator=>c_grade_c act = ls_result-grade ). ENDMETHOD. METHOD invalid_ph. DATA(lt_samples) = VALUE {{p}}soil_evaluator=>tt_sample( ( ph = '15.0' nutrient = 50 ) ). DATA(ls_result) = mo_cut->evaluate( lt_samples ). cl_abap_unit_assert=>assert_equals( exp = {{p}}soil_evaluator=>c_status_error act = ls_result-status ). cl_abap_unit_assert=>assert_initial( act = ls_result-avg_ph ). cl_abap_unit_assert=>assert_initial( act = ls_result-avg_nutrient ). cl_abap_unit_assert=>assert_initial( act = ls_result-grade ). ENDMETHOD. METHOD empty_table. DATA(lt_samples) = VALUE {{p}}soil_evaluator=>tt_sample( ). DATA(ls_result) = mo_cut->evaluate( lt_samples ). cl_abap_unit_assert=>assert_equals( exp = {{p}}soil_evaluator=>c_status_error act = ls_result-status ). ENDMETHOD. ENDCLASS.