rad 0.2.2 → 0.2.9
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +34 -0
- data/Manifest.txt +113 -7
- data/{README.txt → README.rdoc} +17 -5
- data/Rakefile +3 -0
- data/bin/rad +106 -1
- data/lib/examples/add_hysteresis.rb +13 -0
- data/lib/examples/basic_blink.rb +10 -0
- data/lib/examples/blink_m_address_assignment.rb +104 -0
- data/lib/examples/blink_m_hello.rb +14 -0
- data/lib/examples/blink_m_multi.rb +61 -0
- data/lib/examples/blink_with_serial.rb +16 -0
- data/lib/examples/configure_pa_lcd_boot.rb +91 -0
- data/lib/examples/debounce_methods.rb +49 -0
- data/lib/examples/external_variable_fu.rb +26 -0
- data/lib/examples/external_variables.rb +32 -0
- data/lib/examples/first_sound.rb +23 -0
- data/lib/examples/frequency_generator.rb +30 -0
- data/lib/examples/hello_array.rb +48 -0
- data/lib/examples/hello_array2.rb +79 -0
- data/lib/examples/hello_array_eeprom.rb +59 -0
- data/lib/examples/hello_clock.rb +84 -0
- data/lib/examples/hello_eeprom.rb +51 -0
- data/lib/examples/hello_eeprom_lcdpa.rb +81 -0
- data/lib/examples/hello_format_print.rb +94 -0
- data/lib/examples/hello_lcd_charset.rb +75 -0
- data/lib/examples/hello_pa_lcd.rb +59 -0
- data/lib/examples/hello_servos.rb +88 -0
- data/lib/examples/hello_spectra_sound.rb +38 -0
- data/lib/examples/hello_world.rb +11 -0
- data/lib/examples/hello_xbee.rb +12 -0
- data/lib/examples/hysteresis_duel.rb +39 -0
- data/lib/examples/i2c_with_clock_chip.rb +124 -0
- data/lib/examples/midi_beat_box.rb +86 -0
- data/lib/examples/midi_scales.rb +94 -0
- data/lib/examples/motor_knob.rb +30 -0
- data/lib/examples/servo_buttons.rb +23 -0
- data/lib/examples/servo_calibrate_continuous.rb +92 -0
- data/lib/examples/servo_throttle.rb +40 -0
- data/lib/examples/sparkfun_lcd.rb +48 -0
- data/lib/examples/spectra_soft_pot.rb +34 -0
- data/lib/examples/times_method.rb +8 -0
- data/lib/examples/toggle.rb +10 -0
- data/lib/examples/twitter.rb +57 -0
- data/lib/examples/two_wire.rb +14 -0
- data/lib/libraries/AFSoftSerial/AFSoftSerial.cpp +321 -0
- data/lib/libraries/AFSoftSerial/AFSoftSerial.h +61 -0
- data/lib/libraries/AFSoftSerial/keywords.txt +18 -0
- data/lib/libraries/AF_XPort/AF_XPort.cpp +166 -0
- data/lib/libraries/AF_XPort/AF_XPort.h +48 -0
- data/lib/libraries/DS1307/DS1307.cpp +162 -0
- data/lib/libraries/DS1307/DS1307.h +66 -0
- data/lib/libraries/{SWSerLCDpa → DS1307}/keywords.txt +1 -1
- data/lib/libraries/FrequencyTimer2/FrequencyTimer2.cpp +144 -0
- data/lib/libraries/FrequencyTimer2/FrequencyTimer2.h +42 -0
- data/lib/libraries/FrequencyTimer2/keywords.txt +22 -0
- data/lib/libraries/I2CEEPROM/I2CEEPROM.cpp +120 -0
- data/lib/libraries/I2CEEPROM/I2CEEPROM.h +70 -0
- data/lib/libraries/I2CEEPROM/keywords.txt +21 -0
- data/lib/libraries/LoopTimer/LoopTimer.cpp +35 -0
- data/lib/libraries/LoopTimer/LoopTimer.h +34 -0
- data/lib/libraries/LoopTimer/keywords.txt +27 -0
- data/lib/libraries/OneWire/OneWire.cpp +194 -0
- data/lib/libraries/OneWire/OneWire.h +63 -0
- data/lib/libraries/OneWire/keywords.txt +35 -0
- data/lib/libraries/OneWire/readme.txt +13 -0
- data/lib/libraries/SWSerLCDpa/SWSerLCDpa.cpp +93 -47
- data/lib/libraries/SWSerLCDpa/SWSerLCDpa.h +16 -9
- data/lib/libraries/SWSerLCDsf/SWSerLCDsf.cpp +311 -0
- data/lib/libraries/SWSerLCDsf/SWSerLCDsf.h +67 -0
- data/lib/libraries/Servo/Servo.cpp +192 -0
- data/lib/libraries/Servo/Servo.h +61 -0
- data/lib/libraries/Stepper/Stepper.cpp +220 -0
- data/lib/libraries/Stepper/Stepper.h +86 -0
- data/lib/libraries/Stepper/keywords.txt +28 -0
- data/lib/libraries/Wire/Wire.cpp +262 -0
- data/lib/libraries/Wire/Wire.h +67 -0
- data/lib/libraries/Wire/keywords.txt +31 -0
- data/lib/libraries/Wire/twi.h +57 -0
- data/lib/libraries/Wire/utility/twi.c +449 -0
- data/lib/libraries/Wire/utility/twi.h +57 -0
- data/lib/plugins/bitwise_ops.rb +54 -0
- data/lib/plugins/blink.rb +25 -0
- data/lib/plugins/blink_m.rb +356 -0
- data/lib/plugins/debounce.rb +138 -0
- data/lib/plugins/debug_output_to_lcd.rb +71 -0
- data/lib/plugins/hysteresis.rb +52 -0
- data/lib/plugins/input_output_state.rb +84 -0
- data/lib/plugins/lcd_padding.rb +58 -0
- data/lib/plugins/mem_test.rb +37 -0
- data/lib/plugins/midi.rb +60 -0
- data/lib/plugins/parallax_ping.rb +50 -0
- data/lib/plugins/servo_pulse.rb +31 -0
- data/lib/plugins/servo_setup.rb +86 -0
- data/lib/plugins/smoother.rb +54 -0
- data/lib/plugins/spark_fun_serial_lcd.rb +100 -0
- data/lib/plugins/spectra_symbol.rb +79 -0
- data/lib/plugins/twitter_connect.rb +145 -0
- data/lib/rad/README.rdoc +5 -0
- data/lib/rad/arduino_plugin.rb +246 -0
- data/lib/rad/arduino_sketch.rb +351 -257
- data/lib/rad/generators/makefile/makefile.erb +1 -1
- data/lib/rad/generators/makefile/makefile.rb +9 -10
- data/lib/rad/hardware_library.rb +813 -0
- data/lib/rad/init.rb +3 -1
- data/lib/rad/rad_processor.rb +128 -0
- data/lib/rad/rad_rewriter.rb +94 -0
- data/lib/rad/rad_type_checker.rb +26 -0
- data/lib/rad/sim/arduino_sketch.rb +57 -0
- data/lib/rad/sketch_compiler.rb +47 -0
- data/lib/rad/tasks/build_and_make.rake +146 -24
- data/lib/rad/variable_processing.rb +153 -0
- data/lib/rad/version.rb +1 -1
- data/spec/examples/hello_world.rb +11 -0
- data/spec/examples/serial_motor.rb +12 -0
- data/spec/models/sketch_compiler_spec.rb +96 -0
- data/spec/sim/hello_world_spec.rb +42 -0
- data/test/test_array_processing.rb +179 -0
- data/test/test_plugin_loading.rb +151 -0
- data/test/test_translation_post_processing.rb +185 -0
- data/test/test_variable_processing.rb +238 -0
- data/website/index.html +22 -7
- data/website/stylesheets/screen.css +32 -1
- metadata +130 -13
@@ -0,0 +1,151 @@
|
|
1
|
+
#!/usr/local/bin/ruby -w
|
2
|
+
|
3
|
+
$TESTING = true
|
4
|
+
|
5
|
+
# this is a test stub for now
|
6
|
+
# lets review these
|
7
|
+
# neee to remove this constant from tests and pull it from rad
|
8
|
+
PLUGIN_C_VAR_TYPES = "int|void|unsigned|long|short|uint8_t|static|char\\*|byte"
|
9
|
+
|
10
|
+
require "rubygems"
|
11
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/rad_processor.rb"
|
12
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/rad_rewriter.rb"
|
13
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/rad_type_checker.rb"
|
14
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/variable_processing"
|
15
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/arduino_sketch"
|
16
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/arduino_plugin"
|
17
|
+
require 'test/unit'
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
class TestPluginLoading < Test::Unit::TestCase
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
def setup
|
28
|
+
$external_var_identifiers = ["__foo", "__toggle", "wiggle"]
|
29
|
+
$define_types = { "KOOL" => "long", "ZAK" => "str"}
|
30
|
+
$array_types = { "my_array" => "int"}
|
31
|
+
$plugin_directives = []
|
32
|
+
$plugin_external_variables = []
|
33
|
+
$plugin_signatures =[]
|
34
|
+
$plugin_methods = []
|
35
|
+
$add_to_setup = []
|
36
|
+
$load_libraries = []
|
37
|
+
$plugin_structs = {}
|
38
|
+
$plugin_methods_hash = {}
|
39
|
+
$plugins_to_load = []
|
40
|
+
plugin_signatures = []
|
41
|
+
plugin_methods = []
|
42
|
+
|
43
|
+
@plugin_string =<<-STR
|
44
|
+
class PluginTesting < ArduinoPlugin
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
#
|
49
|
+
#
|
50
|
+
# BlinkM_funcs.h -- Arduino library to control BlinkM
|
51
|
+
# --------------
|
52
|
+
#
|
53
|
+
#
|
54
|
+
# Note: original version of this file lives with the BlinkMTester sketch
|
55
|
+
#
|
56
|
+
# 2007, Tod E. Kurt, ThingM, http://thingm.com/
|
57
|
+
#
|
58
|
+
# version: 20080203
|
59
|
+
#
|
60
|
+
# history:
|
61
|
+
# 20080101 - initial release
|
62
|
+
# 20080203 - added setStartupParam(), bugfix receiveBytes() from Dan Julio
|
63
|
+
# 20080727 - ported to rad jd barnhart
|
64
|
+
#
|
65
|
+
# first step, declare output pin 19 as i2c
|
66
|
+
## output_pin 19, :as => :wire, :device => :i2c, :enable => :true # reminder, true issues wire.begin
|
67
|
+
|
68
|
+
|
69
|
+
include_wire
|
70
|
+
|
71
|
+
add_blink_m_struct
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
# Not needed when pin is declared with :enable => :true
|
76
|
+
|
77
|
+
static int BlinkM_sendBack(byte addr)
|
78
|
+
{
|
79
|
+
int num = 0x11;
|
80
|
+
char buf[5];
|
81
|
+
itoa(num, buf, 16);
|
82
|
+
return "cool"
|
83
|
+
}
|
84
|
+
|
85
|
+
static char* another_method(byte addr)
|
86
|
+
{
|
87
|
+
int num = 0x11;
|
88
|
+
char buf[5];
|
89
|
+
itoa(num, buf, 16);
|
90
|
+
return "cool"
|
91
|
+
}
|
92
|
+
|
93
|
+
end
|
94
|
+
STR
|
95
|
+
|
96
|
+
@sketch_string =<<-STR
|
97
|
+
class SanMiquel < ArduinoSketch
|
98
|
+
|
99
|
+
# looking for hints? check out the examples directory
|
100
|
+
# example sketches can be uploaded to your arduino with
|
101
|
+
# rake make:upload sketch=examples/hello_world
|
102
|
+
# just replace hello_world with other examples
|
103
|
+
|
104
|
+
def loop
|
105
|
+
delay 100
|
106
|
+
my_lcd.home "k"
|
107
|
+
my_lcd.setxy 0,1
|
108
|
+
|
109
|
+
BlinkM_sendBack 10
|
110
|
+
delay 1000
|
111
|
+
test_address
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
STR
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
# remove these external variables and parens on variables
|
122
|
+
# need to actually run code through ruby_to_c for some of these tests
|
123
|
+
|
124
|
+
def test_int
|
125
|
+
name = "foo_a"
|
126
|
+
# check_for_plugin_use(sketch_string, plugin_string, file_name)
|
127
|
+
ArduinoPlugin.check_for_plugin_use(@sketch_string, @plugin_string, "hello_plugins")
|
128
|
+
value_string = "int(__toggle = 0);"
|
129
|
+
expected = ["hello_plugins"]
|
130
|
+
result = $plugins_to_load
|
131
|
+
assert_equal(expected, result)
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_two
|
135
|
+
name = "foo_a"
|
136
|
+
# check_for_plugin_use(sketch_string, plugin_string, file_name)
|
137
|
+
ArduinoPlugin.check_for_plugin_use(@sketch_string, @plugin_string, "hello_plugins")
|
138
|
+
value_string = "int(__toggle = 0);"
|
139
|
+
expected = {"hello_plugins"=>["BlinkM_sendBack", "another_method"]}
|
140
|
+
result = $plugin_methods_hash
|
141
|
+
assert_equal(expected, result)
|
142
|
+
end
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
## need to look at unsigned long
|
147
|
+
## need parens removal tests
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
end
|
@@ -0,0 +1,185 @@
|
|
1
|
+
#!/usr/local/bin/ruby -w
|
2
|
+
|
3
|
+
$TESTING = true
|
4
|
+
|
5
|
+
# this is a test stub for now
|
6
|
+
# lets review these
|
7
|
+
# neee to remove this constant from tests and pull it from rad
|
8
|
+
C_VAR_TYPES = "unsigned|int|long|double|str|char|byte|float|bool"
|
9
|
+
require "rubygems"
|
10
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/rad_processor.rb"
|
11
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/rad_rewriter.rb"
|
12
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/rad_type_checker.rb"
|
13
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/variable_processing"
|
14
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/arduino_sketch"
|
15
|
+
require 'test/unit'
|
16
|
+
|
17
|
+
|
18
|
+
class TranslationTesting < ArduinoSketch
|
19
|
+
|
20
|
+
def one
|
21
|
+
delay 1
|
22
|
+
end
|
23
|
+
|
24
|
+
def two
|
25
|
+
delay 1
|
26
|
+
@foo = 1
|
27
|
+
end
|
28
|
+
|
29
|
+
def three
|
30
|
+
@foo = 1
|
31
|
+
bar = 2
|
32
|
+
baz = wha
|
33
|
+
end
|
34
|
+
|
35
|
+
def four
|
36
|
+
@foo = 1
|
37
|
+
bar = 2
|
38
|
+
wiggle = wha
|
39
|
+
end
|
40
|
+
|
41
|
+
def five
|
42
|
+
@foo = 1
|
43
|
+
f = KOOL
|
44
|
+
end
|
45
|
+
|
46
|
+
def six
|
47
|
+
a = ZAK
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
def seven(int)
|
52
|
+
# coerce int to long int
|
53
|
+
a = int * 2
|
54
|
+
end
|
55
|
+
|
56
|
+
def eight(str)
|
57
|
+
# coerce str to string
|
58
|
+
a = ZAK + str
|
59
|
+
end
|
60
|
+
|
61
|
+
def nine
|
62
|
+
@my_array.each do |a|
|
63
|
+
delay a
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
class TestTranslationPostProcessing < Test::Unit::TestCase
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
def setup
|
78
|
+
$external_var_identifiers = ["__foo", "__toggle", "wiggle"]
|
79
|
+
$define_types = { "KOOL" => "long", "ZAK" => "str"}
|
80
|
+
$array_types = { "my_array" => "int"}
|
81
|
+
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
# remove these external variables and parens on variables
|
86
|
+
# need to actually run code through ruby_to_c for some of these tests
|
87
|
+
|
88
|
+
def test_int
|
89
|
+
name = "foo_a"
|
90
|
+
value_string = "int(__toggle = 0);"
|
91
|
+
expected = ""
|
92
|
+
result = ArduinoSketch.post_process_ruby_to_c_methods(value_string)
|
93
|
+
assert_equal(expected, result)
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_bool
|
97
|
+
name = "foo_b"
|
98
|
+
value_string = "bool(__toggle = 0);"
|
99
|
+
expected = ""
|
100
|
+
result = ArduinoSketch.post_process_ruby_to_c_methods(value_string)
|
101
|
+
assert_equal(expected, result)
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_long
|
105
|
+
name = "foo_c"
|
106
|
+
value_string = "long(__foo = 0);"
|
107
|
+
expected = ""
|
108
|
+
result = ArduinoSketch.post_process_ruby_to_c_methods(value_string)
|
109
|
+
assert_equal(expected, result)
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_trans_one
|
113
|
+
name = "foo_d"
|
114
|
+
expected = "void\none() {\ndelay(1);\n}"
|
115
|
+
result = raw_rtc_meth = RADProcessor.translate(TranslationTesting, "one")
|
116
|
+
assert_equal(expected, result)
|
117
|
+
end
|
118
|
+
|
119
|
+
# notice the nice behavior of @foo
|
120
|
+
def test_trans_two
|
121
|
+
name = "foo_e"
|
122
|
+
expected = "void\ntwo() {\ndelay(1);\n__foo = 1;\n}"
|
123
|
+
result = raw_rtc_meth = RADProcessor.translate(TranslationTesting, "two")
|
124
|
+
assert_equal(expected, result)
|
125
|
+
end
|
126
|
+
|
127
|
+
# notice the nice behavior of @foo
|
128
|
+
def test_trans_three
|
129
|
+
name = "foo_f"
|
130
|
+
expected = "void\nthree() {\nlong bar;\nvoid * baz;\n__foo = 1;\nbar = 2;\nbaz = wha();\n}"
|
131
|
+
result = raw_rtc_meth = RADProcessor.translate(TranslationTesting, "three")
|
132
|
+
assert_equal(expected, result)
|
133
|
+
end
|
134
|
+
|
135
|
+
# need to take a closer look at this ... include "void * wiggle" regex?
|
136
|
+
#
|
137
|
+
def test_trans_four
|
138
|
+
name = "foo_f"
|
139
|
+
expected = "void\nfour() {\nlong bar;\nvoid * wiggle;\n__foo = 1;\nbar = 2;\nwiggle = wha();\n}"
|
140
|
+
result = raw_rtc_meth = RADProcessor.translate(TranslationTesting, "four")
|
141
|
+
assert_equal(expected, result)
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_trans_five
|
145
|
+
name = "foo_f"
|
146
|
+
expected = "void\nfive() {\nlong f;\n__foo = 1;\nf = KOOL;\n}"
|
147
|
+
result = raw_rtc_meth = RADProcessor.translate(TranslationTesting, "five")
|
148
|
+
assert_equal(expected, result)
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_trans_six
|
152
|
+
name = "foo_f"
|
153
|
+
expected = "void\nsix() {\nstr a;\na = ZAK;\n}"
|
154
|
+
result = raw_rtc_meth = RADProcessor.translate(TranslationTesting, "six")
|
155
|
+
assert_equal(expected, result)
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_trans_seven
|
159
|
+
name = "foo_f"
|
160
|
+
expected = "void\nseven(long int) {\nlong a;\na = int * 2;\n}"
|
161
|
+
result = raw_rtc_meth = RADProcessor.translate(TranslationTesting, "seven")
|
162
|
+
assert_equal(expected, result)
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_trans_eight
|
166
|
+
name = "foo_f"
|
167
|
+
expected = "void\neight(long str) {\nvoid * a;\na = ZAK + str;\n}"
|
168
|
+
result = raw_rtc_meth = RADProcessor.translate(TranslationTesting, "eight")
|
169
|
+
assert_equal(expected, result)
|
170
|
+
end
|
171
|
+
|
172
|
+
def test_trans_nine
|
173
|
+
name = "foo_f"
|
174
|
+
expected = "void\nnine() {\nunsigned int index_a;\nfor (index_a = 0; index_a < (int) (sizeof(__my_array) / sizeof(__my_array[0])); index_a++) {\nint a = __my_array[index_a];\ndelay(a);\n}\n}"
|
175
|
+
result = raw_rtc_meth = RADProcessor.translate(TranslationTesting, "nine")
|
176
|
+
assert_equal(expected, result)
|
177
|
+
end
|
178
|
+
|
179
|
+
|
180
|
+
## need to look at unsigned long
|
181
|
+
## need parens removal tests
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
end
|
@@ -0,0 +1,238 @@
|
|
1
|
+
#!/usr/local/bin/ruby -w
|
2
|
+
|
3
|
+
$TESTING = true
|
4
|
+
|
5
|
+
# need to tell it where we are
|
6
|
+
# lets review these
|
7
|
+
# neee to remove this constant from tests and pull it from rad
|
8
|
+
C_VAR_TYPES = "unsigned|int|long|double|str|char|byte|float|bool"
|
9
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/variable_processing"
|
10
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/../lib/rad/arduino_sketch"
|
11
|
+
require 'test/unit'
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
class TestVariableProcessing < Test::Unit::TestCase
|
16
|
+
|
17
|
+
def setup
|
18
|
+
@t = ArduinoSketch.new
|
19
|
+
end
|
20
|
+
|
21
|
+
# question for brian... do we need variable assignment with no value when
|
22
|
+
# we have "" and 0
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
def test_int_as_int
|
27
|
+
name = "foo_a"
|
28
|
+
value_string = 1
|
29
|
+
expected = "int __foo_a = 1;"
|
30
|
+
result = @t.pre_process_vars(name, value_string)
|
31
|
+
assert_equal(expected, result[0])
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_string_as_int
|
35
|
+
name = "foo_b"
|
36
|
+
value_string = "1"
|
37
|
+
expected = "int __foo_b = 1;"
|
38
|
+
result = @t.pre_process_vars(name, value_string)
|
39
|
+
assert_equal(expected, result[0])
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_float_as_float
|
43
|
+
name = "foo_c"
|
44
|
+
value_string = 0.10
|
45
|
+
expected = "float __foo_c = 0.1;"
|
46
|
+
result = @t.pre_process_vars(name, value_string)
|
47
|
+
assert_equal(expected, result[0])
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_string_as_float
|
51
|
+
name = "foo_d"
|
52
|
+
value_string = "0.10"
|
53
|
+
expected = "float __foo_d = 0.1;"
|
54
|
+
result = @t.pre_process_vars(name, value_string)
|
55
|
+
assert_equal(expected, result[0])
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_byte # would this to return hex
|
59
|
+
name = "foo_f"
|
60
|
+
value_string = 0x00
|
61
|
+
expected = "int __foo_f = 0;"
|
62
|
+
result = @t.pre_process_vars(name, value_string)
|
63
|
+
assert_equal(expected, result[0])
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_byte_with_string_input
|
67
|
+
name = "foo_g"
|
68
|
+
value_string = "0x00"
|
69
|
+
expected = "byte __foo_g = 0x00;"
|
70
|
+
result = @t.pre_process_vars(name, value_string)
|
71
|
+
assert_equal(expected, result[0])
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_string
|
75
|
+
name = "foo_h"
|
76
|
+
value_string = "arduino"
|
77
|
+
expected = "char* __foo_h = \"arduino\";"
|
78
|
+
result = @t.pre_process_vars(name, value_string)
|
79
|
+
assert_equal(expected, result[0])
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_int_with_type
|
83
|
+
name = "foo_i"
|
84
|
+
value_string = "int"
|
85
|
+
expected = "int __foo_i;"
|
86
|
+
result = @t.pre_process_vars(name, value_string)
|
87
|
+
assert_equal(expected, result[0])
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_odd_name
|
91
|
+
name = "bacon_j"
|
92
|
+
value_string = "arduino"
|
93
|
+
expected = "char* __bacon_j = \"arduino\";"
|
94
|
+
result = @t.pre_process_vars(name, value_string)
|
95
|
+
assert_equal(expected, result[0])
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_int_with_type_two
|
99
|
+
name = "foo_k"
|
100
|
+
value_string = "2, int"
|
101
|
+
expected = "int __foo_k = 2;"
|
102
|
+
result = @t.pre_process_vars(name, value_string)
|
103
|
+
assert_equal(expected, result[0])
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_int_with_long
|
107
|
+
name = "foo_l"
|
108
|
+
value_string = "2, int"
|
109
|
+
expected = "int __foo_l = 2;"
|
110
|
+
result = @t.pre_process_vars(name, value_string)
|
111
|
+
assert_equal(expected, result[0])
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_int_with_byte
|
115
|
+
name = "foo_m"
|
116
|
+
value_string = "2, byte"
|
117
|
+
expected = "byte __foo_m = 2;"
|
118
|
+
result = @t.pre_process_vars(name, value_string)
|
119
|
+
assert_equal(expected, result[0])
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_int_with_unsigned_int
|
123
|
+
name = "foo_n"
|
124
|
+
value_string = "2, unsigned int"
|
125
|
+
expected = "unsigned int __foo_n = 2;"
|
126
|
+
result = @t.pre_process_vars(name, value_string)
|
127
|
+
assert_equal(expected, result[0])
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_int_with_unsigned_long
|
131
|
+
name = "foo_o"
|
132
|
+
value_string = "2, unsigned long"
|
133
|
+
expected = "unsigned long __foo_o = 2;"
|
134
|
+
result = @t.pre_process_vars(name, value_string)
|
135
|
+
assert_equal(expected, result[0])
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_int_with_short_int
|
139
|
+
name = "foo_q"
|
140
|
+
value_string = "2, short int"
|
141
|
+
expected = "short int __foo_q = 2;"
|
142
|
+
result = @t.pre_process_vars(name, value_string)
|
143
|
+
assert_equal(expected, result[0])
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_int_with_unsigned_short_int
|
147
|
+
name = "foo_r"
|
148
|
+
value_string = "2, unsigned short int"
|
149
|
+
expected = "unsigned short int __foo_r = 2;"
|
150
|
+
result = @t.pre_process_vars(name, value_string)
|
151
|
+
assert_equal(expected, result[0])
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_float_with_type
|
155
|
+
name = "foo_s"
|
156
|
+
value_string = "2.0, float"
|
157
|
+
expected = "float __foo_s = 2.0;"
|
158
|
+
result = @t.pre_process_vars(name, value_string)
|
159
|
+
assert_equal(expected, result[0])
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_true
|
163
|
+
name = "foo_t"
|
164
|
+
value_string = true
|
165
|
+
expected = "bool __foo_t = 1;"
|
166
|
+
result = @t.pre_process_vars(name, value_string)
|
167
|
+
assert_equal(expected, result[0])
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_false
|
171
|
+
name = "foo_v"
|
172
|
+
value_string = false
|
173
|
+
expected = "bool __foo_v = 0;"
|
174
|
+
result = @t.pre_process_vars(name, value_string)
|
175
|
+
assert_equal(expected, result[0])
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_negative_int_string
|
179
|
+
name = "foo_w"
|
180
|
+
value_string = "-1, int"
|
181
|
+
expected = "int __foo_w = -1;"
|
182
|
+
result = @t.pre_process_vars(name, value_string)
|
183
|
+
assert_equal(expected, result[0])
|
184
|
+
end
|
185
|
+
|
186
|
+
def test_negative_float_string
|
187
|
+
name = "foo_x"
|
188
|
+
value_string = "-0.1, float"
|
189
|
+
expected = "float __foo_x = -0.1;"
|
190
|
+
result = @t.pre_process_vars(name, value_string)
|
191
|
+
assert_equal(expected, result[0])
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_negative_larger_float_string
|
195
|
+
name = "foo_y"
|
196
|
+
value_string = "-1000.01, float"
|
197
|
+
expected = "float __foo_y = -1000.01;"
|
198
|
+
result = @t.pre_process_vars(name, value_string)
|
199
|
+
assert_equal(expected, result[0])
|
200
|
+
end
|
201
|
+
|
202
|
+
def test_negative_long_string
|
203
|
+
name = "foo_z"
|
204
|
+
value_string = "-.0991, float"
|
205
|
+
expected = "float __foo_z = -0.0991;"
|
206
|
+
result = @t.pre_process_vars(name, value_string)
|
207
|
+
assert_equal(expected, result[0])
|
208
|
+
end
|
209
|
+
|
210
|
+
def test_negative_float_string_two
|
211
|
+
name = "foo_aa"
|
212
|
+
value_string = "-.01, float"
|
213
|
+
expected = "float __foo_aa = -0.01;"
|
214
|
+
result = @t.pre_process_vars(name, value_string)
|
215
|
+
assert_equal(expected, result[0])
|
216
|
+
end
|
217
|
+
|
218
|
+
def test_negative_interter_string
|
219
|
+
name = "foo_bb"
|
220
|
+
value_string = "-.01, float"
|
221
|
+
expected = "float __foo_bb = -0.01;"
|
222
|
+
result = @t.pre_process_vars(name, value_string)
|
223
|
+
assert_equal(expected, result[0])
|
224
|
+
end
|
225
|
+
|
226
|
+
def test_dash_string
|
227
|
+
name = "foo_cc"
|
228
|
+
value_string = "-hmmm"
|
229
|
+
expected = "char* __foo_cc = \"-hmmm\";"
|
230
|
+
result = @t.pre_process_vars(name, value_string)
|
231
|
+
assert_equal(expected, result[0])
|
232
|
+
end
|
233
|
+
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
|
238
|
+
end
|