@@ -234,6 +234,8 @@ MolComponentImplTest >> testForEventsRemoveProducer [
234234
235235 | component |
236236 component := MolCompleteComponentImpl start: #myComponentA .
237+ " initial state"
238+ self assert: (component eventsSubscribers at: MolUsedEvents ) equals: MolUtils defaultComponentName.
237239
238240 component forEvents: MolUsedEvents useAllProducers: #(#producerA #producerB #producerC) .
239241
@@ -247,7 +249,8 @@ MolComponentImplTest >> testForEventsRemoveProducer [
247249
248250 component forEvents: MolUsedEvents removeProducer: #producerC .
249251 self assert: component eventsSubscribers size equals: 1 .
250- self assert: (component eventsSubscribers at: MolUsedEvents ) equals: nil .
252+ " back to initial state"
253+ self assert: (component eventsSubscribers at: MolUsedEvents ) equals: MolUtils defaultComponentName.
251254]
252255
253256{ #category : #' tests - connecting - events producers' }
@@ -673,6 +676,37 @@ MolComponentImplTest >> testStart2 [
673676 self assert: component componentName equals: #compA .
674677]
675678
679+ { #category : #' tests - connecting - events producers' }
680+ MolComponentImplTest >> testStartAndStopComponentWithRemoveProducerSeveralTimes [
681+ " This test reproduce issue #246: Exception after several starts and stops of same component"
682+
683+ | compA compB |
684+ " start first implemention of a component contract"
685+ compA := MolCompleteComponentImpl start: #compA .
686+ compB := MolCompleteComponentImpl start: #compB .
687+
688+ " link compB to compA"
689+ compB forServices: MolUsedServices useProvider: #compA .
690+ compB forEvents: MolUsedEvents useProducer: #compA .
691+ compB getMolUsedEventsSubscriber subscribe: compB.
692+
693+ " call the service of the first component, it answer #service"
694+ self assert: compB getMolUsedServicesProvider service equals: #service .
695+
696+ " stop and start component several times"
697+ 1 to: 10 do: [ :i |
698+ compB forEvents: MolUsedEvents removeProducer: #compA .
699+ compB class stop: #compB .
700+ compB := MolCompleteComponentImpl start: #compB .
701+ compB forServices: MolUsedServices useProvider: #compA .
702+ compB forEvents: MolUsedEvents useProducer: #compA .
703+ compB getMolUsedEventsSubscriber subscribe: compB.
704+ self assert: compB getMolUsedServicesProvider service equals: #service .
705+ ].
706+
707+
708+ ]
709+
676710{ #category : #' tests - component creation' }
677711MolComponentImplTest >> testStartWithGeneratedName [
678712
0 commit comments