/
SpecObservableSlotTest.class.st
114 lines (83 loc) · 2.3 KB
/
SpecObservableSlotTest.class.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
Class {
#name : #SpecObservableSlotTest,
#superclass : #TestCase,
#instVars : [
'point'
],
#category : #'Spec-Tests-Observable'
}
{ #category : #running }
SpecObservableSlotTest >> setUp [
super setUp.
point := SpecObservablePoint new.
]
{ #category : #tests }
SpecObservableSlotTest >> testChangeInInstanceVariableRaisesEventOnlyOnce [
| count |
count := 0.
point property: #x whenChangedDo: [ count := count + 1 ].
point x: 17.
self assert: count equals: 1.
]
{ #category : #tests }
SpecObservableSlotTest >> testExplicitNotificationRaisesEventOnlyOnce [
| count |
count := 0.
point property: #x whenChangedDo: [ count := count + 1 ].
point notifyPropertyChanged: #x.
self assert: count equals: 1.
]
{ #category : #tests }
SpecObservableSlotTest >> testExplicitNotificationRaisesEventWithNewValue [
| newValue |
point x: 17.
point property: #x whenChangedDo: [ :new | newValue := new ].
point notifyPropertyChanged: #x.
self assert: newValue equals: 17.
]
{ #category : #tests }
SpecObservableSlotTest >> testExplicitNotifyUnexistentPropertyChangedRaisesError [
self
should: [ point notifyPropertyChanged: #z ]
raise: SlotNotFound
]
{ #category : #tests }
SpecObservableSlotTest >> testObservableSlotWorksAsNormalSlot [
point x: 17.
point y: 299.
self assert: point x equals: 17.
self assert: point y equals: 299.
]
{ #category : #tests }
SpecObservableSlotTest >> testSubscribeBlockWithoutParametersIsCalled [
| called |
called := false.
point property: #x whenChangedDo: [ called := true ].
point x: 17.
self assert: called.
]
{ #category : #tests }
SpecObservableSlotTest >> testSubscribeToChangeRaisesEventWithNewValue [
| newValue |
point property: #x whenChangedDo: [ :new | newValue := new ].
point x: 17.
self assert: newValue equals: 17.
]
{ #category : #tests }
SpecObservableSlotTest >> testSubscribeToExistentNonObservablePropertyRaisesError [
self
should: [
point
property: #y
whenChangedDo: [ self fail: 'This event shouldnt have been subscribed at all' ] ]
raise: SpecNonObservableSlotError
]
{ #category : #tests }
SpecObservableSlotTest >> testSubscribeToUnexistentPropertyRaisesError [
self
should: [
point
property: #z
whenChangedDo: [ self fail: 'This event shouldnt have been subscribed at all' ] ]
raise: SlotNotFound
]