ShapeChanger enables you to read class shape changed instances. It supports renamed, removed and newly added instance variables.

Basic ShapeChanger:

To define a new ShapeChanger, you should subclass base StompShapeChanger and override two methods.

StompShapeChanger >> loadAdditions

StompShapeChanger >> loadInstVarAt: varIndex named: varName put: varValue 

 Override the method for setting newly introduced field values to the shape changed instance. 

 Override the method for setting renamed fields to the shape changed instance.

To register a ShapeChanger, you can:

Object fromStomp: bytes setting: [:context |

    context registerShapeChanger: YourShapeChanger for: YourShapeChangedClass  ].

There is a StompMockShapeChanger in StompTest-Core package. Please see the running example.

Block ShapeChanger:

StOMP also supports BlockShapeChanger. You can register shape change procedures without subclassing StompShapeChanger.

Object fromStomp: bytes setting: [:context |

   context registerShapeChangerRenameBy: [:target :oldName :value |          oldName = 'instVar2OLD' ifTrue: [target instVar2: value].     ] initializeBy: [:target |          target instVar5: 'FIVE'     ] for: YourShapeChangedClass  ].