Files
abap/exercises/practice/minesweeper/zcl_minesweeper.clas.testclasses.abap

193 lines
4.1 KiB
ABAP
Raw Normal View History

2022-04-01 12:25:15 +01:00
CLASS ltc_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
2022-01-26 14:36:16 +01:00
PRIVATE SECTION.
2022-04-01 12:25:15 +01:00
2022-01-26 14:36:16 +01:00
DATA cut TYPE REF TO zcl_minesweeper.
METHODS setup.
2022-04-01 12:25:15 +01:00
METHODS assert_that IMPORTING input TYPE string_table
output TYPE string_table.
METHODS no_rows FOR TESTING RAISING cx_static_check.
METHODS no_columns FOR TESTING RAISING cx_static_check.
METHODS no_mines FOR TESTING RAISING cx_static_check.
METHODS only_mines FOR TESTING RAISING cx_static_check.
METHODS mine_surrounded_by_spaces FOR TESTING RAISING cx_static_check.
METHODS space_surrounded_by_mines FOR TESTING RAISING cx_static_check.
METHODS horizontal_line FOR TESTING RAISING cx_static_check.
METHODS horizontal_line_mines_at_ends FOR TESTING RAISING cx_static_check.
METHODS vertical_line FOR TESTING RAISING cx_static_check.
METHODS vertical_line_mines_at_ends FOR TESTING RAISING cx_static_check.
METHODS cross FOR TESTING RAISING cx_static_check.
METHODS large_minefield FOR TESTING RAISING cx_static_check.
2022-01-26 14:36:16 +01:00
ENDCLASS.
2022-04-01 12:25:15 +01:00
CLASS ltc_test IMPLEMENTATION.
2022-01-26 14:36:16 +01:00
METHOD setup.
cut = NEW zcl_minesweeper( ).
ENDMETHOD.
2022-04-01 12:25:15 +01:00
2022-01-26 14:36:16 +01:00
METHOD no_rows.
2022-04-01 12:25:15 +01:00
assert_that(
input = VALUE #( )
output = VALUE #( ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
2022-01-26 14:36:16 +01:00
METHOD no_columns.
2022-04-01 12:25:15 +01:00
assert_that(
input = VALUE #( ( ) )
output = VALUE #( ( ) ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
2022-01-26 14:36:16 +01:00
METHOD no_mines.
2022-04-01 12:25:15 +01:00
assert_that(
input = VALUE #(
( ` ` )
( ` ` )
( ` ` ) )
output = VALUE #(
( ` ` )
( ` ` )
( ` ` ) ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
METHOD only_mines.
assert_that(
input = VALUE #(
( `***` )
( `***` )
( `***` ) )
output = VALUE #(
( `***` )
( `***` )
( `***` ) ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
2022-01-26 14:36:16 +01:00
METHOD mine_surrounded_by_spaces.
2022-04-01 12:25:15 +01:00
assert_that(
input = VALUE #(
( ` ` )
( ` * ` )
( ` ` ) )
output = VALUE #(
( `111` )
( `1*1` )
( `111` ) ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
2022-01-26 14:36:16 +01:00
METHOD space_surrounded_by_mines.
2022-04-01 12:25:15 +01:00
assert_that(
input = VALUE #(
( `***` )
( `* *` )
( `***` ) )
output = VALUE #(
( `***` )
( `*8*` )
( `***` ) ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
2022-01-26 14:36:16 +01:00
METHOD horizontal_line.
2022-04-01 12:25:15 +01:00
assert_that(
input = VALUE #( ( ` * * ` ) )
output = VALUE #( ( `1*2*1` ) ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
METHOD horizontal_line_mines_at_ends.
assert_that(
input = VALUE #( ( `* *` ) )
output = VALUE #( ( `*1 1*` ) ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
2022-01-26 14:36:16 +01:00
METHOD vertical_line.
2022-04-01 12:25:15 +01:00
assert_that(
input = VALUE #(
( ` ` )
( `*` )
( ` ` )
( `*` )
( ` ` ) )
output = VALUE #(
( `1` )
( `*` )
( `2` )
( `*` )
( `1` ) ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
METHOD vertical_line_mines_at_ends.
assert_that(
input = VALUE #(
( `*` )
( ` ` )
( ` ` )
( ` ` )
( `*` ) )
output = VALUE #(
( `*` )
( `1` )
( ` ` )
( `1` )
( `*` ) ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
2022-01-26 14:36:16 +01:00
METHOD cross.
2022-04-01 12:25:15 +01:00
assert_that(
input = VALUE #(
( ` * ` )
( ` * ` )
( `*****` )
( ` * ` )
( ` * ` ) )
output = VALUE #(
( ` 2*2 ` )
( `25*52` )
( `*****` )
( `25*52` )
( ` 2*2 ` ) ) ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
2022-04-01 12:25:15 +01:00
2022-01-26 14:36:16 +01:00
METHOD large_minefield.
2022-04-01 12:25:15 +01:00
assert_that(
input = VALUE #(
( ` * * ` )
( ` * ` )
( ` * ` )
( ` * *` )
( ` * * ` )
( ` ` ) )
output = VALUE #(
( `1*22*1` )
( `12*322` )
( ` 123*2` )
( `112*4*` )
( `1*22*2` )
( `111111` ) ) ).
ENDMETHOD.
METHOD assert_that.
DATA(act) = cut->annotate( input ).
cl_abap_unit_assert=>assert_equals( act = act
exp = output ).
2022-01-26 14:36:16 +01:00
ENDMETHOD.
ENDCLASS.