Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Dynamic object model based on Prevayler (used from Swiki). Used as a model and persistence layer in Swiki

testPrevalence
| b n i is c k s system j |
self assert: SwikiShelf allInstances size > 0.
b _ SwikiShelf allInstances first books detect:[:book|book name = 'refs'] ifNone: [].
self assert: b notNil.
self assert: (b prevayler base fileExists: 'prevayler.1.snapshot').
b objects removeEntities.
self assert: b objects entities keys size = 0.
self assert: (b prevayler base fileExists: 'prevayler.1.clog').
b shutDown.
self assert: (b prevayler base fileExists: 'prevayler.2.snapshot').
is _ Set new.
j _ 0.
(n _ self newEntities) do: [:entity |
b objects addEntity: entity.
3 timesRepeat: [i _ b objects entityNewInstance: entity name.
self setAttributes: i book: b.
self assert: (b objects entity: entity name instance: i name) = i.
(j _ j + 1) odd ifTrue: [is add: i]]].
self assert: (b objects entities difference: n) size = 0.
b takeSnapshot.
self assert: (b prevayler base fileExists: 'prevayler.3.snapshot').
is do: [:o |self assert: (b objects instance: o name) notNil.
self assert: (b objects entity: o type name instance: o name) = o.
b objects entity: o type name removeInstance: o name.
self assert: (b objects instance: o name) isNil].
b takeSnapshot.
self assert: (b prevayler base fileExists: 'prevayler.4.snapshot').
c _ (b objects entities keys size / 2) asInteger.
c timesRepeat: [k _ b objects entities keys anyOne.
self assert: (b objects entity: k) notNil.
b objects removeEntity: k.
self assert: (b objects entity: k) isNil].
b takeSnapshot.
self assert: (b prevayler base fileExists: 'prevayler.5.snapshot').
k _ b objects entities keys anyOne.
self assert: (b objects entity: k) notNil.
b objects entityRemoveInstances: k.
self assert: (b objects entity: k) instances size = 0.
b takeSnapshot.
self assert: (b prevayler base fileExists: 'prevayler.6.snapshot').
system _ Dictionary new.
s _ SwikiPrevayler on: system dir: b objects prevayler baseDirectory pathName.
self assert: (s proxy entities difference: b objects entities) size = 0.
b shutDown

SUnit testing Prevayler

Code Generation

Various Smalltalk (Squeak, VisualWorks) translators to another language (via templates defined in Swiki). It was used to reverse engineer a very large application made in Smalltalk, displaying the generated code as UML

...