Files
abap/exercises/practice/grains/zcl_grains.clas.testclasses.abap
Marian Zeis d067e42cc2 New exercise: Grains (#44)
* new exercise grains

* change config.json to random place

* add missing bracket in config.sjon

* remove solution from template

* change from decfloat to p

* change from decfloat to p

* linting

* add abapGit Config

Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
2022-06-08 14:00:38 +02:00

113 lines
2.8 KiB
ABAP

CLASS ltcl_grains DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
PRIVATE SECTION.
DATA cut TYPE REF TO zcl_grains.
METHODS setup.
METHODS test_square_1 FOR TESTING RAISING cx_static_check.
METHODS test_square_2 FOR TESTING RAISING cx_static_check.
METHODS test_square_3 FOR TESTING RAISING cx_static_check.
METHODS test_square_4 FOR TESTING RAISING cx_static_check.
METHODS test_square_16 FOR TESTING RAISING cx_static_check.
METHODS test_square_32 FOR TESTING RAISING cx_static_check.
METHODS test_square_64 FOR TESTING RAISING cx_static_check.
METHODS test_square_0 FOR TESTING RAISING cx_static_check.
METHODS test_square_minus_1 FOR TESTING RAISING cx_static_check.
METHODS test_square_65 FOR TESTING RAISING cx_static_check.
METHODS test_total FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_grains IMPLEMENTATION.
METHOD setup.
cut = NEW zcl_grains( ).
ENDMETHOD.
"grains on square 1
METHOD test_square_1.
cl_abap_unit_assert=>assert_equals(
act = cut->square( 1 )
exp = 1 ).
ENDMETHOD.
"grains on square 2
METHOD test_square_2.
cl_abap_unit_assert=>assert_equals(
act = cut->square( 2 )
exp = 2 ).
ENDMETHOD.
"grains on square 3
METHOD test_square_3.
cl_abap_unit_assert=>assert_equals(
act = cut->square( 3 )
exp = 4 ).
ENDMETHOD.
"grains on square 4
METHOD test_square_4.
cl_abap_unit_assert=>assert_equals(
act = cut->square( 4 )
exp = 8 ).
ENDMETHOD.
"grains on square 16
METHOD test_square_16.
cl_abap_unit_assert=>assert_equals(
act = cut->square( 16 )
exp = 32768 ).
ENDMETHOD.
"grains on square 32
METHOD test_square_32.
cl_abap_unit_assert=>assert_equals(
act = cut->square( 32 )
exp = 2147483648 ).
ENDMETHOD.
"grains on square 64
METHOD test_square_64.
cl_abap_unit_assert=>assert_equals(
act = cut->square( 64 )
exp = 9223372036854775808 ).
ENDMETHOD.
"square 0 raises an exception
METHOD test_square_0.
TRY.
cut->square( 0 ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"negative square raises an exception
METHOD test_square_minus_1.
TRY.
cut->square( -1 ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"square greater than 64 raises an exception
METHOD test_square_65.
TRY.
cut->square( 65 ).
cl_abap_unit_assert=>fail( ).
CATCH cx_parameter_invalid.
ENDTRY.
ENDMETHOD.
"returns the total number of grains on the board
METHOD test_total.
cl_abap_unit_assert=>assert_equals(
act = cut->total( )
exp = 18446744073709551615 ).
ENDMETHOD.
ENDCLASS.