diff --git a/src/zcl_aw_part_value.clas.abap b/src/zcl_aw_part_value.clas.abap
index 4eefa58..06b984f 100644
--- a/src/zcl_aw_part_value.clas.abap
+++ b/src/zcl_aw_part_value.clas.abap
@@ -34,7 +34,7 @@ CLASS zcl_aw_part_value IMPLEMENTATION.
METHOD zif_aw_part_value~value_return_dynamic.
IF i_return_address = abap_true.
- e_result = VALUE zif_aw_types=>address( ).
+ e_result = VALUE zif_aw_types=>address( ).
ELSEIF i_return_person = abap_true.
e_result = VALUE zif_aw_types=>person( ).
ELSE.
@@ -44,7 +44,8 @@ CLASS zcl_aw_part_value IMPLEMENTATION.
ENDMETHOD.
METHOD zif_aw_part_value~value_fill_table_for_next.
- result = VALUE #( FOR i = 0 WHILE i <= 4 ( substring( off = i val = sy-abcde len = 1 ) ) ).
+ result = VALUE #( FOR i = 0 WHILE i <= 4 ( substring( off = i
+ val = sy-abcde len = 1 ) ) ).
ENDMETHOD.
ENDCLASS.
diff --git a/src/zcl_aw_part_value.clas.testclasses.abap b/src/zcl_aw_part_value.clas.testclasses.abap
index a7e0226..c6b518c 100644
--- a/src/zcl_aw_part_value.clas.testclasses.abap
+++ b/src/zcl_aw_part_value.clas.testclasses.abap
@@ -1,19 +1,7 @@
CLASS test DEFINITION FINAL
- INHERITING FROM zcl_aw_tm_part_Value
+ INHERITING FROM zcl_aw_tm_part_value
FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
- PRIVATE SECTION.
- METHODS setup.
- DATA cut TYPE REF TO zcl_aw_part_value.
-ENDCLASS.
-
-
-CLASS test IMPLEMENTATION.
-
- METHOD setup.
- cut = NEW #( ).
- ENDMETHOD.
-
ENDCLASS.
diff --git a/src/zcl_aw_test_helper.clas.abap b/src/zcl_aw_test_helper.clas.abap
new file mode 100644
index 0000000..08db181
--- /dev/null
+++ b/src/zcl_aw_test_helper.clas.abap
@@ -0,0 +1,33 @@
+
+CLASS zcl_aw_test_helper DEFINITION
+ PUBLIC
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+
+ DATA mo_class_to_test_generic TYPE REF TO object .
+
+ METHODS constructor .
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+ENDCLASS.
+
+
+
+CLASS ZCL_AW_TEST_HELPER IMPLEMENTATION.
+
+
+ METHOD constructor.
+ TRY.
+ DATA(lv_classname) = cl_abap_classdescr=>get_class_name( me ).
+ FIND REGEX '\\PROGRAM=([^=]+)' IN lv_classname SUBMATCHES lv_classname ##REGEX_POSIX.
+ lv_classname = lv_classname(30).
+ CREATE OBJECT me->mo_class_to_test_generic TYPE (lv_classname).
+ CATCH cx_root ##NO_HANDLER ##CATCH_ALL.
+ ENDTRY.
+
+ IF me->mo_class_to_test_generic IS NOT BOUND.
+ MESSAGE a000(oo) WITH 'unable to create class to test' lv_classname ##NO_TEXT.
+ ENDIF.
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/zcl_aw_test_master.clas.xml b/src/zcl_aw_test_helper.clas.xml
similarity index 67%
rename from src/zcl_aw_test_master.clas.xml
rename to src/zcl_aw_test_helper.clas.xml
index 30950f2..85f8adb 100644
--- a/src/zcl_aw_test_master.clas.xml
+++ b/src/zcl_aw_test_helper.clas.xml
@@ -3,16 +3,13 @@
- ZCL_AW_TEST_MASTER
+ ZCL_AW_TEST_HELPER
E
- ABAP Workshop: Test master
- 05
+ ABAP Workshop: Test helper
1
X
X
X
- 12
- 11
diff --git a/src/zcl_aw_test_master.clas.abap b/src/zcl_aw_test_master.clas.abap
deleted file mode 100644
index 8499a6b..0000000
--- a/src/zcl_aw_test_master.clas.abap
+++ /dev/null
@@ -1,17 +0,0 @@
-CLASS zcl_aw_test_master DEFINITION
- FOR TESTING
- RISK LEVEL HARMLESS
- DURATION SHORT
- PUBLIC
- CREATE PUBLIC .
-
- PUBLIC SECTION.
- PROTECTED SECTION.
- PRIVATE SECTION.
-ENDCLASS.
-
-
-
-CLASS zcl_aw_test_master IMPLEMENTATION.
-
-ENDCLASS.
diff --git a/src/zcl_aw_tm_part_value.clas.abap b/src/zcl_aw_tm_part_value.clas.abap
index 56f3ff1..2053688 100644
--- a/src/zcl_aw_tm_part_value.clas.abap
+++ b/src/zcl_aw_tm_part_value.clas.abap
@@ -1,25 +1,35 @@
-CLASS zcl_aw_tm_part_value DEFINITION
- INHERITING FROM zcl_aw_test_master
- FOR TESTING
- RISK LEVEL HARMLESS
- DURATION SHORT
- PUBLIC
- CREATE PUBLIC .
-
- PUBLIC SECTION.
- PROTECTED SECTION.
- METHODS structure FOR TESTING.
- METHODS table FOR TESTING.
- METHODS dynamic FOR TESTING.
- methods table_letters for testing.
- PRIVATE SECTION.
- DATA cut TYPE REF TO zif_aw_part_value.
- METHODS setup.
+class ZCL_AW_TM_PART_VALUE definition
+ public
+ inheriting from ZCL_AW_TEST_HELPER
+ abstract
+ create public
+ for testing
+ duration short
+ risk level harmless .
+
+public section.
+
+ methods CONSTRUCTOR .
+protected section.
+
+ methods STRUCTURE
+ for testing .
+ methods TABLE
+ for testing .
+ methods DYNAMIC
+ for testing .
+ methods TABLE_LETTERS
+ for testing .
+private section.
+
+ data CUT type ref to ZIF_AW_PART_VALUE .
ENDCLASS.
-CLASS zcl_aw_tm_part_value IMPLEMENTATION.
+CLASS ZCL_AW_TM_PART_VALUE IMPLEMENTATION.
+
+
METHOD structure.
cl_abap_unit_assert=>assert_equals(
exp = VALUE zif_aw_types=>address(
@@ -36,9 +46,6 @@ CLASS zcl_aw_tm_part_value IMPLEMENTATION.
i_country = 'US' ) ).
ENDMETHOD.
- METHOD setup.
- cut = NEW zcl_aw_part_value( ).
- ENDMETHOD.
METHOD table.
@@ -48,6 +55,7 @@ CLASS zcl_aw_tm_part_value IMPLEMENTATION.
ELSE abap_false ) ).
ENDMETHOD.
+
METHOD dynamic.
"check address type
@@ -78,4 +86,9 @@ CLASS zcl_aw_tm_part_value IMPLEMENTATION.
ENDMETHOD.
+
+ METHOD constructor.
+ super->constructor( ).
+ cut ?= mo_class_to_test_generic.
+ ENDMETHOD.
ENDCLASS.
diff --git a/src/zcl_aw_tm_part_value.clas.xml b/src/zcl_aw_tm_part_value.clas.xml
index c5e369b..5935dcb 100644
--- a/src/zcl_aw_tm_part_value.clas.xml
+++ b/src/zcl_aw_tm_part_value.clas.xml
@@ -14,6 +14,13 @@
12
11
+
+
+ CONSTRUCTOR
+ E
+ CONSTRUCTOR
+
+