author | Claus Gittinger <cg@exept.de> |
Tue, 08 May 2018 19:54:33 +0200 | |
changeset 1042 | 3b8c88c55251 |
parent 810 | ef323d10631d |
child 1121 | c5661215109c |
permissions | -rw-r--r-- |
12 | 1 |
"{ Package: 'stx:goodies/monticello/test' }" |
2 |
||
3 |
MCTestCase subclass:#MCMethodDefinitionTest |
|
4 |
instanceVariableNames:'navigation isModified' |
|
5 |
classVariableNames:'' |
|
6 |
poolDictionaries:'' |
|
810
ef323d10631d
Tests moved to category SCM-Monticello-Tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
12
diff
changeset
|
7 |
category:'SCM-Monticello-Tests' |
12 | 8 |
! |
9 |
||
10 |
||
11 |
!MCMethodDefinitionTest methodsFor:'mocks'! |
|
12 |
||
13 |
override ^ 1 |
|
14 |
! ! |
|
15 |
||
16 |
!MCMethodDefinitionTest methodsFor:'running'! |
|
17 |
||
18 |
ownPackage |
|
19 |
^ MCWorkingCopy forPackage: (MCPackage named: 'Monticello') |
|
20 |
! |
|
21 |
||
22 |
setUp |
|
23 |
navigation _ (Smalltalk hasClassNamed: #SystemNavigation) |
|
24 |
ifTrue: [(Smalltalk at: #SystemNavigation) new] |
|
25 |
ifFalse: [Smalltalk]. |
|
26 |
isModified _ self ownPackage modified. |
|
27 |
! |
|
28 |
||
29 |
tearDown |
|
30 |
self restoreMocks. |
|
31 |
(MCWorkingCopy forPackage: (MCPackage named: 'FooBarBaz')) unregister. |
|
32 |
self class compile: 'override ^ 1' classified: 'mocks'. |
|
33 |
self ownPackage modified: isModified |
|
34 |
! ! |
|
35 |
||
36 |
!MCMethodDefinitionTest methodsFor:'testing'! |
|
37 |
||
38 |
testCannotLoad |
|
39 |
| definition | |
|
40 |
definition _ self mockMethod: #kjahs87 class: 'NoSuchClass' source: 'kjahs87 ^self' meta: false. |
|
41 |
self should: [definition load] raise: Error. |
|
42 |
self assert: (navigation allImplementorsOf: #kjahs87) isEmpty |
|
43 |
! |
|
44 |
||
45 |
testComparison |
|
46 |
|d1 d2 d3 d4 d5 | |
|
47 |
d1 _ self mockMethod: #one class: 'A' source: '1' meta: false. |
|
48 |
d2 _ self mockMethod: #one class: 'A' source: '2' meta: false. |
|
49 |
d3 _ self mockMethod: #one class: 'A' source: '1' meta: true. |
|
50 |
d4 _ self mockMethod: #two class: 'A' source: '1' meta: false. |
|
51 |
d5 _ self mockMethod: #two class: 'A' source: '1' meta: false. |
|
52 |
||
53 |
self assert: (d1 isRevisionOf: d2). |
|
54 |
self deny: (d1 isSameRevisionAs: d2). |
|
55 |
||
56 |
self deny: (d1 isRevisionOf: d3). |
|
57 |
self deny: (d1 isRevisionOf: d4). |
|
58 |
||
59 |
self assert: (d4 isSameRevisionAs: d5). |
|
60 |
! |
|
61 |
||
62 |
testLoadAndUnload |
|
63 |
|definition| |
|
64 |
definition _ self mockMethod: #one class: 'MCMockClassA' source: 'one ^2' meta: false. |
|
65 |
self assert: self mockInstanceA one = 1. |
|
66 |
definition load. |
|
67 |
self assert: self mockInstanceA one = 2. |
|
68 |
definition unload. |
|
69 |
self deny: (self mockInstanceA respondsTo: #one) |
|
70 |
! |
|
71 |
||
72 |
testPartiallyRevertOverrideMethod |
|
73 |
| definition | |
|
74 |
self class compile: 'override ^ 2' classified: '*foobarbaz'. |
|
75 |
self class compile: 'override ^ 3' classified: self mockOverrideMethodCategory. |
|
76 |
self class compile: 'override ^ 4' classified: self mockOverrideMethodCategory. |
|
77 |
definition _ (MethodReference class: self class selector: #override) asMethodDefinition. |
|
78 |
self assert: definition isOverrideMethod. |
|
79 |
self assert: self override = 4. |
|
80 |
definition unload. |
|
81 |
self assert: self override = 2. |
|
82 |
self assert: (MethodReference class: self class selector: #override) category = '*foobarbaz'. |
|
83 |
||
84 |
! |
|
85 |
||
86 |
testRevertOldMethod |
|
87 |
| definition changeRecord | |
|
88 |
Object compile: 'yourself ^ self' classified: MCMockPackageInfo new methodCategoryPrefix. |
|
89 |
definition _ (MethodReference class: Object selector: #yourself) asMethodDefinition. |
|
90 |
changeRecord _ definition scanForPreviousVersion. |
|
91 |
self assert: changeRecord notNil. |
|
92 |
self assert: changeRecord category = 'accessing'. |
|
93 |
changeRecord fileIn. |
|
94 |
! |
|
95 |
||
96 |
testRevertOverrideMethod |
|
97 |
| definition | |
|
98 |
self class compile: 'override ^ 2' classified: self mockOverrideMethodCategory. |
|
99 |
definition _ (MethodReference class: self class selector: #override) asMethodDefinition. |
|
100 |
self assert: definition isOverrideMethod. |
|
101 |
self assert: self override = 2. |
|
102 |
definition unload. |
|
103 |
self assert: self override = 1. |
|
104 |
self assert: (MethodReference class: self class selector: #override) category = 'mocks'. |
|
105 |
||
106 |
! ! |
|
107 |
||
108 |
!MCMethodDefinitionTest class methodsFor:'documentation'! |
|
109 |
||
110 |
version |
|
810
ef323d10631d
Tests moved to category SCM-Monticello-Tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
12
diff
changeset
|
111 |
^ '$Header: /cvs/stx/stx/goodies/monticello/test/MCMethodDefinitionTest.st,v 1.2 2013-05-29 00:00:53 vrany Exp $' |
12 | 112 |
! ! |
810
ef323d10631d
Tests moved to category SCM-Monticello-Tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
12
diff
changeset
|
113 |