 * Here we specify ${fitLibrary} by example, using ${fitLibrary} tables
 * The following assumes considerable familiarity with the ideas of ${fitLibrary}
 * This is '''not''' intended as a tutorial. See .FitLibrary.UserGuide for that.

|^ReadingSpecifications|''The format of the storytests/specifications''|

!3 ''Storytests for specifying:''

|^DoWorkflow|''A sequence of actions on a system, starting in some state (!-DoFixture-!)''|
|^SpecialActions|''Special actions are modifiers of actions, such as "is", "check", "show" and "show after"''|
|^GlobalActionsProvided|''Various actions are built into !-FitLibrary-!, such as "start stopwatch"''|
|^AutoWrapWithDo|''A non-fixture object created in the first table with be auto-wrapped with !-DoFixture-!''|
|>MultipleFlowObjects|''More than one flow object can be current at once.''|
|^GoingIntoFlow|''Using !-FitLibraryServer-!, it's not necessary for the first table to have a !-DoFixture-! table in order to be in flow''|
|^PlainTextInsteadOfTables|''Flow actions can be written in plain text, instead of in tables''|
|^DoTableFixturing|''Specialised fixturing, such as "setUp()/tearDown()", parse delegates, access to current row, custom special actions''|
|^AddingGlobalActionsObject|''How an object with global methods can be added''|

|^CollectionSpecifications|''Various collections of elements, such as lists, sets, maps, arrays, etc (both checking and setup)''|
|^BusinessRules|''Calculation rules, constraints, and combinations''|
|^DomainObject|''The property values of ${domainObject}s (both checking and setup)''|
|^DomainAggregate|''The aggregate structure of ${domainObject}s''|

|^DomainWorkflow|''As with ^DoWorkflow, but with support for three phases of ${workflow}'': ${setup}, ${actions} and ${checks}|
|^SpecialisedTables|''Grids of values, images, HTML lists, file comparisons, etc''|
|[[File Handler][.FitLibrary.SpecifiCations.GlobalActionsProvided.FileProcessing]]|''Provides a way to read and write files in a storytest''|

|^SuiteFixture|''How the same suite of storytests can be used to test a system in very different ways''|

|^DynamicVariables|''How variables can be used in storytests at runtime''|
|^DefinedActions|''Parameterised actions can be defined within storytests''|
|^DefinedActionsWithNamedParameters|''(Multi Defined Actions) Parameterised actions with optional named parameters''|

|^ParserSpecifications|''How values are parsed from strings and embedded tables into valus and objects''|
|^FitLibraryGeneric|''Support for Java generics and enums''|
|>PlugInMethods|''Various plugin methods that may be used, including for object creation''|
|^TechnicalSpecifications|''Detailed specifications that are more likely to be of interest to those who port ${fitLibrary} to other languages''|
|^JavaSpecific|''Details that are specific to Java and may not be implemented in other languages''|
|^AlienEvaluator|''How ${fitLibrary} inter-operates with ${fit}''|
|^ExperiMental|''Some experimental features that may well be dropped''|

|^CoreFitSpecifications|''Specifications for the Java version of Fit''|
|>ZiEndFolderRunner|''Checks that ''!-FolderRunner-!'' is working ok''|

Contents in alphabetical order:
|!contents|
