trigger_switch_d 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +74 -57
- data/bin/ts_setup +68 -0
- data/bin/{teach → ts_teach} +1 -1
- data/bin/{turn_off → ts_turn_off} +1 -1
- data/bin/{turn_on → ts_turn_on} +1 -1
- data/bin/tsd +1 -1
- data/config/environment.rb.sample +42 -0
- data/config/lookup.dsl +7 -0
- data/lib/tellstick/code_converter.rb +56 -0
- data/lib/tellstick/protocol/nexa.rb +25 -10
- data/lib/tellstick/protocol/not_connected.rb +6 -14
- data/lib/tellstick/protocol/null_protocol.rb +6 -14
- data/lib/tellstick/protocol/proove.rb +60 -35
- data/lib/tellstick/protocol/protocol_loader.rb +2 -3
- data/lib/tellstick/protocol/rising_sun.rb +8 -4
- data/lib/tellstick/proxy_io.rb +32 -14
- data/lib/tellstick/tellstick.rb +4 -12
- data/lib/trigger_switch_d/action.rb +54 -19
- data/lib/trigger_switch_d/application.rb +77 -34
- data/lib/trigger_switch_d/config.rb +85 -35
- data/lib/trigger_switch_d/daylight.rb +135 -52
- data/lib/trigger_switch_d/ipc.rb +44 -12
- data/lib/trigger_switch_d/schedule.rb +20 -13
- data/lib/trigger_switch_d/switch.rb +6 -0
- data/lib/trigger_switch_d/trigger_switch_d_helper.rb +14 -13
- data/samples/devices +14 -0
- data/samples/devices.rising_sun +6 -0
- data/samples/environment.rb +44 -0
- data/samples/lookup.dsl +7 -0
- data/samples/scheduled_actions +6 -0
- data/samples/scheduled_actions.rising_sun +4 -0
- metadata +41 -116
- data/doc/classes/Tellstick/Tellstick.html +0 -117
- data/doc/classes/Tellstick/TellstickIO.html +0 -265
- data/doc/classes/Tellstick/TellstickIO.src/M000020.html +0 -18
- data/doc/classes/Tellstick/TellstickIO.src/M000021.html +0 -20
- data/doc/classes/Tellstick/TellstickIO.src/M000022.html +0 -26
- data/doc/classes/Tellstick/TellstickIO.src/M000023.html +0 -19
- data/doc/classes/Tellstick/TellstickIO.src/M000024.html +0 -26
- data/doc/classes/Tellstick/TellstickIO.src/M000025.html +0 -16
- data/doc/classes/Tellstick/TellstickIO.src/M000026.html +0 -16
- data/doc/classes/Tellstick/TellstickIO.src/M000027.html +0 -24
- data/doc/classes/Tellstick.html +0 -204
- data/doc/classes/Tellstick.src/M000019.html +0 -25
- data/doc/classes/TriggerSwitchD/Action.html +0 -165
- data/doc/classes/TriggerSwitchD/Action.src/M000015.html +0 -28
- data/doc/classes/TriggerSwitchD/Action.src/M000016.html +0 -18
- data/doc/classes/TriggerSwitchD/Application.html +0 -203
- data/doc/classes/TriggerSwitchD/Application.src/M000017.html +0 -21
- data/doc/classes/TriggerSwitchD/Application.src/M000018.html +0 -40
- data/doc/classes/TriggerSwitchD/ConfigFactory/Config.html +0 -127
- data/doc/classes/TriggerSwitchD/ConfigFactory/Config.src/M000014.html +0 -23
- data/doc/classes/TriggerSwitchD/ConfigFactory.html +0 -141
- data/doc/classes/TriggerSwitchD/ConfigFactory.src/M000013.html +0 -24
- data/doc/classes/TriggerSwitchD/IPC.html +0 -134
- data/doc/classes/TriggerSwitchD/IPC.src/M000012.html +0 -32
- data/doc/classes/TriggerSwitchD/Schedule/InstanceMethods.html +0 -242
- data/doc/classes/TriggerSwitchD/Schedule/InstanceMethods.src/M000005.html +0 -19
- data/doc/classes/TriggerSwitchD/Schedule/InstanceMethods.src/M000006.html +0 -18
- data/doc/classes/TriggerSwitchD/Schedule/InstanceMethods.src/M000007.html +0 -23
- data/doc/classes/TriggerSwitchD/Schedule/InstanceMethods.src/M000008.html +0 -19
- data/doc/classes/TriggerSwitchD/Schedule/InstanceMethods.src/M000009.html +0 -19
- data/doc/classes/TriggerSwitchD/Schedule/InstanceMethods.src/M000010.html +0 -18
- data/doc/classes/TriggerSwitchD/Schedule/InstanceMethods.src/M000011.html +0 -18
- data/doc/classes/TriggerSwitchD/Schedule.html +0 -147
- data/doc/classes/TriggerSwitchD/Schedule.src/M000004.html +0 -19
- data/doc/classes/TriggerSwitchD/SwitchFactory.html +0 -135
- data/doc/classes/TriggerSwitchD/SwitchFactory.src/M000003.html +0 -20
- data/doc/classes/TriggerSwitchD.html +0 -212
- data/doc/classes/TriggerSwitchD.src/M000001.html +0 -22
- data/doc/classes/TriggerSwitchD.src/M000002.html +0 -27
- data/doc/created.rid +0 -1
- data/doc/files/lib/tellstick/protocol/nexa_rb.html +0 -126
- data/doc/files/lib/tellstick/protocol/not_connected_rb.html +0 -126
- data/doc/files/lib/tellstick/protocol/null_protocol_rb.html +0 -126
- data/doc/files/lib/tellstick/protocol/plain_text_rb.html +0 -126
- data/doc/files/lib/tellstick/protocol/proove_rb.html +0 -126
- data/doc/files/lib/tellstick/protocol/protocol_loader_rb.html +0 -126
- data/doc/files/lib/tellstick/protocol/rising_sun_rb.html +0 -126
- data/doc/files/lib/tellstick/protocol/waveman_rb.html +0 -126
- data/doc/files/lib/tellstick/tellstick_io_rb.html +0 -135
- data/doc/files/lib/tellstick/tellstick_rb.html +0 -135
- data/doc/files/lib/tellstick_rb.html +0 -134
- data/doc/files/lib/trigger_switch_d/action_rb.html +0 -126
- data/doc/files/lib/trigger_switch_d/application_rb.html +0 -136
- data/doc/files/lib/trigger_switch_d/config_rb.html +0 -126
- data/doc/files/lib/trigger_switch_d/daylight_rb.html +0 -126
- data/doc/files/lib/trigger_switch_d/ipc_rb.html +0 -126
- data/doc/files/lib/trigger_switch_d/schedule_rb.html +0 -126
- data/doc/files/lib/trigger_switch_d/switch_rb.html +0 -126
- data/doc/files/lib/trigger_switch_d/trigger_switch_d_helper_rb.html +0 -126
- data/doc/files/lib/trigger_switch_d_rb.html +0 -140
- data/doc/fr_class_index.html +0 -38
- data/doc/fr_file_index.html +0 -46
- data/doc/fr_method_index.html +0 -53
- data/doc/index.html +0 -24
- data/features/execute_schedule.feature +0 -20
- data/features/group_aliases.feature +0 -31
- data/features/handle_switches.feature +0 -36
- data/features/listen_for_client_call.feature +0 -23
- data/features/persistent_schedule.feature +0 -70
- data/features/proove_protocol.feature +0 -20
- data/features/schedule.feature +0 -25
- data/features/simple_string_protocol.feature +0 -35
- data/features/step_definitions/execute_schedule_steps.rb +0 -16
- data/features/step_definitions/group_aliases_steps.rb +0 -24
- data/features/step_definitions/handle_switches_steps.rb +0 -21
- data/features/step_definitions/listen_for_client_call_steps.rb +0 -34
- data/features/step_definitions/persistent_schedule_steps.rb +0 -18
- data/features/step_definitions/proove_protocol_steps.rb +0 -3
- data/features/step_definitions/schedule_steps.rb +0 -9
- data/features/step_definitions/shared_steps.rb +0 -75
- data/features/step_definitions/simple_string_protocol_steps.rb +0 -3
- data/features/step_definitions/sunrise_steps.rb +0 -22
- data/features/step_definitions/tellstick_connected_steps.rb +0 -21
- data/features/sunrise.feature +0 -22
- data/features/sunset.feature +0 -22
- data/features/support/action_helpers.rb +0 -10
- data/features/support/env.rb +0 -7
- data/features/support/listen_for_client_call_helper.rb +0 -71
- data/features/support/proove_helpers.rb +0 -6
- data/features/support/sunrise_helper.rb +0 -8
- data/features/tellstick_connected.feature +0 -14
- data/spec/spec_helper.rb +0 -22
- data/spec/tellstick/protocol/nexa_spec.rb +0 -57
- data/spec/tellstick/protocol/proove_spec.rb +0 -61
- data/spec/tellstick/protocol/rising_sun_spec.rb +0 -56
- data/spec/tellstick/protocol/waveman_spec.rb +0 -57
- data/spec/tellstick/proxy_io_spec.rb +0 -34
- data/spec/tellstick/tellstick_spec.rb +0 -86
- data/spec/trigger_switch_d/application_spec.rb +0 -147
- data/spec/trigger_switch_d/config_spec.rb +0 -154
- data/spec/trigger_switch_d/daylight_spec.rb +0 -39
- data/spec/trigger_switch_d/ipc_spec.rb +0 -119
- data/spec/trigger_switch_d/schedule_spec.rb +0 -103
- data/spec/trigger_switch_d/trigger_switch_d_spec_helpers.rb +0 -24
- data/trigger_switch_d.gemspec +0 -43
data/doc/fr_file_index.html
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
|
2
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
3
|
-
<!DOCTYPE html
|
4
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
5
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
6
|
-
|
7
|
-
<!--
|
8
|
-
|
9
|
-
Files
|
10
|
-
|
11
|
-
-->
|
12
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
13
|
-
<head>
|
14
|
-
<title>Files</title>
|
15
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
16
|
-
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
17
|
-
<base target="docwin" />
|
18
|
-
</head>
|
19
|
-
<body>
|
20
|
-
<div id="index">
|
21
|
-
<h1 class="section-bar">Files</h1>
|
22
|
-
<div id="index-entries">
|
23
|
-
<a href="files/lib/tellstick_rb.html">lib/tellstick.rb</a><br />
|
24
|
-
<a href="files/lib/tellstick/protocol/nexa_rb.html">lib/tellstick/protocol/nexa.rb</a><br />
|
25
|
-
<a href="files/lib/tellstick/protocol/not_connected_rb.html">lib/tellstick/protocol/not_connected.rb</a><br />
|
26
|
-
<a href="files/lib/tellstick/protocol/null_protocol_rb.html">lib/tellstick/protocol/null_protocol.rb</a><br />
|
27
|
-
<a href="files/lib/tellstick/protocol/plain_text_rb.html">lib/tellstick/protocol/plain_text.rb</a><br />
|
28
|
-
<a href="files/lib/tellstick/protocol/proove_rb.html">lib/tellstick/protocol/proove.rb</a><br />
|
29
|
-
<a href="files/lib/tellstick/protocol/protocol_loader_rb.html">lib/tellstick/protocol/protocol_loader.rb</a><br />
|
30
|
-
<a href="files/lib/tellstick/protocol/rising_sun_rb.html">lib/tellstick/protocol/rising_sun.rb</a><br />
|
31
|
-
<a href="files/lib/tellstick/protocol/waveman_rb.html">lib/tellstick/protocol/waveman.rb</a><br />
|
32
|
-
<a href="files/lib/tellstick/tellstick_rb.html">lib/tellstick/tellstick.rb</a><br />
|
33
|
-
<a href="files/lib/tellstick/tellstick_io_rb.html">lib/tellstick/tellstick_io.rb</a><br />
|
34
|
-
<a href="files/lib/trigger_switch_d_rb.html">lib/trigger_switch_d.rb</a><br />
|
35
|
-
<a href="files/lib/trigger_switch_d/action_rb.html">lib/trigger_switch_d/action.rb</a><br />
|
36
|
-
<a href="files/lib/trigger_switch_d/application_rb.html">lib/trigger_switch_d/application.rb</a><br />
|
37
|
-
<a href="files/lib/trigger_switch_d/config_rb.html">lib/trigger_switch_d/config.rb</a><br />
|
38
|
-
<a href="files/lib/trigger_switch_d/daylight_rb.html">lib/trigger_switch_d/daylight.rb</a><br />
|
39
|
-
<a href="files/lib/trigger_switch_d/ipc_rb.html">lib/trigger_switch_d/ipc.rb</a><br />
|
40
|
-
<a href="files/lib/trigger_switch_d/schedule_rb.html">lib/trigger_switch_d/schedule.rb</a><br />
|
41
|
-
<a href="files/lib/trigger_switch_d/switch_rb.html">lib/trigger_switch_d/switch.rb</a><br />
|
42
|
-
<a href="files/lib/trigger_switch_d/trigger_switch_d_helper_rb.html">lib/trigger_switch_d/trigger_switch_d_helper.rb</a><br />
|
43
|
-
</div>
|
44
|
-
</div>
|
45
|
-
</body>
|
46
|
-
</html>
|
data/doc/fr_method_index.html
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
|
2
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
3
|
-
<!DOCTYPE html
|
4
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
5
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
6
|
-
|
7
|
-
<!--
|
8
|
-
|
9
|
-
Methods
|
10
|
-
|
11
|
-
-->
|
12
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
13
|
-
<head>
|
14
|
-
<title>Methods</title>
|
15
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
16
|
-
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
17
|
-
<base target="docwin" />
|
18
|
-
</head>
|
19
|
-
<body>
|
20
|
-
<div id="index">
|
21
|
-
<h1 class="section-bar">Methods</h1>
|
22
|
-
<div id="index-entries">
|
23
|
-
<a href="classes/TriggerSwitchD/Schedule/InstanceMethods.html#M000011">by_name (TriggerSwitchD::Schedule::InstanceMethods)</a><br />
|
24
|
-
<a href="classes/Tellstick/TellstickIO.html#M000023">close (Tellstick::TellstickIO)</a><br />
|
25
|
-
<a href="classes/Tellstick/TellstickIO.html#M000027">connected? (Tellstick::TellstickIO)</a><br />
|
26
|
-
<a href="classes/TriggerSwitchD/Schedule.html#M000004">create (TriggerSwitchD::Schedule)</a><br />
|
27
|
-
<a href="classes/Tellstick.html#M000019">create (Tellstick)</a><br />
|
28
|
-
<a href="classes/TriggerSwitchD/IPC.html#M000012">create (TriggerSwitchD::IPC)</a><br />
|
29
|
-
<a href="classes/TriggerSwitchD/Schedule/InstanceMethods.html#M000010">cronological (TriggerSwitchD::Schedule::InstanceMethods)</a><br />
|
30
|
-
<a href="classes/TriggerSwitchD/Schedule/InstanceMethods.html#M000008">delete (TriggerSwitchD::Schedule::InstanceMethods)</a><br />
|
31
|
-
<a href="classes/TriggerSwitchD/ConfigFactory/Config.html#M000014">environment (TriggerSwitchD::ConfigFactory::Config)</a><br />
|
32
|
-
<a href="classes/TriggerSwitchD/Schedule/InstanceMethods.html#M000009">execute (TriggerSwitchD::Schedule::InstanceMethods)</a><br />
|
33
|
-
<a href="classes/TriggerSwitchD/Schedule/InstanceMethods.html#M000006">find (TriggerSwitchD::Schedule::InstanceMethods)</a><br />
|
34
|
-
<a href="classes/Tellstick/TellstickIO.html#M000026">gets (Tellstick::TellstickIO)</a><br />
|
35
|
-
<a href="classes/Tellstick/TellstickIO.html#M000022">gets (Tellstick::TellstickIO)</a><br />
|
36
|
-
<a href="classes/TriggerSwitchD.html#M000002">load_devices (TriggerSwitchD)</a><br />
|
37
|
-
<a href="classes/TriggerSwitchD.html#M000001">load_scheduled_actions (TriggerSwitchD)</a><br />
|
38
|
-
<a href="classes/TriggerSwitchD/SwitchFactory.html#M000003">new (TriggerSwitchD::SwitchFactory)</a><br />
|
39
|
-
<a href="classes/TriggerSwitchD/Application.html#M000017">new (TriggerSwitchD::Application)</a><br />
|
40
|
-
<a href="classes/TriggerSwitchD/ConfigFactory.html#M000013">new (TriggerSwitchD::ConfigFactory)</a><br />
|
41
|
-
<a href="classes/TriggerSwitchD/Action.html#M000015">new (TriggerSwitchD::Action)</a><br />
|
42
|
-
<a href="classes/Tellstick/TellstickIO.html#M000020">new (Tellstick::TellstickIO)</a><br />
|
43
|
-
<a href="classes/TriggerSwitchD/Schedule/InstanceMethods.html#M000007">next_action_at (TriggerSwitchD::Schedule::InstanceMethods)</a><br />
|
44
|
-
<a href="classes/Tellstick/TellstickIO.html#M000024">open (Tellstick::TellstickIO)</a><br />
|
45
|
-
<a href="classes/Tellstick/TellstickIO.html#M000025">puts (Tellstick::TellstickIO)</a><br />
|
46
|
-
<a href="classes/Tellstick/TellstickIO.html#M000021">puts (Tellstick::TellstickIO)</a><br />
|
47
|
-
<a href="classes/TriggerSwitchD/Schedule/InstanceMethods.html#M000005">schedule_action (TriggerSwitchD::Schedule::InstanceMethods)</a><br />
|
48
|
-
<a href="classes/TriggerSwitchD/Application.html#M000018">start (TriggerSwitchD::Application)</a><br />
|
49
|
-
<a href="classes/TriggerSwitchD/Action.html#M000016">to_s (TriggerSwitchD::Action)</a><br />
|
50
|
-
</div>
|
51
|
-
</div>
|
52
|
-
</body>
|
53
|
-
</html>
|
data/doc/index.html
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<!DOCTYPE html
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
5
|
-
|
6
|
-
<!--
|
7
|
-
|
8
|
-
RDoc Documentation
|
9
|
-
|
10
|
-
-->
|
11
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
12
|
-
<head>
|
13
|
-
<title>RDoc Documentation</title>
|
14
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
15
|
-
</head>
|
16
|
-
<frameset rows="20%, 80%">
|
17
|
-
<frameset cols="25%,35%,45%">
|
18
|
-
<frame src="fr_file_index.html" title="Files" name="Files" />
|
19
|
-
<frame src="fr_class_index.html" name="Classes" />
|
20
|
-
<frame src="fr_method_index.html" name="Methods" />
|
21
|
-
</frameset>
|
22
|
-
<frame src="files/lib/tellstick/protocol/nexa_rb.html" name="docwin" />
|
23
|
-
</frameset>
|
24
|
-
</html>
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# language: se
|
2
|
-
Egenskap: Jag vill att strömbrytare skall tändas och släckas vid förutbestämda tidpunkter
|
3
|
-
eller händelser utan att jag behöver utföra kommandot tänd resp. släck själv. När
|
4
|
-
tidpunkten eller händelsen infaller så skall kommandot utföras enl. plan
|
5
|
-
|
6
|
-
@implemented
|
7
|
-
Scenario: bevaka plan och utför händelse
|
8
|
-
Givet att jag har en fjärrströmbrytare "storarummet" med huskod "E", enhetskod "7" och protokoll "plain_text"
|
9
|
-
Och att jag har en händelse "tänd storarummet klockan 14:34"
|
10
|
-
När jag börjar utföra händelser:
|
11
|
-
| klockan |
|
12
|
-
| 14:33 |
|
13
|
-
| 14:34 |
|
14
|
-
| 14:35 |
|
15
|
-
Så skall jag se följande två resultat:
|
16
|
-
| meddelande | händelse_finns |
|
17
|
-
| | sant |
|
18
|
-
| Strömbrytare E7 tänd | sant |
|
19
|
-
| | falskt |
|
20
|
-
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# language: se
|
2
|
-
Egenskap: För att göra det ännu enklare att använda mina strömbrytare,
|
3
|
-
så vill jag kunna gruppera olika fjärrströmbrytare under en ny fjärrströmbrytare.
|
4
|
-
|
5
|
-
@implemented
|
6
|
-
Scenario: Gruppera alias_obj
|
7
|
-
Givet att jag har en fjärrströmbrytare "storarummet" med huskod "A", enhetskod "3" och protokoll "proove"
|
8
|
-
Och att jag har en fjärrströmbrytare "hallen" med huskod "4", enhetskod "2" och protokoll "proove"
|
9
|
-
När jag grupperar "storarummet" och "hallen" under fjärrströmbrytaren "alla"
|
10
|
-
Så skall det finnas en fjärrströmbrytare "alla" med följande:
|
11
|
-
| huskod | enhetskod |
|
12
|
-
| A | 3 |
|
13
|
-
| 4 | 2 |
|
14
|
-
|
15
|
-
@implemented
|
16
|
-
Scenario: tänd/släck strömbrytare mha fjärrströmbrytargrupp
|
17
|
-
Givet att fjärrströmbrytare "sovrummet" innehåller strömbrytare "E,3" och "C,1"
|
18
|
-
När jag utför följande:
|
19
|
-
| kommando | fjärrströmbrytarnamn |
|
20
|
-
| tänd | sovrummet |
|
21
|
-
| släck | sovrummet |
|
22
|
-
Så skall jag se följande:
|
23
|
-
| meddelande |
|
24
|
-
| Strömbrytare E3 tänd,Strömbrytare C1 tänd |
|
25
|
-
| Strömbrytare E3 släckt,Strömbrytare C1 släckt |
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# language: se
|
2
|
-
Egenskap: För att slippa skriva in strömbrytar identitet (hus,enhet,protokoll)
|
3
|
-
varje gång som jag skall använda strömbrytaren, så vill jag kunna referera
|
4
|
-
till strömbrytaren med ett alias.
|
5
|
-
|
6
|
-
@implemented
|
7
|
-
Scenario: skapa alias_obj för strömbrytare som inte finns
|
8
|
-
Givet att jag inte har en fjärrströmbrytare "källare"
|
9
|
-
När jag skapar en fjärrströmbrytare "källare" med huskod "A", enhetskod "1" och protokoll "proove"
|
10
|
-
Så skall det finnas en fjärrströmbrytare "källare" med huskod "A", enhetskod "1" och protokoll "proove"
|
11
|
-
|
12
|
-
@implemented
|
13
|
-
Scenario: skapa alias_obj för strömbrytare som finns
|
14
|
-
Givet att jag har en fjärrströmbrytare "källare" med huskod "A", enhetskod "1" och protokoll "proove"
|
15
|
-
När jag skapar en fjärrströmbrytare "källare" med huskod "B", enhetskod "5" och protokoll "nexa"
|
16
|
-
Så skall det inte finnas en fjärrströmbrytare "källare" med huskod "A", enhetskod "1" och protokoll "proove"
|
17
|
-
Och det skall finnas en fjärrströmbrytare "källare" med huskod "B", enhetskod "5" och protokoll "nexa"
|
18
|
-
|
19
|
-
@implemented
|
20
|
-
Scenario: ta bort alias_obj för strömbrytare som finns
|
21
|
-
Givet att jag har en fjärrströmbrytare "källare" med huskod "B", enhetskod "5" och protokoll "proove"
|
22
|
-
När jag tar bort en fjärrströmbrytare "källare"
|
23
|
-
Så skall det inte finnas en fjärrströmbrytare "källare"
|
24
|
-
|
25
|
-
@implemented
|
26
|
-
Scenario: använd alias_obj för att tända eller släcka strömbrytare
|
27
|
-
Givet att jag har en fjärrströmbrytare "källaren" med huskod "B", enhetskod "5" och protokoll "plain_text"
|
28
|
-
När jag utför följande:
|
29
|
-
| kommando | fjärrströmbrytarnamn |
|
30
|
-
| tänd | källaren |
|
31
|
-
| släck | källaren |
|
32
|
-
Så skall jag se följande:
|
33
|
-
| meddelande |
|
34
|
-
| Strömbrytare B5 tänd |
|
35
|
-
| Strömbrytare B5 släckt |
|
36
|
-
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# language: se
|
2
|
-
Egenskap: lyssna efter användar anrop
|
3
|
-
För att kunna styra strömbrytare direkt via ett tilltalande användargränssnitt
|
4
|
-
Som en användare
|
5
|
-
Vill jag att daemon hanterar inkommande kommandon från användaren
|
6
|
-
|
7
|
-
@device_file
|
8
|
-
@implemented
|
9
|
-
Scenario: skicka lista på fjärrströmbrytare
|
10
|
-
Givet att fjärrströmbrytare "källare" innehåller strömbrytare "A,1,plain_text" och "A,2,plain_text" finns på fil
|
11
|
-
Och att fjärrströmbrytare "sovrum" innehåller strömbrytare "A,3,plain_text" och "A,4,plain_text" finns på fil
|
12
|
-
Och att jag har en händelse "släck källare klockan 19:00" på fil
|
13
|
-
När jag tar emot kommando "list_devices"
|
14
|
-
Så skickar jag text som matchar "sovrum.+[#<TriggerSwitchD::Switch.+house_code=A.+model_name=plain_text.+unit_code=3.+#<TriggerSwitchD::Switch.+house_code=A.+model_name=plain_text.+unit_code=4>].+källare.+[#<TriggerSwitchD::Switch.+house_code=A.+model_name=plain_text.+unit_code=1.+#<TriggerSwitchD::Switch.+house_code=A.+model_name=plain_text.+unit_code=2>]"
|
15
|
-
|
16
|
-
@schedule_file
|
17
|
-
@implemented
|
18
|
-
Scenario: skicka schema
|
19
|
-
Givet att fjärrströmbrytare "källare" innehåller strömbrytare "A,3,plain_text" och "A,4,plain_text" finns på fil
|
20
|
-
Och att jag har en händelse "tänd källare klockan 18:00" på fil
|
21
|
-
Och att jag har en händelse "släck källare klockan 19:00" på fil
|
22
|
-
När jag tar emot kommando "list_schedule"
|
23
|
-
Så skickar jag "[<fnutt>tänd källare klockan 18:00<fnutt>, <fnutt>släck källare klockan 19:00<fnutt>]"
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# language: se
|
2
|
-
Egenskap: Om daemon går ner eller startas om så skall planerade händelser
|
3
|
-
kunna läsas in från fil
|
4
|
-
För att jag inte skall förlora planerade händelser vid strömförlust, program krasch
|
5
|
-
eller liknande
|
6
|
-
Som en daemon användare
|
7
|
-
Vill jag att daemon skall läsa in planerade händelser vid programstart
|
8
|
-
|
9
|
-
@implemented
|
10
|
-
Scenario: Läs in från fil
|
11
|
-
Givet att jag har en fjärrströmbrytare "källare"
|
12
|
-
Och att jag inte har några planerade händelser
|
13
|
-
Och att jag har en händelse "tänd källare klockan 17:00" på fil
|
14
|
-
När jag läser in planerade händelser från fil
|
15
|
-
Så skall det finnas en händelse "tänd källare klockan 17:00"
|
16
|
-
|
17
|
-
@implemented
|
18
|
-
Scenario: Läs in från fil utan fjärrströmbrytare
|
19
|
-
Givet att jag inte har en fjärrströmbrytare "källare"
|
20
|
-
Och att jag inte har några planerade händelser
|
21
|
-
Och att jag har en händelse "tänd källare klockan 17:00" på fil
|
22
|
-
När jag läser in planerade händelser från fil
|
23
|
-
Så skall det inte finnas en händelse "tänd källare klockan 17:00"
|
24
|
-
Och jag skall få ett "NoMethodError" för "källare"
|
25
|
-
|
26
|
-
@implemented
|
27
|
-
Scenario: kommando som inte gäller
|
28
|
-
Givet att jag har en fjärrströmbrytare "källare"
|
29
|
-
Och att jag inte har några planerade händelser
|
30
|
-
Och att jag har en händelse "städa källare klockan 17:00" på fil
|
31
|
-
När jag läser in planerade händelser från fil
|
32
|
-
Så skall det inte finnas en händelse "städa källare klockan 17:00"
|
33
|
-
Och jag skall få ett "NoMethodError" för "städa"
|
34
|
-
|
35
|
-
@implemented
|
36
|
-
Scenario: klockslag som inte gäller
|
37
|
-
Givet att jag har en fjärrströmbrytare "källare"
|
38
|
-
Och att jag inte har några planerade händelser
|
39
|
-
Och att jag har en händelse "tänd källare klockan 25:99" på fil
|
40
|
-
När jag läser in planerade händelser från fil
|
41
|
-
Så skall det inte finnas en händelse "tänd källare klockan 25:99"
|
42
|
-
Och jag skall få ett "NoMethodError" för "25:99"
|
43
|
-
|
44
|
-
@implemented
|
45
|
-
Scenario: Soluppgång
|
46
|
-
Givet att jag har en fjärrströmbrytare "källare"
|
47
|
-
Och att jag inte har några planerade händelser
|
48
|
-
Och att jag är på latitud "60:40.68N"
|
49
|
-
Och att jag är på longitud "17:8.52Ö"
|
50
|
-
Och att aktuellt datum är "20091214" när filen läses in
|
51
|
-
Och att jag har en händelse "släck källare vid soluppgång" på fil
|
52
|
-
När jag läser in planerade händelser från fil
|
53
|
-
Så skall händelsen "släck källare vid soluppgång" utföras klockan "08:55"
|
54
|
-
|
55
|
-
@implemented
|
56
|
-
Scenario: Solnedgång
|
57
|
-
Givet att jag har en fjärrströmbrytare "källare"
|
58
|
-
Och att jag inte har några planerade händelser
|
59
|
-
Och att jag är på latitud "60:40.68N"
|
60
|
-
Och att jag är på longitud "17:8.52Ö"
|
61
|
-
Och att aktuellt datum är "20091214" när filen läses in
|
62
|
-
Och att jag har en händelse "tänd källare vid solnedgång" på fil
|
63
|
-
När jag läser in planerade händelser från fil
|
64
|
-
Så skall händelsen "tänd källare vid solnedgång" utföras klockan "14:39"
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# language: se
|
2
|
-
Egenskap: Strömbrytare från proove har ett eget protokol
|
3
|
-
|
4
|
-
För att tellstick skall kommunicera med samma protokoll som strömbrytaren
|
5
|
-
Som en användare av proove strömbrytare
|
6
|
-
Vill jag att tellstick skickar den sträng som protokollet anger
|
7
|
-
|
8
|
-
@implemented
|
9
|
-
Abstrakt Scenario: tänd/släck självlärande strömbrytare med proove protokoll
|
10
|
-
Givet att "proove" protokollet är definierat
|
11
|
-
När jag skickar "<kommando>" till "proove" strömbrytare "<hus>" "<enhet>"
|
12
|
-
Så vill jag se (för proove) "<meddelande>"
|
13
|
-
|
14
|
-
Exempel:
|
15
|
-
| kommando | hus | enhet | meddelande |
|
16
|
-
| tänd | A | 1 | [82,5,84,127,255,24,1,132,154,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,136,170,138,138,138,138,43] |
|
17
|
-
| tänd | B | 2 | [82,5,84,127,255,24,1,132,154,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,136,170,136,170,138,138,136,170,43] |
|
18
|
-
| släck | A | 1 | [82,5,84,127,255,24,1,132,154,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,43] |
|
19
|
-
| släck | B | 2 | [82,5,84,127,255,24,1,132,154,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,136,170,138,138,138,138,136,170,43] |
|
20
|
-
|
data/features/schedule.feature
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# language: se
|
2
|
-
Egenskap: Jag vill att strömbrytare skall tändas och släckas vid förutbestämda tidpunkter
|
3
|
-
eller händelser utan att jag behöver utföra kommandot tänd resp. släck själv. När
|
4
|
-
tidpunkten eller händelsen infaller så skall kommandot utföras enl. plan
|
5
|
-
|
6
|
-
@implemented
|
7
|
-
Scenario: aktivera/avaktivera strömbrytare vid klockslag
|
8
|
-
Givet att jag har en fjärrströmbrytare "källare"
|
9
|
-
När jag planlägger händelsen "tänd" klockan "17:00" för alias "källare"
|
10
|
-
Så skall det finnas en händelse "tänd källare klockan 17:00"
|
11
|
-
|
12
|
-
@implemented
|
13
|
-
Scenario: inga dubbletter för händelser
|
14
|
-
Givet att jag har en fjärrströmbrytare "källare"
|
15
|
-
När jag planlägger händelsen "släck" klockan "16:00" för alias "källare"
|
16
|
-
Och jag planlägger händelsen "släck" klockan "16:00" för alias "källare"
|
17
|
-
Så skall det finnas en händelse "släck källare klockan 16:00"
|
18
|
-
|
19
|
-
@implemented
|
20
|
-
Scenario: ta bort händelse
|
21
|
-
Givet att jag har en fjärrströmbrytare "källare"
|
22
|
-
Och att jag har en händelse "tänd källare klockan 13:40"
|
23
|
-
När jag tar bort händelsen "tänd källare klockan 13:40"
|
24
|
-
Så skall det inte finnas en händelse "tänd källare klockan 13:40"
|
25
|
-
|
@@ -1,35 +0,0 @@
|
|
1
|
-
#language: se
|
2
|
-
Egenskap: Strömbrytare från nexa/waveman har ett eget protokol
|
3
|
-
|
4
|
-
För att tellstick skall kommunicera med samma protokoll som strömbrytaren
|
5
|
-
Som en användare av nexa/waveman strömbrytare
|
6
|
-
Vill jag att tellstick skickar den sträng som protokollet anger
|
7
|
-
|
8
|
-
@implemented
|
9
|
-
Abstrakt Scenario: tänd/släck självlärande strömbrytare med nexa/waveman protokoll
|
10
|
-
Givet att "<protokoll>" protokollet är definierat
|
11
|
-
När jag skickar "<kommando>" till "<protokoll>" strömbrytare "<hus>" "<enhet>"
|
12
|
-
Så vill jag se (för "<protokoll>") "<meddelande>"
|
13
|
-
|
14
|
-
Exempel:
|
15
|
-
| protokoll | kommando | hus | enhet | meddelande |
|
16
|
-
| nexa | tänd | A | 1 | S$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$kk$$kk$$kk$$}+ |
|
17
|
-
| nexa | tänd | B | 2 | S$kk$$k$k$k$k$k$k$kk$$k$k$k$k$k$k$k$k$kk$$kk$$kk$$}+ |
|
18
|
-
| nexa | släck | A | 1 | S$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$kk$$kk$$k$k$}+ |
|
19
|
-
| nexa | släck | B | 2 | S$kk$$k$k$k$k$k$k$kk$$k$k$k$k$k$k$k$k$kk$$kk$$k$k$}+ |
|
20
|
-
| waveman | släck | A | 1 | S$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$}+ |
|
21
|
-
| waveman | släck | B | 2 | S$kk$$k$k$k$k$k$k$kk$$k$k$k$k$k$k$k$k$k$k$k$k$k$k$}+ |
|
22
|
-
| waveman | tänd | A | 1 | S$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$k$kk$$kk$$kk$$}+ |
|
23
|
-
| waveman | tänd | B | 2 | S$kk$$k$k$k$k$k$k$kk$$k$k$k$k$k$k$k$k$kk$$kk$$kk$$}+ |
|
24
|
-
| rising_sun | tänd | A | 1 | S.e.e.ee..ee..ee..e.e.ee..ee..ee..ee..ee..ee..ee..e+ |
|
25
|
-
| rising_sun | tänd | B | 2 | S.ee..e.e.ee..ee..ee..e.e.ee..ee..ee..ee..ee..ee..e+ |
|
26
|
-
| rising_sun | släck | A | 1 | S.e.e.ee..ee..ee..e.e.ee..ee..ee..ee..ee..ee..e.e.e+ |
|
27
|
-
| rising_sun | släck | B | 2 | S.ee..e.e.ee..ee..ee..e.e.ee..ee..ee..ee..ee..e.e.e+ |
|
28
|
-
| plain_text | tänd | A | 1 | Strömbrytare A1 tänd |
|
29
|
-
| plain_text | tänd | B | 5 | Strömbrytare B5 tänd |
|
30
|
-
| plain_text | släck | K | 3 | Strömbrytare K3 släckt |
|
31
|
-
| plain_text | släck | C | 123 | Strömbrytare C123 släckt |
|
32
|
-
| undefined | tänd | 12 | 23 | Protokollet finns inte |
|
33
|
-
| undefined | släck | 12 | 23 | Protokollet finns inte |
|
34
|
-
|
35
|
-
|
@@ -1,16 +0,0 @@
|
|
1
|
-
När /^jag börjar utföra händelser:$/ do |table|
|
2
|
-
@output = StringIO.new
|
3
|
-
@resultat_händelse = []
|
4
|
-
@schedule ||= TriggerSwitchD::Schedule.create
|
5
|
-
table.hashes.each do |row|
|
6
|
-
@resultat_händelse << (@schedule.find(@händelse.to_s) == @händelse ? "sant" : "falskt")
|
7
|
-
@schedule.execute(row["klockan"],@output)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
Så /^skall jag se följande två resultat:$/ do |table|
|
12
|
-
table.hashes.each_with_index do |row,index|
|
13
|
-
@output.string.should include(row["meddelande"])
|
14
|
-
@resultat_händelse[index].should == row["händelse_finns"]
|
15
|
-
end
|
16
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
Givet /^att fjärrströmbrytare "([^\"]*)" innehåller strömbrytare "([^\"]*)" och "([^\"]*)"$/ do |fjärrströmbrytarnamn, s1, s2|
|
2
|
-
@devices ||= {}
|
3
|
-
s1 = s1.split(',')
|
4
|
-
s2 = s2.split(',')
|
5
|
-
arr = [TriggerSwitchD::Switch.new(:house_code => s1[0],:unit_code => s1[1],:model_name => "plain_text"),TriggerSwitchD::Switch.new(:house_code => s2[0],:unit_code => s2[1],:model_name => "plain_text")]
|
6
|
-
@devices[fjärrströmbrytarnamn] = arr
|
7
|
-
pp @devices
|
8
|
-
end
|
9
|
-
|
10
|
-
När /^jag grupperar "([^\"]*)" och "([^\"]*)" under fjärrströmbrytaren "([^\"]*)"$/ do |namn1, namn2, namn3|
|
11
|
-
a1 = @devices[namn1]
|
12
|
-
a2 = @devices[namn2]
|
13
|
-
@devices[namn3] = a1 + a2
|
14
|
-
end
|
15
|
-
|
16
|
-
Så /^skall det finnas en fjärrströmbrytare "([^\"]*)" med följande:$/ do |namn, table|
|
17
|
-
table.hashes.each do |row|
|
18
|
-
@devices[namn].find do |org|
|
19
|
-
(row["huskod"] == org.house_code) ||
|
20
|
-
(row["enhetskod"] == org.unit_code)
|
21
|
-
end.should_not be_nil
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
När /^jag skapar en fjärrströmbrytare "([^\"]*)" med huskod "([^\"]*)", enhetskod "([^\"]*)" och protokoll "([^\"]*)"$/ do |fjärrströmbrytarnamn, huskod, enhetskod, protokoll|
|
2
|
-
@devices[fjärrströmbrytarnamn] = [TriggerSwitchD::Switch.new(:house_code => huskod, :unit_code => enhetskod, :model_name => protokoll)]
|
3
|
-
end
|
4
|
-
|
5
|
-
När /^jag tar bort en fjärrströmbrytare "([^\"]*)"$/ do |fjärrströmbrytarnamn|
|
6
|
-
@devices.delete(fjärrströmbrytarnamn)
|
7
|
-
end
|
8
|
-
|
9
|
-
Så /^skall det inte finnas en fjärrströmbrytare "([^\"]*)" med huskod "([^\"]*)", enhetskod "([^\"]*)" och protokoll "([^\"]*)"$/ do |fjärrströmbrytarnamn, huskod, enhetskod, protokoll|
|
10
|
-
a = @devices[fjärrströmbrytarnamn]
|
11
|
-
a.should_not be_nil
|
12
|
-
result = 0
|
13
|
-
if a[0].house_code != huskod; result += 1; end
|
14
|
-
if a[0].unit_code != enhetskod; result += 1; end
|
15
|
-
if a[0].model_name != protokoll; result += 1; end
|
16
|
-
result.should_not be(0)
|
17
|
-
end
|
18
|
-
|
19
|
-
Så /^skall det inte finnas en fjärrströmbrytare "([^\"]*)"$/ do |fjärrströmbrytarnamn|
|
20
|
-
@devices[fjärrströmbrytarnamn].should be_nil
|
21
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
Before do
|
2
|
-
File.delete(devices_filename) if File.exist? devices_filename
|
3
|
-
File.delete(schedule_filename) if File.exist? schedule_filename
|
4
|
-
end
|
5
|
-
|
6
|
-
Givet /^att fjärrströmbrytare "([^\"]*)" innehåller strömbrytare "([^\"]*)" och "([^\"]*)" finns på fil$/ do |namn1, namn2, namn3|
|
7
|
-
prepare_config
|
8
|
-
prepare_devices(namn1,namn2,namn3)
|
9
|
-
end
|
10
|
-
|
11
|
-
När /^jag tar emot kommando "([^\"]*)"$/ do |kommando|
|
12
|
-
file = File.open(config_filename,"r")
|
13
|
-
app = TriggerSwitchD::Application.new(file)
|
14
|
-
file.close
|
15
|
-
@app_thread = Thread.start { app.start }
|
16
|
-
@app_thread.abort_on_exception = true
|
17
|
-
@client = nil
|
18
|
-
@client = UNIXSocket.open(TriggerSwitchD::Config.unix_socket_path)
|
19
|
-
@client.send(kommando,0)
|
20
|
-
end
|
21
|
-
|
22
|
-
Så /^skickar jag "([^\"]*)"$/ do |svar|
|
23
|
-
YAML.load(@client.recvfrom(10000)[0]).should ==
|
24
|
-
YAML.load(svar.gsub("<fnutt>","\""))
|
25
|
-
@client.close
|
26
|
-
@app_thread.kill
|
27
|
-
end
|
28
|
-
|
29
|
-
Så /^skickar jag text som matchar "([^\"]*)"$/ do |regex|
|
30
|
-
client_ans = YAML.load(@client.recvfrom(10000)[0])
|
31
|
-
client_ans.inspect.should =~ Regexp.new(regex)
|
32
|
-
@client.close
|
33
|
-
@app_thread.kill
|
34
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
Givet /^att jag inte har några planerade händelser$/ do
|
2
|
-
@schedule = TriggerSwitchD::Schedule.create
|
3
|
-
end
|
4
|
-
|
5
|
-
När /^jag läser in planerade händelser från fil$/ do
|
6
|
-
file = File.open("db/scheduled_actions","r")
|
7
|
-
datum = (instance_variables.include? "@datum") ? @datum : Date.today
|
8
|
-
latitud = (instance_variables.include? "@latitude") ? @latitude : 0
|
9
|
-
longitud = (instance_variables.include? "@longitude") ? -@longitude : 0
|
10
|
-
environment = TriggerSwitchD::Config.default_environment
|
11
|
-
environment[:at_location] = {:north => latitud, :west => longitud}
|
12
|
-
begin
|
13
|
-
TriggerSwitchD::load_scheduled_actions(file,@schedule,@devices,environment,datum)
|
14
|
-
rescue => @exception
|
15
|
-
pp @exception
|
16
|
-
end
|
17
|
-
file.close
|
18
|
-
end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
När /^jag tar bort händelsen "([^\"]*)"$/ do |händelse|
|
2
|
-
@schedule.delete(händelse).should_not be_nil
|
3
|
-
end
|
4
|
-
|
5
|
-
När /^jag planlägger händelsen "([^\"]*)" klockan "([^\"]*)" för alias "([^\"]*)"$/ do |händelse, klockan, fjärrströmbrytarnamn|
|
6
|
-
@schedule ||= TriggerSwitchD::Schedule.create
|
7
|
-
@schedule.schedule_action(TriggerSwitchD::Action.new([händelse,fjärrströmbrytarnamn,"klockan",klockan].join(" "),@devices))
|
8
|
-
end
|
9
|
-
|
@@ -1,75 +0,0 @@
|
|
1
|
-
Givet /^att jag ?(inte|) har en fjärrströmbrytare "([^\"]*)"(| med huskod "([^\"]*)", enhetskod "([^\"]*)" och protokoll "([^\"]*)")$/ do |finns, fjärrströmbrytarnamn, noop, huskod, enhetskod, protokoll|
|
2
|
-
switch = TriggerSwitchD::Switch.new(:house_code => huskod,:unit_code => enhetskod,:model_name => protokoll)
|
3
|
-
@devices ||= {}
|
4
|
-
if finns == "inte"
|
5
|
-
@devices.delete(fjärrströmbrytarnamn)
|
6
|
-
else
|
7
|
-
@devices[fjärrströmbrytarnamn] = [switch]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
Givet /^att jag har en händelse "([^\"]*)"$/ do |händelse|
|
12
|
-
fjärrströmbrytarnamn = händelse.scan(/^\w+ (\w+) klockan \w+/u).flatten[0]
|
13
|
-
@schedule = TriggerSwitchD::Schedule.create
|
14
|
-
@händelse = @schedule.schedule_action(TriggerSwitchD::Action.new(händelse,@devices))
|
15
|
-
@händelse.should_not be_nil
|
16
|
-
end
|
17
|
-
|
18
|
-
Givet /^att "([^\"]*)" protokollet är definierat$/ do |protokoll|
|
19
|
-
dongle(StringIO.new,protokoll)
|
20
|
-
end
|
21
|
-
|
22
|
-
Givet /^att jag har en händelse "([^\"]*)" på fil$/ do |händelse|
|
23
|
-
prepare_schedule(händelse)
|
24
|
-
end
|
25
|
-
|
26
|
-
När /^jag utför följande:$/ do |table|
|
27
|
-
@output = StringIO.new
|
28
|
-
table.hashes.each do |row|
|
29
|
-
a = @devices[row["fjärrströmbrytarnamn"]]
|
30
|
-
a.should_not be_nil
|
31
|
-
a.each do |switch|
|
32
|
-
dongle(@output,switch.model_name).send(actions[row["kommando"]],switch.house_code, switch.unit_code)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
När /^jag skickar "([^\"]*)" till "([^\"]*)" strömbrytare "([^\"]*)" "([^\"]*)"$/ do |kommando, protokoll, hus, enhet|
|
38
|
-
@output = StringIO.new
|
39
|
-
dongle(@output,protokoll).send(actions[kommando],hus,enhet)
|
40
|
-
end
|
41
|
-
|
42
|
-
Så /^skall jag se följande:$/ do |table|
|
43
|
-
table.hashes.each do |row|
|
44
|
-
@output.string.gsub("\n",",").should include(row["meddelande"])
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
Så /^(skall det|det skall) finnas en fjärrströmbrytare "([^\"]*)" med huskod "([^\"]*)", enhetskod "([^\"]*)" och protokoll "([^\"]*)"$/ do |noop, fjärrströmbrytarnamn, huskod, enhetskod, protokoll|
|
49
|
-
a = @devices[fjärrströmbrytarnamn]
|
50
|
-
a.should_not be_nil
|
51
|
-
a[0].house_code.should == huskod
|
52
|
-
a[0].unit_code.should == enhetskod
|
53
|
-
a[0].model_name.should == protokoll
|
54
|
-
end
|
55
|
-
|
56
|
-
Så /^skall det ?(inte|) finnas en händelse "([^\"]*)"$/ do |finns,händelse|
|
57
|
-
h = @schedule.find(händelse)
|
58
|
-
if finns == "inte"
|
59
|
-
h.should be_nil
|
60
|
-
else
|
61
|
-
h.to_s.should include(händelse)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
Så /^(?:skall )händelsen "([^\"]*)" utföras klockan "([^\"]*)"$/ do |händelse, klockan|
|
66
|
-
h = @schedule.find(händelse)
|
67
|
-
h.should_not be_nil
|
68
|
-
h.at.should == klockan
|
69
|
-
end
|
70
|
-
|
71
|
-
Så /^jag skall få ett "([^\"]*)" för "([^\"]*)"$/ do |felmeddelande,för|
|
72
|
-
@exception.inspect.should include(felmeddelande)
|
73
|
-
@exception.inspect.should include(för)
|
74
|
-
end
|
75
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
Givet /^att aktuellt datum är "([^\"]*)".*$/ do |datum|
|
2
|
-
year,month,day = datum.scan(/(\d{4})(\d{2})(\d{2})/).flatten
|
3
|
-
@datum = Date.new(year.to_i,month.to_i,day.to_i)
|
4
|
-
end
|
5
|
-
|
6
|
-
Givet /^att jag är på latitud "([^\"]*)"$/ do |latitude|
|
7
|
-
@latitude = degrees_fraction(latitude)
|
8
|
-
end
|
9
|
-
|
10
|
-
Givet /^att jag är på longitud "([^\"]*)"$/ do |longitude|
|
11
|
-
@longitude = degrees_fraction(longitude)
|
12
|
-
end
|
13
|
-
|
14
|
-
När /^jag beräknar (.+)$/ do |funktion|
|
15
|
-
funktioner = {"soluppgång" => :sunrise, "solnedgång" => :sunset}
|
16
|
-
tid = @datum.extend(Daylight).send(funktioner[funktion],{:north => @latitude, :west => -@longitude}).localtime
|
17
|
-
@tid_för_soluppgång = "#{0 if tid.hour < 10}#{tid.hour}:#{0 if tid.min < 10}#{tid.min}"
|
18
|
-
end
|
19
|
-
|
20
|
-
Så /^skall se "([^\"]*)"$/ do |soluppgång|
|
21
|
-
@tid_för_soluppgång.should == soluppgång
|
22
|
-
end
|