BBB 0.2.0 → 0.3.0

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.
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe BBB do
4
+
5
+ it "has a single configuration" do
6
+ a = BBB.configuration
7
+ b = BBB.configuration
8
+
9
+ a.test_mode = false
10
+ b.test_mode.should be_false
11
+
12
+ a.should eql(b)
13
+ a.test_mode = true
14
+ end
15
+
16
+ it "you can temporarily escape test mode" do
17
+ BBB.escape_test do
18
+ BBB.configuration.test_mode.should eql(false)
19
+ end
20
+ BBB.configuration.test_mode.should eql(true)
21
+ end
22
+
23
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe BBB::Configuration do
4
+
5
+ it "test mode on when testing" do
6
+ BBB.configuration.test_mode.should be_true
7
+ end
8
+
9
+ it "can be set to a different value" do
10
+ BBB.configuration.test_mode = false
11
+ BBB.configuration.test_mode.should be_false
12
+ BBB.configuration.test_mode = true
13
+ BBB.configuration.test_mode.should be_true
14
+ end
15
+
16
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+ require_relative '../../examples/analog_pin.rb'
3
+
4
+ describe Thermometer do
5
+
6
+ it "has a thermometer" do
7
+ described_class.new.respond_to?(:thermometer).should be_true
8
+ end
9
+
10
+ it "thermometer responds to read" do
11
+ described_class.new.thermometer.respond_to?(:read).should be_true
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+ require_relative "../../examples/blinker"
3
+
4
+ describe Blinker do
5
+
6
+ # Initialize and run the LedExampleApplication
7
+
8
+ it "should respond to led" do
9
+ app = described_class.new
10
+ app.respond_to?(:led).should be_true
11
+ end
12
+
13
+ it "should be able to turn led on" do
14
+ app = described_class.new
15
+ lambda {app.led.on!}.should_not raise_error
16
+ end
17
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ require_relative '../../examples/ldr_light_switch'
3
+
4
+ describe LDRLightSwitch do
5
+ before :each do
6
+ @switch = described_class.new
7
+ end
8
+
9
+ it "has an ldr" do
10
+ @switch.respond_to?(:ldr).should be_true
11
+ end
12
+
13
+ it "has an led" do
14
+ @switch.respond_to?(:led).should be_true
15
+ end
16
+
17
+ it "led initializes off" do
18
+ @switch.led.off?.should be_true
19
+ end
20
+
21
+ it "switches on if the light is below threshold" do
22
+ @switch.threshold = 10
23
+ @switch.led.off!
24
+
25
+ @switch.ldr.should_receive(:read).and_return(5)
26
+ @switch.run
27
+ @switch.led.on?.should be_true
28
+ end
29
+
30
+ it "switches off if the light is below threshold" do
31
+ @switch.threshold = 10
32
+ @switch.led.on!
33
+
34
+ @switch.ldr.should_receive(:read).and_return(15)
35
+ @switch.run
36
+ @switch.led.on?.should be_false
37
+ end
38
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+ require_relative '../../examples/light_switch'
3
+
4
+ describe LightSwitch do
5
+
6
+ it "turns on the light by default" do
7
+ LightSwitch.new.led.on?.should be_true
8
+ end
9
+
10
+ context "switching lights" do
11
+
12
+ it "toggles the light on button press" do
13
+ switch = LightSwitch.new
14
+ old_state = switch.led.status
15
+ switch.button.update(true)
16
+ old_state.should_not eql(switch.led.status)
17
+ end
18
+
19
+ it "when keeping pressed do not switch" do
20
+ switch = LightSwitch.new
21
+
22
+ state0 = switch.led.status
23
+ switch.button.update(true)
24
+
25
+ state1 = switch.led.status
26
+ state0.should_not eql(state1)
27
+
28
+ switch.button.update(true)
29
+ state2 = switch.led.status
30
+ state2.should eql(state1)
31
+ end
32
+
33
+ it "when keeping released do not switch state" do
34
+ switch = LightSwitch.new
35
+
36
+ state0 = switch.led.status
37
+ switch.button.update(false)
38
+
39
+ state1 = switch.led.status
40
+ state0.should eql(state1)
41
+
42
+ switch.button.update(false)
43
+ state2 = switch.led.status
44
+ state2.should eql(state1)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+ require_relative '../../examples/nunchuck_websocket'
3
+
4
+
5
+ describe NunchuckService do
6
+
7
+ it "initializes" do
8
+ lambda { described_class.new }.should_not raise_error
9
+ end
10
+
11
+ end
12
+
13
+
14
+ describe NunchuckServer do
15
+
16
+ it "initializes" do
17
+ lambda { described_class.new }.should_not raise_error
18
+ end
19
+
20
+ end
@@ -0,0 +1,90 @@
1
+ require 'spec_helper'
2
+ require_relative '../../examples/quadcopter'
3
+
4
+ describe Quadcopter do
5
+ let(:copter) { described_class.new }
6
+
7
+ it "counts 4 escs" do
8
+ escs = copter.escs
9
+ escs.count.should eql(4)
10
+ classes = escs.map(&:class).uniq
11
+ classes.count.should eql(1)
12
+ classes.first.should eql(BBB::Components::ESC)
13
+ end
14
+
15
+ it "responds to 1 wmp on the WiiMotionPlus" do
16
+ copter.wmp.class.should eql(BBB::Components::WMP)
17
+ end
18
+
19
+ it "responds to the names of the escs" do
20
+ copter = described_class.new
21
+ copter.esc_lf.class.should eql(BBB::Components::ESC)
22
+ copter.esc_rf.class.should eql(BBB::Components::ESC)
23
+ copter.esc_lb.class.should eql(BBB::Components::ESC)
24
+ copter.esc_rb.class.should eql(BBB::Components::ESC)
25
+ end
26
+
27
+ it "has a stabilizer" do
28
+ copter.respond_to?(:stabilizer).should be_true
29
+ end
30
+
31
+ it "passes the secs to the stabilizer" do
32
+ copter.stabilizer.escs.should eql(copter.escs)
33
+ end
34
+
35
+ it "provides quick access to gyro on wmp" do
36
+ copter.gyro.should eql(copter.wmp.gyro)
37
+ end
38
+
39
+ it "should know about fly mode" do
40
+ copter.respond_to?(:fly_mode).should be_true
41
+ end
42
+
43
+ it "defaults to a hover fly mode" do
44
+ copter.fly_mode.should eql(:hover)
45
+ end
46
+
47
+ it "consults the stabilizer for fly mode info" do
48
+ copter.stabilizer.should_receive(:mode).and_return("wicked acrobatics")
49
+ copter.fly_mode.should eql("wicked acrobatics")
50
+ end
51
+
52
+ context "complex attach commands" do
53
+
54
+ it "remembers both pins given" do
55
+ copter.esc_lf.positions.should eql([:P8_13, :P9_3])
56
+ end
57
+
58
+ it "remembers a single pin given" do
59
+ copter.power_indicator.positions.should eql([:P8_6])
60
+ end
61
+ end
62
+
63
+ end
64
+
65
+ describe Stabilizer do
66
+ let(:stabilizer) { described_class.new }
67
+
68
+ it "reponds to hover" do
69
+ stabilizer.respond_to?(:hover).should be_true
70
+ end
71
+
72
+ it "reponds to update" do
73
+ stabilizer.respond_to?(:update).should be_true
74
+ end
75
+
76
+ [:escs, :gyro, :accelerometer].each do |key|
77
+ it "sets #{key} on initialization" do
78
+ number = rand(100)
79
+ instance = described_class.new(:"#{key}"=>number)
80
+ instance.send(key).should eql(number)
81
+ end
82
+ end
83
+
84
+ it "sets default mode to hover" do
85
+ stabilizer.mode.should eql(:hover)
86
+ end
87
+
88
+ end
89
+
90
+
@@ -0,0 +1,95 @@
1
+ require 'spec_helper'
2
+ require_relative "../../examples/servo_ldr"
3
+
4
+ describe LDRServo do
5
+
6
+ context "Direction" do
7
+ it "keeps direction when equal measuement" do
8
+ finder = described_class.new
9
+ finder.ldr.should_receive(:read).twice.and_return(0)
10
+ old_direction = finder.direction
11
+ finder.run
12
+ finder.direction.should eql(old_direction)
13
+ end
14
+
15
+ it "reverses direction when moving away from light" do
16
+ finder = described_class.new
17
+ finder.previous_value = 50
18
+ finder.ldr.should_receive(:read).and_return(30)
19
+ finder.servo.should_receive(:angle)
20
+ old_direction = finder.direction
21
+
22
+ finder.run
23
+ finder.direction.should_not eql(old_direction)
24
+ end
25
+
26
+ it "continues direction when moving towards from light" do
27
+ finder = described_class.new
28
+ finder.previous_value = 30
29
+ finder.ldr.should_receive(:read).and_return(50)
30
+ finder.servo.should_receive(:angle)
31
+ old_direction = finder.direction
32
+
33
+ finder.run
34
+ finder.direction.should eql(old_direction)
35
+ end
36
+
37
+ end
38
+
39
+ context "angle adjustment" do
40
+ it "not needed when receiving same value" do
41
+ finder = described_class.new
42
+ finder.ldr.should_receive(:read).twice.and_return(0)
43
+ finder.servo.should_not_receive(:angle)
44
+ finder.run
45
+ end
46
+
47
+ it "needed when moving away from light" do
48
+ finder = described_class.new
49
+ finder.previous_value = 50
50
+ finder.ldr.should_receive(:read).and_return(30)
51
+ finder.servo.should_receive(:angle)
52
+ finder.run
53
+ end
54
+
55
+ it "needed when moving towards light" do
56
+ finder = described_class.new
57
+ finder.previous_value = 30
58
+ finder.ldr.should_receive(:read).and_return(50)
59
+ finder.servo.should_receive(:angle)
60
+ finder.run
61
+ end
62
+ end
63
+
64
+ context "setting the angle" do
65
+ it "to maximum when given a value above maximm" do
66
+ finder = described_class.new
67
+ finder.angle=200
68
+ finder.angle.should eql(finder.max_servo_angle)
69
+ end
70
+
71
+ it "to minimum when given a value below minumum" do
72
+ finder = described_class.new
73
+ finder.angle=-10
74
+ finder.angle.should eql(finder.min_servo_angle)
75
+ end
76
+
77
+ it "to maximum when given maximum value" do
78
+ finder = described_class.new
79
+ finder.angle=finder.max_servo_angle
80
+ finder.angle.should eql(finder.max_servo_angle)
81
+ end
82
+
83
+ it "to minimum when given a value below minumum" do
84
+ finder = described_class.new
85
+ finder.angle=finder.min_servo_angle
86
+ finder.angle.should eql(finder.min_servo_angle)
87
+ end
88
+
89
+ it "to value when given a value within range" do
90
+ finder = described_class.new
91
+ finder.angle=100
92
+ finder.angle.should eql(100)
93
+ end
94
+ end
95
+ end
@@ -33,8 +33,10 @@ describe BBB::Pins::Pinnable do
33
33
  pin = MockPin.new(:P8_13, mock: false)
34
34
  pin.mock?.should be_false
35
35
 
36
- pin = MockPin.new(:P8_13)
37
- pin.mock?.should be_false
36
+ BBB.escape_test do
37
+ pin = MockPin.new(:P8_13)
38
+ pin.mock?.should be_false
39
+ end
38
40
  end
39
41
  end
40
42
 
@@ -2,3 +2,4 @@ require 'coveralls'
2
2
  Coveralls.wear!
3
3
 
4
4
  require 'BBB'
5
+ BBB.configuration.test_mode = true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: BBB
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wilco van Duinkerken
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-19 00:00:00.000000000 Z
11
+ date: 2014-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -95,14 +95,15 @@ files:
95
95
  - README.md
96
96
  - Rakefile
97
97
  - examples/analog_pin.rb
98
+ - examples/blinker.rb
98
99
  - examples/ldr_light_switch.rb
99
- - examples/led.rb
100
100
  - examples/light_switch.rb
101
- - examples/nunchuck.rb
101
+ - examples/nunchuck_websocket.rb
102
+ - examples/quadcopter.rb
102
103
  - examples/servo_ldr.rb
103
- - examples/sketches.rb
104
104
  - lib/BBB.rb
105
105
  - lib/BBB/application.rb
106
+ - lib/BBB/attachable.rb
106
107
  - lib/BBB/circuit.rb
107
108
  - lib/BBB/components.rb
108
109
  - lib/BBB/components/analog_component.rb
@@ -113,6 +114,7 @@ files:
113
114
  - lib/BBB/components/pinnable.rb
114
115
  - lib/BBB/components/servo.rb
115
116
  - lib/BBB/components/wii_motion_plus.rb
117
+ - lib/BBB/configuration.rb
116
118
  - lib/BBB/exceptions.rb
117
119
  - lib/BBB/pins.rb
118
120
  - lib/BBB/pins/analog_pin.rb
@@ -131,12 +133,20 @@ files:
131
133
  - resources/pin_mappings.json
132
134
  - resources/pin_mappings.json.comment
133
135
  - spec/application_spec.rb
136
+ - spec/bbb_spec.rb
134
137
  - spec/circuit_spec.rb
135
138
  - spec/components/analog_component_spec.rb
136
139
  - spec/components/led_spec.rb
137
140
  - spec/components/pinnable_spec.rb
138
141
  - spec/components/servo_spec.rb
139
- - spec/examples/led_spec.rb
142
+ - spec/configuration_spec.rb
143
+ - spec/examples/analog_pin_spec.rb
144
+ - spec/examples/blinker_spec.rb
145
+ - spec/examples/ldr_light_switch_spec.rb
146
+ - spec/examples/light_switch_spec.rb
147
+ - spec/examples/nunchuck_websocket_spec.rb
148
+ - spec/examples/quadcopter_spec.rb
149
+ - spec/examples/servo_ldr_spec.rb
140
150
  - spec/pins/analog_pin_spec.rb
141
151
  - spec/pins/digital_input_pin_spec.rb
142
152
  - spec/pins/digital_output_pin_spec.rb
@@ -173,12 +183,20 @@ specification_version: 4
173
183
  summary: Helper functions to ruby around on the BeagleBone Black
174
184
  test_files:
175
185
  - spec/application_spec.rb
186
+ - spec/bbb_spec.rb
176
187
  - spec/circuit_spec.rb
177
188
  - spec/components/analog_component_spec.rb
178
189
  - spec/components/led_spec.rb
179
190
  - spec/components/pinnable_spec.rb
180
191
  - spec/components/servo_spec.rb
181
- - spec/examples/led_spec.rb
192
+ - spec/configuration_spec.rb
193
+ - spec/examples/analog_pin_spec.rb
194
+ - spec/examples/blinker_spec.rb
195
+ - spec/examples/ldr_light_switch_spec.rb
196
+ - spec/examples/light_switch_spec.rb
197
+ - spec/examples/nunchuck_websocket_spec.rb
198
+ - spec/examples/quadcopter_spec.rb
199
+ - spec/examples/servo_ldr_spec.rb
182
200
  - spec/pins/analog_pin_spec.rb
183
201
  - spec/pins/digital_input_pin_spec.rb
184
202
  - spec/pins/digital_output_pin_spec.rb
@@ -189,3 +207,4 @@ test_files:
189
207
  - spec/pins/pinnable_spec.rb
190
208
  - spec/pins/pwm_pin_spec.rb
191
209
  - spec/spec_helper.rb
210
+ has_rdoc: