tests/PPContextMementoTest.st
changeset 377 6112a403a52d
child 421 7e08b31e0dae
equal deleted inserted replaced
376:a2656b27cace 377:6112a403a52d
       
     1 "{ Package: 'stx:goodies/petitparser/tests' }"
       
     2 
       
     3 TestCase subclass:#PPContextMementoTest
       
     4 	instanceVariableNames:'memento'
       
     5 	classVariableNames:''
       
     6 	poolDictionaries:''
       
     7 	category:'PetitTests-Tests'
       
     8 !
       
     9 
       
    10 !PPContextMementoTest methodsFor:'accessing'!
       
    11 
       
    12 memento
       
    13 	^ PPContextMemento new
       
    14 ! !
       
    15 
       
    16 !PPContextMementoTest methodsFor:'running'!
       
    17 
       
    18 setUp
       
    19 	memento := self memento.
       
    20 ! !
       
    21 
       
    22 !PPContextMementoTest methodsFor:'tests'!
       
    23 
       
    24 testEquality
       
    25 	| m1 m2  |
       
    26 	m1 := self memento.
       
    27 	m2 := self memento.
       
    28 	
       
    29 	self assert: m1 = m2.
       
    30 	
       
    31 	m1 propertyAt: #foo put: #bar.
       
    32 	self assert: (m1 = m2) not.
       
    33 	
       
    34 	m2 propertyAt: #foo put: #bar.
       
    35 	self assert: m1 = m2.
       
    36 !
       
    37 
       
    38 testEquality2
       
    39 	| m1 m2  |
       
    40 	m1 := self memento.
       
    41 	m2 := self memento.
       
    42 	
       
    43 	self assert: m1 = m2.
       
    44 	
       
    45 	m1 propertyAt: #foo put: #bar.
       
    46 	self assert: (m1 = m2) not.
       
    47 	
       
    48 	m2 propertyAt: #bar put: #foo.
       
    49 	self assert: (m1 = m2) not.
       
    50 !
       
    51 
       
    52 testGetProperty
       
    53 	
       
    54 	| c retval retval2 |
       
    55 	c := OrderedCollection new.
       
    56 	
       
    57 	memento propertyAt: #foo put: c.
       
    58 	
       
    59 	retval := memento propertyAt: #foo.
       
    60 	self assert: retval size = c size.
       
    61 	self assert: (retval == c) not.
       
    62 	self assert: retval = c.
       
    63 	
       
    64 	c add: #element.
       
    65 	self assert: (retval = c) not.
       
    66 
       
    67 	retval2 := memento propertyAt: #foo.
       
    68 	self assert: (retval = retval2).
       
    69 	self assert: (retval == retval2) not.
       
    70 	
       
    71 	retval add: #element.
       
    72 	self assert: (retval = retval2) not.
       
    73 !
       
    74 
       
    75 testKeysAndValuesDo
       
    76 	|   |
       
    77 	memento keysAndValuesDo: [ :key :value |
       
    78 		self signalFailure: 'Should not be called'
       
    79 	].
       
    80 !
       
    81 
       
    82 testKeysAndValuesDo2
       
    83 	| c1 c2   |
       
    84 	c1 := OrderedCollection new.
       
    85 	c2 := OrderedCollection new.
       
    86 
       
    87 	memento propertyAt: #foo put: c1.
       
    88 	memento propertyAt: #bar put: c2.
       
    89 
       
    90 	memento keysAndValuesDo: [ :key :value |
       
    91 		self assert: (value == c1) not.
       
    92 		self assert: (value == c2) not.
       
    93 	].
       
    94 !
       
    95 
       
    96 testPutProperty
       
    97 	| c retval  |
       
    98 	c := OrderedCollection new.
       
    99 	self assert: (memento hasProperty: #foo) not.
       
   100 	self assert: (memento hasProperty: #bar) not.	
       
   101 	
       
   102 	self should: [ memento propertyAt: #foo ] raise: Error.
       
   103 	self assert: (memento propertyAt: #foo ifAbsent: [ c ]) == c.
       
   104 	
       
   105 	retval := memento propertyAt: #foo ifAbsentPut: [ c ].
       
   106 	self assert: retval size = c size.	
       
   107 	self assert: (retval == c) not.
       
   108 	self assert: retval = c.
       
   109 	self assert: (memento hasProperty: #foo).
       
   110 	
       
   111 	retval := memento propertyAt: #bar put: c.
       
   112 	self assert: retval size = c size.	
       
   113 	self assert: (retval == c) not.
       
   114 	self assert: retval = c.
       
   115 	self assert: (memento hasProperty: #foo).	
       
   116 ! !
       
   117