Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
hekate:heart_overview [2009/08/14 15:19] gjn |
hekate:heart_overview [2019/06/27 15:49] (current) |
===== HeaRT Architecture ===== | ===== HeaRT Architecture ===== |
| |
{{heart-arch-en.jpg|HeaRT Architecture}} | {{heart-arch-en.jpg?400|HeaRT Architecture}} |
| |
| |
| |
To download or check examples of using these libraries check [[HeaRT HowTo]]. | To download or check examples of using these libraries check [[HeaRT HowTo]]. |
| ===== Automatic Tests ===== |
| A simple mechanism for testing HeaRT was implemented. It is a bash script called //test.sh// located in //tests// directory. (It can be downloaded also from here: {{:hekate:test.txt|test.sh}}) The script takes as a parameter a name of the file with testing data, and produces information about errors on the screen. More detailed information are stored in //log.txt// file automatically created by the script. |
| |
| Example use of the script looks as follow:<code>./test.sh thermostat_test.pl</code> |
| Example output with no errors:<code>Testing thermostat_test.pl |
| 0 |
| OK |
| </code> |
| |
| Example output with errors:<code>Testting thermostat_test.pl |
| 1 |
| There was errors! |
| ERROR: Produced state is different that expected, for states init4 and eval4 |
| ERROR: Produced: [[day, wed], [hour, 3], [month, 7], [today, workday], [season, summer], [operation, nbizhrs], [thermostat_settings, 27]] |
| ERROR: Expected: [[day, mon], [hour, 3], [month, 7], [season, summer], [operation, nbizhrs], [today, workday], [thermostat_settings, 27]] |
| </code> |
| |
| |
| The log file contains the full trajectory of the system (see {{:hekate:log.txt|example logfile}}). |
| |
| ==== How to create a test file === |
| - A test file is a HMR file prepared for testing script. |
| - A HMR file that should be a test file has to have two following lines at the begining of the file:<code>:- ensure_loaded('../heart.pl'). |
| :- ensure_loaded('test-predicates.pl').</code> The test-predicates file can be downloaded from here: {{:hekate:test-predicates.pl|}} |
| - Special sets of states have to be added to the file. The state that is an input file have to be called **initX**, where X is some number. The state that describes the expected output should be called **evalX**, where X is a number that binds **init** state with **eval** state. Example of the testing states are shown below: |
| <code> |
| xstat init2: [day, 1]. |
| xstat init2: [hour, 12]. |
| xstat init2: [month, 4]. |
| |
| xstat eval2: [day, 1]. |
| xstat eval2: [hour, 12]. |
| xstat eval2: [month, 4]. |
| xstat eval2: [season, spring]. |
| xstat eval2: [operation, bizhrs]. |
| xstat eval2: [today,workday]. |
| xstat eval2: [thermostat_settings, 20]. |
| </code> It means that for the input state init2, we expect output state eval2. |
| |
| |