farmbot-serial 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+ describe Fb::HardwareInterfaceArduinoValuesReceived do
3
+
4
+ before do
5
+
6
+
7
+
8
+
9
+ Fb::HardwareInterface.current.status = Fb::Status.new
10
+
11
+ @ramps = Fb::HardwareInterfaceArduinoValuesReceived.new()
12
+
13
+ #@ramps = Fb::HardwareInterfaceArduino.new(true)
14
+
15
+ #@ramps_param = Fb::HardwareInterfaceParam.new
16
+ #@ramps.ramps_param = @ramps_param
17
+
18
+ end
19
+
20
+ it "load parameters" do
21
+
22
+ p = rand(9999999).to_i
23
+ v = rand(9999999).to_i
24
+
25
+ x = rand(9999999).to_i
26
+ y = rand(9999999).to_i
27
+ z = rand(9999999).to_i
28
+
29
+ xa = rand(9999999).to_i
30
+ xb = rand(9999999).to_i
31
+ ya = rand(9999999).to_i
32
+ yb = rand(9999999).to_i
33
+ za = rand(9999999).to_i
34
+ zb = rand(9999999).to_i
35
+
36
+ @ramps.load_parameter("P", p)
37
+ @ramps.load_parameter("V", v)
38
+ @ramps.load_parameter("X", x)
39
+ @ramps.load_parameter("Y", y)
40
+ @ramps.load_parameter("Z", z)
41
+
42
+ @ramps.load_parameter("XA", xa)
43
+ @ramps.load_parameter("XB", xb)
44
+ @ramps.load_parameter("YA", ya)
45
+ @ramps.load_parameter("YB", yb)
46
+ @ramps.load_parameter("ZA", za)
47
+ @ramps.load_parameter("ZB", zb)
48
+
49
+ expect(@ramps.p).to eq(p)
50
+ expect(@ramps.v).to eq(v)
51
+
52
+ expect(@ramps.x).to eq(x)
53
+ expect(@ramps.y).to eq(y)
54
+ expect(@ramps.z).to eq(z)
55
+
56
+ expect(@ramps.xa).to eq(xa)
57
+ expect(@ramps.xb).to eq(xb)
58
+ expect(@ramps.ya).to eq(ya)
59
+ expect(@ramps.yb).to eq(yb)
60
+ expect(@ramps.za).to eq(za)
61
+ expect(@ramps.zb).to eq(zb)
62
+
63
+ end
64
+
65
+ end
66
+
@@ -0,0 +1,27 @@
1
+ describe Fb::HardwareInterfaceArduinoWriteStatus do
2
+
3
+ before do
4
+ Fb::HardwareInterface.current.status = Fb::Status.new
5
+ @ramps = Fb::HardwareInterfaceArduinoWriteStatus.new()
6
+ end
7
+
8
+ it "is busy 1" do
9
+ @ramps.done = 0
10
+ busy = @ramps.is_busy
11
+ expect(busy).to eq(true)
12
+ end
13
+
14
+ it "is busy 2" do
15
+ @ramps.done = 1
16
+ busy = @ramps.is_busy
17
+ expect(busy).to eq(false)
18
+ end
19
+
20
+ it "split parameter" do
21
+ @ramps.received = "R00 XXX"
22
+ @ramps.split_received()
23
+
24
+ expect(@ramps.code).to eq("R00")
25
+ expect(@ramps.params).to eq("XXX")
26
+ end
27
+ end
@@ -0,0 +1,555 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fb::HardwareInterfaceArduino do
4
+
5
+ before do
6
+
7
+
8
+
9
+
10
+ Fb::HardwareInterface.current.status = Fb::Status.new
11
+
12
+ @ramps = Fb::HardwareInterfaceArduino.new(true)
13
+
14
+ @ramps_param = Fb::HardwareInterfaceParam.new
15
+ @ramps_param.ramps_arduino = @ramps
16
+
17
+ @ramps.ramps_param = @ramps_param
18
+
19
+ end
20
+
21
+ # def load_param_values_non_arduino
22
+
23
+ it "load param values non arduino" do
24
+
25
+ x_per_unit = rand(9999999).to_i
26
+ y_per_unit = rand(9999999).to_i
27
+ z_per_unit = rand(9999999).to_i
28
+
29
+
30
+
31
+
32
+
33
+
34
+ @ramps_param.load_param_values_non_arduino()
35
+
36
+ expect(@ramps_param.axis_x_steps_per_unit).to eq(x_per_unit)
37
+ expect(@ramps_param.axis_y_steps_per_unit).to eq(y_per_unit)
38
+ expect(@ramps_param.axis_z_steps_per_unit).to eq(z_per_unit)
39
+
40
+ end
41
+
42
+
43
+
44
+ it "load config from database" do
45
+
46
+ x_per_unit = rand(9999999).to_i
47
+ name = 'MOVEMENT_STEPS_PER_UNIT_X'
48
+
49
+
50
+
51
+
52
+ x_per_unit_retrieved = 0
53
+
54
+ @ramps_param.params.each do |p|
55
+ if p['name'] == name
56
+ x_per_unit_retrieved = p['value_db']
57
+ end
58
+ end
59
+
60
+ expect(x_per_unit_retrieved).to eq(x_per_unit)
61
+
62
+ end
63
+
64
+ # def load_param_names
65
+
66
+ it "load param names" do
67
+ @ramps_param.params = []
68
+ @ramps_param.load_param_names()
69
+
70
+ expect(@ramps_param.params.count).to eq($arduino_default_params.count)
71
+ end
72
+
73
+ # def param_name_add(name, id, default)
74
+
75
+ it "param name add" do
76
+
77
+ name = rand(9999999).to_s
78
+ id = rand(9999999).to_i
79
+ default = rand(9999999).to_i
80
+
81
+ @ramps_param.param_name_add(name, id, default)
82
+
83
+ param = nil
84
+ @ramps_param.params.each do |p|
85
+ if p['name'] == name
86
+ param = p
87
+ end
88
+ end
89
+
90
+ expect(param['name']).to eq(name)
91
+ expect(param['id']).to eq(id)
92
+ expect(param['default']).to eq(default)
93
+
94
+ # repeat again so the part where the param already exists is ran too
95
+ @ramps_param.param_name_add(name, id, default)
96
+
97
+ end
98
+
99
+ # def get_param_by_name(name)
100
+
101
+ it "get param by name" do
102
+ name = rand(9999999).to_s
103
+ id = rand(9999999).to_i
104
+ default = rand(9999999).to_i
105
+
106
+ @ramps_param.param_name_add(name, id, default)
107
+ param = @ramps_param.get_param_by_name(name)
108
+
109
+ expect(param['name']).to eq(name)
110
+ expect(param['id']).to eq(id)
111
+ expect(param['default']).to eq(default)
112
+ end
113
+
114
+ # def get_param_by_id(id)
115
+
116
+ it "get param by id" do
117
+ name = rand(9999999).to_s
118
+ id = rand(9999999).to_i
119
+ default = rand(9999999).to_i
120
+
121
+ @ramps_param.param_name_add(name, id, default)
122
+ param = @ramps_param.get_param_by_id(id)
123
+
124
+ expect(param['name']).to eq(name)
125
+ expect(param['id']).to eq(id)
126
+ expect(param['default']).to eq(default)
127
+ end
128
+
129
+ # def get_param(name_or_id, by_name_or_id)
130
+
131
+ it "get param (by id)" do
132
+ name = rand(9999999).to_s
133
+ id = rand(9999999).to_i
134
+ default = rand(9999999).to_i
135
+
136
+ @ramps_param.param_name_add(name, id, default)
137
+ param = @ramps_param.get_param(id, :by_id)
138
+
139
+ expect(param['name']).to eq(name)
140
+ expect(param['id']).to eq(id)
141
+ expect(param['default']).to eq(default)
142
+ end
143
+
144
+ it "get param (by name)" do
145
+
146
+ name = rand(9999999).to_s
147
+ id = rand(9999999).to_i
148
+ default = rand(9999999).to_i
149
+
150
+ @ramps_param.param_name_add(name, id, default)
151
+ param = @ramps_param.get_param(name, :by_name)
152
+
153
+ expect(param['name']).to eq(name)
154
+ expect(param['id']).to eq(id)
155
+ expect(param['default']).to eq(default)
156
+ end
157
+
158
+ # def save_param_value(name_or_id, by_name_or_id, from_device_or_db, value)
159
+
160
+ it "save param value (by id, by device)" do
161
+ name = rand(9999999).to_s
162
+ id = rand(9999999).to_i
163
+ default = rand(9999999).to_i
164
+ value = rand(9999999).to_i
165
+
166
+ @ramps_param.param_name_add(name, id, default)
167
+ @ramps_param.save_param_value(id, :by_id, :from_device, value)
168
+ param = @ramps_param.get_param(id, :by_id)
169
+
170
+ expect(param['name']).to eq(name)
171
+ expect(param['id']).to eq(id)
172
+ expect(param['default']).to eq(default)
173
+ expect(param['value_ar']).to eq(value)
174
+
175
+ end
176
+
177
+ it "save param value (by name, by device)" do
178
+ name = rand(9999999).to_s
179
+ id = rand(9999999).to_i
180
+ default = rand(9999999).to_i
181
+ value = rand(9999999).to_i
182
+
183
+ @ramps_param.param_name_add(name, id, default)
184
+ @ramps_param.save_param_value(name, :by_name, :from_device, value)
185
+ param = @ramps_param.get_param(name, :by_name)
186
+
187
+ expect(param['name']).to eq(name)
188
+ expect(param['id']).to eq(id)
189
+ expect(param['default']).to eq(default)
190
+ expect(param['value_ar']).to eq(value)
191
+
192
+ end
193
+
194
+ it "save param value (by id, by database)" do
195
+ name = rand(9999999).to_s
196
+ id = rand(9999999).to_i
197
+ default = rand(9999999).to_i
198
+ value = rand(9999999).to_i
199
+
200
+ @ramps_param.param_name_add(name, id, default)
201
+ @ramps_param.save_param_value(id, :by_id, :from_db, value)
202
+ param = @ramps_param.get_param(id, :by_id)
203
+
204
+ expect(param['name']).to eq(name)
205
+ expect(param['id']).to eq(id)
206
+ expect(param['default']).to eq(default)
207
+ expect(param['value_db']).to eq(value)
208
+
209
+ end
210
+
211
+ it "save param value (by name, by database)" do
212
+ name = rand(9999999).to_s
213
+ id = rand(9999999).to_i
214
+ default = rand(9999999).to_i
215
+ value = rand(9999999).to_i
216
+
217
+ @ramps_param.param_name_add(name, id, default)
218
+ @ramps_param.save_param_value(name, :by_name, :from_db, value)
219
+ param = @ramps_param.get_param(name, :by_name)
220
+
221
+ expect(param['name']).to eq(name)
222
+ expect(param['id']).to eq(id)
223
+ expect(param['default']).to eq(default)
224
+ expect(param['value_db']).to eq(value)
225
+
226
+ end
227
+
228
+ # def read_parameter_from_device(id)
229
+
230
+ it "read parameter from device" do
231
+
232
+ id = 1
233
+ value = rand(9999999).to_i
234
+
235
+ @ramps.clean_serial_buffer()
236
+ @ramps.serial_port.test_serial_write = ""
237
+ @ramps.serial_port.test_serial_read = "R01\nR21 P#{id} V#{value}\nR02\n"
238
+ @ramps_param.read_parameter_from_device(id)
239
+ param = @ramps_param.get_param(id, :by_id)
240
+
241
+ expect(param['id']).to eq(id)
242
+ expect(param['value_ar']).to eq(value)
243
+ end
244
+
245
+ # def write_parameter_to_device(id, value)
246
+
247
+ it "write parameter to device" do
248
+
249
+ id = 1
250
+ default = rand(9999999).to_i
251
+ value = rand(9999999).to_i
252
+
253
+ @ramps_param.save_param_value(id, :by_id, :from_db, value)
254
+
255
+ @ramps.clean_serial_buffer()
256
+ @ramps.serial_port.test_serial_write = ""
257
+ @ramps.serial_port.test_serial_read = "R01\nR02\n"
258
+
259
+ @ramps_param.write_parameter_to_device(id, value)
260
+
261
+ expect(@ramps.serial_port.test_serial_write).to eq("F22 P#{id} V#{value}\n")
262
+
263
+ end
264
+
265
+ # def update_param_version_ar
266
+
267
+ it "update parameter version from arduino" do
268
+
269
+ id = 0
270
+ value = rand(9999999).to_i
271
+
272
+ @ramps.clean_serial_buffer()
273
+ @ramps.serial_port.test_serial_write = ""
274
+ @ramps.serial_port.test_serial_read = "R01\nR21 P#{id} V#{value}\nR02\n"
275
+
276
+ @ramps_param.update_param_version_ar()
277
+
278
+ expect(@ramps_param.param_version_ar).to eq(value)
279
+ end
280
+
281
+ # def parameters_different
282
+
283
+ it "parameters different false" do
284
+
285
+ @ramps.serial_port.test_serial_write = ""
286
+ @ramps.serial_port.test_serial_read = ""
287
+
288
+ @ramps_param.params.each do |p|
289
+ p['value_ar'] = p['value_db']
290
+ @ramps.serial_port.test_serial_read = @ramps.serial_port.test_serial_read + "R02\n"
291
+ end
292
+
293
+ different = @ramps_param.parameters_different()
294
+
295
+ expect(different).to eq(false)
296
+ end
297
+
298
+ it "parameters different true" do
299
+
300
+ id = 11
301
+ value = rand(9999999).to_i
302
+
303
+ @ramps.serial_port.test_serial_write = ""
304
+ @ramps.serial_port.test_serial_read = ""
305
+
306
+ @ramps_param.params.each do |p|
307
+ p['value_ar'] = p['value_db']
308
+ @ramps.serial_port.test_serial_read = @ramps.serial_port.test_serial_read + "R02\n"
309
+ end
310
+
311
+ @ramps_param.save_param_value(id, :by_id, :from_db, value)
312
+
313
+ different = @ramps_param.parameters_different()
314
+
315
+ expect(different).to eq(true)
316
+ end
317
+
318
+ # def check_and_write_parameter(param)
319
+
320
+ it "check and write one parameter, test with similar" do
321
+
322
+ name = 'TESTING'
323
+ id = 1
324
+ value = rand(9999999).to_i
325
+ value2 = rand(9999999).to_i
326
+
327
+
328
+
329
+ param = @ramps_param.get_param(id, :by_id)
330
+
331
+ @ramps.serial_port.test_serial_write = ""
332
+ @ramps.serial_port.test_serial_read = "R01\nR21 P#{id} V#{value}\nR02\nR02\n"
333
+
334
+ differences_found = @ramps_param.check_and_write_parameter(param)
335
+
336
+ expect(differences_found).to eq(false)
337
+ end
338
+
339
+ it "check and write one parameter, test with different" do
340
+
341
+ name = 'TESTING'
342
+ id = 1
343
+ value = rand(9999999).to_i
344
+ value2 = rand(9999999).to_i
345
+
346
+
347
+
348
+ param = @ramps_param.get_param(id, :by_id)
349
+ @ramps.serial_port.test_serial_write = ""
350
+ @ramps.serial_port.test_serial_read = "R01\nR21 P#{id} V#{value2}\nR02\nR02\n"
351
+
352
+ differences_found = @ramps_param.check_and_write_parameter(param)
353
+
354
+ expect(differences_found).to eq(true)
355
+ expect(@ramps.serial_port.test_serial_write).to eq("F22 P#{id} V#{value}\n")
356
+ end
357
+
358
+
359
+ # def compare_and_write_parameters
360
+
361
+ it "compare and write paramters, different" do
362
+
363
+ name = 'TESTING'
364
+ id = 1
365
+
366
+ value0 = rand(9999999).to_i
367
+ value1 = rand(9999999).to_i
368
+ value2 = rand(9999999).to_i
369
+ value3 = rand(9999999).to_i
370
+ value4 = rand(9999999).to_i
371
+
372
+ @ramps.serial_port.test_serial_write = ""
373
+ @ramps.serial_port.test_serial_read = ""
374
+
375
+
376
+
377
+ @ramps_param.param_version_db = value3
378
+ @ramps_param.param_version_ar = value4
379
+
380
+ @ramps_param.params.each do |p|
381
+ p['value_ar'] = p['value_db']
382
+ end
383
+
384
+ @ramps_param.params.each do |p|
385
+ if p['id'] == id
386
+ p['value_ar'] = value1
387
+ p['value_db'] = value2
388
+ end
389
+ end
390
+
391
+ #@ramps_param.save_param_value(id, :by_id, :from_db, value)
392
+ @ramps.serial_port.test_serial_write = ""
393
+ @ramps.serial_port.test_serial_read = ""
394
+
395
+ feedback = ""
396
+ @ramps_param.params.each do |p|
397
+ if p['id'] != 0
398
+ feedback = feedback + "R01\nR02\n"
399
+ end
400
+ end
401
+ feedback = feedback + "R01\nR02\n"
402
+ @ramps.serial_port.test_serial_read = feedback
403
+
404
+ @ramps_param.compare_and_write_parameters()
405
+
406
+ expect(@ramps.serial_port.test_serial_write).to eq("F22 P#{id} V#{value0}\n")
407
+ expect(@ramps_param.params_in_sync).to eq(false)
408
+ end
409
+
410
+ it "compare and write paramters, no difference" do
411
+
412
+ name = 'TESTING'
413
+ id = 1
414
+
415
+ value = rand(9999999).to_i
416
+
417
+ @ramps.serial_port.test_serial_write = ""
418
+ @ramps.serial_port.test_serial_read = ""
419
+
420
+ @ramps_param.param_version_db = value
421
+ @ramps_param.param_version_ar = value
422
+
423
+ feedback = ""
424
+ @ramps_param.params.each do |p|
425
+ if p['id'] != 0
426
+ feedback = feedback + "R01\nR02\n"
427
+ end
428
+ end
429
+ @ramps.serial_port.test_serial_read = feedback
430
+
431
+ @ramps_param.compare_and_write_parameters()
432
+
433
+ expect(@ramps.serial_port.test_serial_write).to eq("")
434
+ expect(@ramps_param.params_in_sync).to eq(true)
435
+ end
436
+
437
+ it "compare and write paramters, different version, all parameters identical" do
438
+
439
+ name = 'TESTING'
440
+ id = 1
441
+
442
+ value = rand(9999999).to_i
443
+
444
+ @ramps.serial_port.test_serial_write = ""
445
+ @ramps.serial_port.test_serial_read = ""
446
+
447
+ @ramps_param.params.each do |p|
448
+ p['value_ar'] = p['value_db']
449
+ end
450
+
451
+ @ramps_param.param_version_db = value
452
+ @ramps_param.param_version_ar = value - 1
453
+
454
+
455
+
456
+ feedback = ""
457
+ @ramps_param.params.each do |p|
458
+ if p['id'] != 0
459
+ feedback = feedback + "R01\nR02\n"
460
+ end
461
+ end
462
+ feedback = feedback + "R01\nR02\n"
463
+ @ramps.serial_port.test_serial_read = feedback
464
+ @ramps.serial_port.test_serial_write = ""
465
+
466
+ @ramps_param.compare_and_write_parameters()
467
+
468
+ expect(@ramps.serial_port.test_serial_write).to eq("F22 P0 V#{value}\n")
469
+ expect(@ramps_param.params_in_sync).to eq(true)
470
+ end
471
+
472
+
473
+ # def check_parameters
474
+
475
+ it "check parameter, no difference" do
476
+
477
+ name = 'TESTING'
478
+ id = 1
479
+
480
+ db_version = rand(9999999).to_i
481
+
482
+
483
+
484
+ feedback = ""
485
+ feedback = feedback + "R01\nR21 P0 V#{db_version}\nR02\n"
486
+ @ramps_param.params.each do |p|
487
+ if p['id'] != 0
488
+ feedback = feedback + "R01\nR02\n"
489
+ end
490
+ end
491
+ #feedback = feedback + "R01\nR02\n"
492
+
493
+ @ramps.serial_port.test_serial_read = feedback
494
+ @ramps.serial_port.test_serial_write = ""
495
+
496
+ #@ramps.serial_port.test_serial_read =
497
+
498
+ @ramps_param.check_parameters()
499
+
500
+ expect(@ramps_param.params_in_sync).to eq(true)
501
+
502
+ end
503
+
504
+ it "check parameter, different" do
505
+
506
+ name = 'TESTING'
507
+ id = 1
508
+
509
+ db_version = rand(9999999).to_i
510
+ ar_version = rand(9999999).to_i
511
+
512
+ value0 = rand(9999999).to_i
513
+ value1 = rand(9999999).to_i
514
+ value2 = rand(9999999).to_i
515
+
516
+ @ramps.serial_port.test_serial_write = ""
517
+ @ramps.serial_port.test_serial_read = ""
518
+
519
+
520
+
521
+
522
+
523
+ feedback = ""
524
+ feedback = feedback + "R01\nR21 P0 V#{ar_version}\nR02\n"
525
+ @ramps_param.params.each do |p|
526
+ if p['id'] != 0
527
+ feedback = feedback + "R01\nR02\n"
528
+ end
529
+ end
530
+ feedback = feedback + "R01\nR02\n"
531
+ @ramps.serial_port.test_serial_write = ""
532
+ @ramps.serial_port.test_serial_read = feedback
533
+
534
+ # make sure all parameters in device and database are equal
535
+ @ramps_param.params.each do |p|
536
+ p['value_ar'] = p['value_db']
537
+ end
538
+
539
+ # then only change one parameter
540
+ @ramps_param.params.each do |p|
541
+ if p['id'] == id
542
+ p['value_ar'] = value1
543
+ p['value_db'] = value2
544
+ end
545
+ end
546
+
547
+ @ramps_param.check_parameters()
548
+
549
+ expect(@ramps_param.params_in_sync).to eq(false)
550
+ expect(@ramps.serial_port.test_serial_write).to eq("F22 P#{id} V#{value0}\n")
551
+
552
+ end
553
+
554
+ end
555
+