CustomSubclassResponsibilityCodeGeneratorTests.st
author Jakub Nesveda <jakubnesveda@seznam.cz>
Tue, 28 Oct 2014 09:39:46 +0100
changeset 711 605ab7fc9cd1
parent 688 6bd18ba5e56c
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:
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     1
"{ Package: 'jn:refactoring_custom' }"
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     2
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
     3
CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomSubclassResponsibilityCodeGeneratorTests
571
25a316ce0c9c extracted method methodForSuperclassSelector from class CustomSubclassResponsibilityCodeGenerator to CustomClassQuery
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 557
diff changeset
     4
	instanceVariableNames:'codeGenerator mockSuperClass mockClass builder'
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     5
	classVariableNames:''
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     6
	poolDictionaries:''
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     7
	category:'Interface-Refactoring-Custom-Tests'
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     8
!
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     9
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    10
!CustomSubclassResponsibilityCodeGeneratorTests methodsFor:'accessing'!
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    11
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    12
generatorOrRefactoring
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    13
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    14
    ^ CustomSubclassResponsibilityCodeGenerator new
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    15
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    16
    "Created: / 29-08-2014 / 21:41:14 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    17
! !
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    18
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    19
!CustomSubclassResponsibilityCodeGeneratorTests methodsFor:'initialization & release'!
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    20
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    21
setUp
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    22
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    23
    super setUp.
688
6bd18ba5e56c completed - rewriting code generators to replace CustomSourceCodeBuilder, but RBClass, RBMetaclass, RBNamespace and CodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 654
diff changeset
    24
    mockSuperClass := model createClassImmediate: 'MockSuperClassForTestCase' superClassName: 'Object'.
6bd18ba5e56c completed - rewriting code generators to replace CustomSourceCodeBuilder, but RBClass, RBMetaclass, RBNamespace and CodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 654
diff changeset
    25
    mockClass := model createClassImmediate: 'MockClassForTestCase' superClassName: (mockSuperClass new className).
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    26
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    27
    "Created: / 14-04-2014 / 17:16:28 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    28
    "Modified: / 29-08-2014 / 21:39:57 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    29
! !
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    30
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    31
!CustomSubclassResponsibilityCodeGeneratorTests methodsFor:'tests'!
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    32
546
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    33
test_none_subclass_responsibility
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    34
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    35
    context addSelectedClass: mockClass.
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    36
688
6bd18ba5e56c completed - rewriting code generators to replace CustomSourceCodeBuilder, but RBClass, RBMetaclass, RBNamespace and CodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 654
diff changeset
    37
    model createMethodImmediate: mockSuperClass protocol: 'instance-protocol' source: 'instanceMethod: aParam
546
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    38
    ^ self'.
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    39
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    40
    self assert: (mockClass includesSelector: #instanceMethod:) not. 
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    41
    self assert: (mockClass class includesSelector: #instanceMethod:) not.
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    42
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    43
    generatorOrRefactoring executeInContext: context.
546
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    44
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    45
    self assert: (mockClass includesSelector: #instanceMethod:) not.
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    46
    self assert: (mockClass class includesSelector: #instanceMethod:) not.
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    47
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    48
    "Created: / 13-05-2014 / 21:49:38 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    49
    "Modified: / 29-08-2014 / 21:40:53 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
546
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    50
!
7402ead9f354 fix error when nothing is generated
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 534
diff changeset
    51
527
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    52
test_subclass_responsibility_class_method
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    53
    | expectedSource |
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    54
527
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    55
    context addSelectedClass: mockClass.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    56
688
6bd18ba5e56c completed - rewriting code generators to replace CustomSourceCodeBuilder, but RBClass, RBMetaclass, RBNamespace and CodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 654
diff changeset
    57
    model createMethodImmediate: mockSuperClass class protocol: 'class-protocol' source: 'classMethod: aParam
527
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    58
    self subclassResponsibility'.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    59
527
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    60
    self assert: (mockClass includesSelector: #classMethod:) not.
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    61
    self assert: (mockClass class includesSelector: #classMethod:) not.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    62
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    63
    generatorOrRefactoring executeInContext: context.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    64
527
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    65
    self assert: (mockClass includesSelector: #classMethod:) not.
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    66
    self assert: (mockClass class includesSelector: #classMethod:). 
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    67
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    68
    expectedSource := 'classMethod:aParam
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    69
    self shouldImplement'.
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    70
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    71
    self assertMethodSource: expectedSource atSelector: #classMethod: forClass: mockClass class.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    72
527
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    73
    "Created: / 15-04-2014 / 22:05:19 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    74
    "Modified (format): / 29-08-2014 / 22:15:19 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    75
!
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    76
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    77
test_subclass_responsibility_instance_method
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    78
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    79
    |expectedSource|
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    80
527
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    81
    context addSelectedClass: mockClass.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    82
688
6bd18ba5e56c completed - rewriting code generators to replace CustomSourceCodeBuilder, but RBClass, RBMetaclass, RBNamespace and CodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 654
diff changeset
    83
    model createMethodImmediate: mockSuperClass protocol: 'instance-protocol' source: 'instanceMethod: aParam
527
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    84
    self subclassResponsibility'.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    85
527
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    86
    self assert: (mockClass includesSelector: #instanceMethod:) not. 
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    87
    self assert: (mockClass class includesSelector: #instanceMethod:) not.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    88
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    89
    generatorOrRefactoring executeInContext: context.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    90
527
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    91
    self assert: (mockClass includesSelector: #instanceMethod:).
76b08d1b692f Added code generator which generates method stubs for subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    92
    self assert: (mockClass class includesSelector: #instanceMethod:) not.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    93
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    94
    expectedSource := 'instanceMethod:aParam
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    95
    self shouldImplement'.
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    96
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
    97
    self assertMethodSource: expectedSource atSelector: #instanceMethod: forClass: mockClass.
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    98
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    99
    "Created: / 14-04-2014 / 18:10:52 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
654
39e40ece4ae9 all tests pass - instace-like formatter CustomSourceCodeFormatter and its two implementations
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 572
diff changeset
   100
    "Modified: / 29-08-2014 / 22:21:00 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
525
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   101
! !
06b14d49f485 work in progress - create code generator which generates stub methods for missing subclassResponsibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   102