Unit Testing Drivers - acaprojects/ruby-engine GitHub Wiki
Tests describe the behaviour of a driver and can be used to help with development. They are also useful in describing the intended usage of a driver.
See for example usage
- Extron DXP spec
- Denon BluRay spec
- ClearOne Converge spec
- Waits for login prompt before processing commands
- Panasonic Projector spec
- Waits for encryption key
- Injects password before transmitting data
Checking values
We use rspec-expectations for verifying status variables and command results returned expected values.
Running Tests
There is a rake task where you can specify the file containing the driver spec. Drivers themselves are resolved and loaded internally, as they would be in a running system.
rake module:test['../aca-device-modules/modules/extron/switcher/dxp_spec.rb']
Helper Functions
Helper | Arguments | Description |
---|---|---|
transmit / responds | string / hex string / byte array | emulates a device sending data to the module |
exec | function_name, *args | calls the function requested on the module with the arguments provided |
should_send | string / hex string / byte array | this is the data the driver is expected to send to the device |
result | provides access to the result of the last executed request | |
status | provides access to the current status of the driver | |
temporary_disconnect | emulates a connection drop followed by re-establishment | |
device_offline | emulates a connection drop where communications have failed to be re-established | |
device_online | emulates connection re-establishment. Should only be called after a device_offline |
|
wait_tick | times = 1 | resumes the test after the specified number of ticks through the event loop |
wait | milliseconds | resumes the test after waiting the specified amount of time |