!|import           |
|fitnesse.slim.test|

The fixture chaining with instances allows you to store an object instance in a Slim symbol and to use the instance as the table actor for an arbitrary Slim table.
Here createTestSlimWithString(string) is a factory method that creates a new !-TestSlim-! instance, sets the given string and returns the object.

see SlimSymbolCanHoldInstanceUsedAsParameter

!|script             |test slim                         |
|$TEST_SLIM_INSTANCE=|create test slim with string|Uncle|
|start               |$TEST_SLIM_INSTANCE               |
|check               |get string arg              |Uncle|

We can use it for a decision table.

|$TEST_SLIM_INSTANCE|
|get string arg?    |
|Uncle              |

The !-SlimHelperLibrary-! is a class that is automatically available as a library fixture. It contains methods to get and set the script table actor in the Slim !-StatementExecutor-!.

 * getFixture() returns the current table actor
 * pushFixture() gets the current table actor and pushes it onto a stack
 * popFixture() pops the actor from the stack and sets it in the !-StatementExecutor-!

The pushFixture() and popFixture() methods can be used to have scenarios that change the current actor, but restore it at the end of the scenario.
So a scenario can behave more like a sub routine with local scope (but is not limited to it).

!|scenario       |do something with|name|and restore old fixture|
|push fixture                                                   |
|start           |test slim                                     |
|set string      |@name                                         |
|check           |get fixture      |TestSlim: 0, @name          |
|check           |get string arg   |@name                       |
|$@name_INSTANCE=|get fixture                                   |
|pop fixture                                                    |

!|script          |test slim     |2                      |
|set string       |Uncle                                 |
|check            |get fixture   |TestSlim: 2, Uncle     |
|do something with|Bob           |and restore old fixture|
|check            |get string arg|Uncle                  |

!|script|$Bob_INSTANCE     |
|check  |get string arg|Bob|
