.. _syntax: ============== Story Syntax ============== Introduction ============ A :term:`story` declaratively describes communication with the component being tested in terms of events being sent and received. Structurally, a :term:`story` consists of the following elements: name Uniquely identifies the :term:`story`. resources Things that are required to execute the :term:`story`. Resources include: * :term:`event` s or :term:`event` sources * :term:`filter` s * :term:`participant` s actions Things that happen when a :term:`story` is executed. Typical actions include * Sending :term:`event` s * Receiving :term:`event` s * Inspecting received :term:`event` s Grammar ======= .. productionlist:: story: "story" `name` : (`option`)* : (`idls` | `object` | `events` | `filter` | `action`)* : "end" idls: "idls" ":" `idlclass` : (`option`)* : end object: "object" `name` ":" `objectclass` : (`option`)* : "end" objectclass: `name` events: "events" `name` : (`event`)* : "end" event: "event" : `payload` : (`option`)* : "end" eventclass: `name` payload: "payload" ":" `type` : (`primitive` | `nested`) : "end" nested : `name` ":" `type` : (`primitive` | `nested`) : "end" primitive: `key` "=" `value` type: `name` filter: "filter" `name` ":" `filterclass` : (`option`)* : "end" filterclass: `name` action: "action" `name` ":" `actionclass` : (`option`)* : "end" actionclass: `name` option: `key` "=" `value` key: `name` value: (`string` | `number` | `range`) name: `string` uri: `string` path: `string`