CLASS ltc_sample_batcher DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}sample_batcher. METHODS setup. METHODS counts_samples FOR TESTING. METHODS counts_urgent FOR TESTING. METHODS rejects_empty_id FOR TESTING. METHODS rejects_duplicate FOR TESTING. METHODS rejects_bad_priority FOR TESTING. METHODS normalizes_input FOR TESTING. METHODS batches_sorted FOR TESTING. METHODS unknown_type_is_zero FOR TESTING. ENDCLASS. CLASS ltc_sample_batcher IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}sample_batcher( ). ENDMETHOD. METHOD counts_samples. mo_cut->add_sample( iv_sample_id = 'S1' iv_test_type = 'GLU' iv_priority = 2 ). mo_cut->add_sample( iv_sample_id = 'S2' iv_test_type = 'GLU' iv_priority = 3 ). DATA(ls_batch) = mo_cut->get_batch( 'GLU' ). cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_batch-total ). ENDMETHOD. METHOD counts_urgent. mo_cut->add_sample( iv_sample_id = 'S1' iv_test_type = 'K' iv_priority = 1 ). mo_cut->add_sample( iv_sample_id = 'S2' iv_test_type = 'K' iv_priority = 2 ). DATA(ls_batch) = mo_cut->get_batch( 'K' ). cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_batch-total ). cl_abap_unit_assert=>assert_equals( exp = 1 act = ls_batch-urgent ). ENDMETHOD. METHOD rejects_empty_id. cl_abap_unit_assert=>assert_equals( exp = abap_false act = mo_cut->add_sample( iv_sample_id = '' iv_test_type = 'GLU' iv_priority = 2 ) ). ENDMETHOD. METHOD rejects_duplicate. mo_cut->add_sample( iv_sample_id = 'S1' iv_test_type = 'GLU' iv_priority = 2 ). cl_abap_unit_assert=>assert_equals( exp = abap_false act = mo_cut->add_sample( iv_sample_id = 'S1' iv_test_type = 'NA' iv_priority = 2 ) ). ENDMETHOD. METHOD rejects_bad_priority. cl_abap_unit_assert=>assert_equals( exp = abap_false act = mo_cut->add_sample( iv_sample_id = 'S1' iv_test_type = 'GLU' iv_priority = 9 ) ). ENDMETHOD. METHOD normalizes_input. cl_abap_unit_assert=>assert_equals( exp = abap_true act = mo_cut->add_sample( iv_sample_id = 's1' iv_test_type = 'glu' iv_priority = 2 ) ). DATA(lt_batches) = mo_cut->get_batches( ). cl_abap_unit_assert=>assert_equals( exp = 'GLU' act = lt_batches[ 1 ]-test_type ). ENDMETHOD. METHOD batches_sorted. mo_cut->add_sample( iv_sample_id = 'S1' iv_test_type = 'NA' iv_priority = 2 ). mo_cut->add_sample( iv_sample_id = 'S2' iv_test_type = 'GLU' iv_priority = 2 ). DATA(lt_batches) = mo_cut->get_batches( ). cl_abap_unit_assert=>assert_equals( exp = 'GLU' act = lt_batches[ 1 ]-test_type ). cl_abap_unit_assert=>assert_equals( exp = 'NA' act = lt_batches[ 2 ]-test_type ). ENDMETHOD. METHOD unknown_type_is_zero. DATA(ls_batch) = mo_cut->get_batch( 'XXX' ). cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_batch-total ). cl_abap_unit_assert=>assert_equals( exp = 0 act = ls_batch-urgent ). ENDMETHOD. ENDCLASS.