CustomLazyInitializationAccessMethodsCodeGeneratorTests.st
author Jakub Nesveda <jakubnesveda@seznam.cz>
Tue, 28 Oct 2014 09:39:46 +0100
changeset 711 605ab7fc9cd1
parent 634 d77d9a7561be
child 734 f8b10fc1ab0e
permissions -rw-r--r--
return whole source code when selected interval is empty retrieve selector from method when none selector is specified
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
607
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     1
"{ Package: 'jn:refactoring_custom' }"
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     2
634
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 608
diff changeset
     3
CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomLazyInitializationAccessMethodsCodeGeneratorTests
607
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     4
	instanceVariableNames:''
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     5
	classVariableNames:''
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     6
	poolDictionaries:''
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     7
	category:'Interface-Refactoring-Custom-Tests'
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     8
!
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     9
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    10
!CustomLazyInitializationAccessMethodsCodeGeneratorTests methodsFor:'accessing'!
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    11
634
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 608
diff changeset
    12
generatorOrRefactoring
607
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    13
    ^ CustomLazyInitializationAccessMethodsCodeGenerator new
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    14
! !
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    15
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    16
!CustomLazyInitializationAccessMethodsCodeGeneratorTests methodsFor:'tests'!
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    17
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    18
test_lazy_initialization_access_methods_generated_with_comments
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    19
    | expectedGetterSource expectedSetterSource expectedDefaultSource |
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    20
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    21
    userPreferences
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    22
        generateCommentsForGetters: true;
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    23
        generateCommentsForSetters: true.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    24
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    25
    expectedGetterSource := 'instanceVariable
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    26
    "return the instance instance variable ''instanceVariable'' with lazy instance creation (automatically generated)"
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    27
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    28
    instanceVariable isNil ifTrue:[
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    29
        instanceVariable := self class defaultInstanceVariable.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    30
    ].
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    31
    ^ instanceVariable'.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    32
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    33
    expectedSetterSource := 'instanceVariable:something 
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    34
    "set the value of the instance variable ''instanceVariable'' and send a change notification (automatically generated)"
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    35
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    36
    (instanceVariable ~~ something) ifTrue:[
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    37
        instanceVariable := something.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    38
        self changed:#instanceVariable.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    39
    ].'.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    40
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    41
    expectedDefaultSource := 'defaultInstanceVariable
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    42
    "default value for the ''instanceVariable'' instance variable (automatically generated)"
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    43
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    44
    self shouldImplement.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    45
    ^ nil'.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    46
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    47
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    48
    self executeGeneratorInContext: #classWithInstanceVariable.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    49
    self assertMethodSource: expectedGetterSource atSelector: #instanceVariable.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    50
    self assertMethodSource: expectedSetterSource atSelector: #instanceVariable:.
608
3b9924334c02 rename assertMetaclassMethodSource: to assertClassMethodSource:
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 607
diff changeset
    51
    self assertClassMethodSource: expectedDefaultSource atSelector: #defaultInstanceVariable
607
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    52
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    53
    "Created: / 08-07-2014 / 18:43:29 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
608
3b9924334c02 rename assertMetaclassMethodSource: to assertClassMethodSource:
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 607
diff changeset
    54
    "Modified: / 11-07-2014 / 20:11:40 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
607
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    55
!
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    56
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    57
test_lazy_initialization_access_methods_generated_without_comments
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    58
    | expectedGetterSource expectedSetterSource expectedDefaultSource |
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    59
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    60
    userPreferences
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    61
        generateCommentsForGetters: false;
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    62
        generateCommentsForSetters: false.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    63
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    64
    expectedGetterSource := 'instanceVariable
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    65
    instanceVariable isNil ifTrue:[
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    66
        instanceVariable := self class defaultInstanceVariable.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    67
    ].
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    68
    ^ instanceVariable'.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    69
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    70
    expectedSetterSource := 'instanceVariable:something 
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    71
    (instanceVariable ~~ something) ifTrue:[
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    72
        instanceVariable := something.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    73
        self changed:#instanceVariable.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    74
    ].'.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    75
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    76
    expectedDefaultSource := 'defaultInstanceVariable
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    77
    self shouldImplement.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    78
    ^ nil'.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    79
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    80
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    81
    self executeGeneratorInContext: #classWithInstanceVariable.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    82
    self assertMethodSource: expectedGetterSource atSelector: #instanceVariable.
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    83
    self assertMethodSource: expectedSetterSource atSelector: #instanceVariable:.
608
3b9924334c02 rename assertMetaclassMethodSource: to assertClassMethodSource:
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 607
diff changeset
    84
    self assertClassMethodSource: expectedDefaultSource atSelector: #defaultInstanceVariable
607
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    85
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    86
    "Created: / 08-07-2014 / 19:37:40 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
608
3b9924334c02 rename assertMetaclassMethodSource: to assertClassMethodSource:
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 607
diff changeset
    87
    "Modified: / 11-07-2014 / 20:11:48 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
607
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    88
! !
cd20b3875a9b add access generator with lazy initialization in getter
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    89