Skip to content

Commit 949645c

Browse files
committed
Merge branch 'nakano16180-feature/add-tests'
2 parents 64bb622 + da8154d commit 949645c

File tree

5 files changed

+77
-93
lines changed

5 files changed

+77
-93
lines changed

pymycobot/common.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,10 @@ def _encode_int8(self, data):
8787
return struct.pack("b", data)
8888

8989
def _encode_int16(self, data):
90-
return list(struct.pack(">h", data))
90+
if isinstance(data, int):
91+
return list(struct.pack(">h", data))
92+
else:
93+
return sum([list(struct.pack('>h', elem)) for elem in data], [])
9194

9295
def _decode_int8(self, data):
9396
return struct.unpack("b", data)[0]

pymycobot/generate.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ def send_angle(self, id, degree, speed):
185185
degree (float): angle value.
186186
speed (int): 0 ~ 100
187187
"""
188-
self.calibration_parameters(id=id, degree=degree, speed=speed)
188+
calibration_parameters(id=id, degree=degree, speed=speed)
189189
return self._mesg(ProtocolCode.SEND_ANGLE, id, [self._angle2int(degree)], speed)
190190

191191
# @check_parameters(Command.SEND_ANGLES)
@@ -198,7 +198,7 @@ def send_angles(self, degrees, speed):
198198
example for mypalletizer [0.0, 0.0, 0.0, 0.0]
199199
speed (int): 0 ~ 100
200200
"""
201-
self.calibration_parameters(degrees=degrees, speed=speed)
201+
calibration_parameters(degrees=degrees, speed=speed)
202202
degrees = [self._angle2int(degree) for degree in degrees]
203203
return self._mesg(ProtocolCode.SEND_ANGLES, degrees, speed)
204204

@@ -220,7 +220,7 @@ def send_coord(self, id, coord, speed):
220220
coord(float): mm
221221
speed(int): 0 ~ 100
222222
"""
223-
self.calibration_parameters(id=id, speed=speed)
223+
calibration_parameters(id=id, speed=speed)
224224
value = self._coord2int(coord) if id <= 3 else self._angle2int(coord)
225225
return self._mesg(ProtocolCode.SEND_COORD, id, [value], speed)
226226

@@ -234,7 +234,7 @@ def send_coords(self, coords, speed, mode):
234234
speed(int);
235235
mode(int): 0 - angluar, 1 - linear
236236
"""
237-
self.calibration_parameters(coords=coords, speed=speed)
237+
calibration_parameters(coords=coords, speed=speed)
238238
coord_list = []
239239
for idx in range(3):
240240
coord_list.append(self._coord2int(coords[idx]))
@@ -255,14 +255,14 @@ def is_in_position(self, data, id=0):
255255
-1: error data
256256
"""
257257
if id == 1:
258-
self.calibration_parameters(coords=data)
258+
calibration_parameters(coords=data)
259259
data_list = []
260260
for idx in range(3):
261261
data_list.append(self._coord2int(data[idx]))
262262
for idx in range(3, 6):
263263
data_list.append(self._angle2int(data[idx]))
264264
elif id == 0:
265-
self.calibration_parameters(degrees=data)
265+
calibration_parameters(degrees=data)
266266
data_list = [self._angle2int(i) for i in data]
267267
else:
268268
raise Exception("id is not right, please input 0 or 1")
@@ -363,7 +363,7 @@ def set_speed(self, speed):
363363
Args:
364364
speed (int): 0 - 100
365365
"""
366-
self.calibration_parameters(speed=speed)
366+
calibration_parameters(speed=speed)
367367
return self._mesg(ProtocolCode.SET_SPEED, speed)
368368

369369
"""
@@ -379,11 +379,11 @@ def get_acceleration(self):
379379
"""
380380

381381
def get_joint_min_angle(self, joint_id):
382-
self.calibration_parameters(id=joint_id)
382+
calibration_parameters(id=joint_id)
383383
return self._mesg(ProtocolCode.GET_JOINT_MIN_ANGLE, joint_id, has_reply=True)
384384

385385
def get_joint_max_angle(self, joint_id):
386-
self.calibration_parameters(id=joint_id)
386+
calibration_parameters(id=joint_id)
387387
return self._mesg(ProtocolCode.GET_JOINT_MAX_ANGLE, joint_id, has_reply=True)
388388

389389
# Servo control
@@ -437,7 +437,7 @@ def set_color(self, r=0, g=0, b=0):
437437
b (int): 0 ~ 255
438438
439439
"""
440-
self.calibration_parameters(rgb=[r, g, b])
440+
calibration_parameters(rgb=[r, g, b])
441441
return self._mesg(ProtocolCode.SET_COLOR, r, g, b)
442442

443443
def set_pin_mode(self, pin_no, pin_mode):
@@ -489,7 +489,7 @@ def set_gripper_value(self, value, speed):
489489
value (int): 0 ~ 100
490490
speed (int): 0 ~ 100
491491
"""
492-
self.calibration_parameters(speed=speed)
492+
calibration_parameters(speed=speed)
493493
return self._mesg(ProtocolCode.SET_GRIPPER_VALUE, value, speed)
494494

495495
def set_gripper_ini(self):

requirements.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
pyserial
2-
pytext
3-
flask8
4-
black
2+
pytest
3+
flake8

setup.py

100755100644
File mode changed.

tests/test_generator.py

Lines changed: 60 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -8,89 +8,71 @@
88

99
from pymycobot import MyCobotCommandGenerator
1010

11-
mg: MyCobotCommandGenerator
12-
1311

1412
@pytest.fixture(scope="module")
15-
def setup():
16-
global mg
13+
def mcg():
1714
print("")
1815
DEBUG = False
1916
mg = MyCobotCommandGenerator(debug=DEBUG)
2017
print("")
18+
return mg
2119

20+
def test_flatten1(mcg):
21+
assert mcg._flatten([1,2,3,4,5,6]) == [1,2,3,4,5,6]
2222

23-
def test_generator(setup):
24-
print("")
25-
pprint(mg.send_coords([-160, 160, 160, 0, 0, 0], 7, 2))
26-
print("")
27-
pprint(mg.version())
28-
print("")
29-
pprint(mg.power_on())
30-
print("")
31-
pprint(mg.power_off())
32-
print("")
33-
pprint(mg.release_all_servos())
34-
print("")
35-
pprint(mg.is_controller_connected())
36-
print("")
37-
pprint(mg.get_angles())
38-
print("")
39-
pprint(mg.send_angle(1, 0, 10))
40-
print("")
41-
pprint(mg.send_angles([0, 0, 0, 0, 0, 0], 5))
42-
print("")
43-
pprint(mg.get_coords())
44-
print("")
45-
pprint(mg.send_coord(1, 110.5, 8))
46-
print("pause")
47-
pprint(mg.pause())
48-
print("is_paused")
49-
pprint(mg.is_paused())
50-
print("resume")
51-
pprint(mg.resume())
52-
print("stop")
53-
pprint(mg.stop())
54-
print("is_in_position")
55-
pprint(mg.is_in_position([0, 0, 0, 0, 0, 0], 0))
56-
print("")
57-
pprint(mg.is_moving())
58-
print("")
59-
pprint(mg.jog_angle(1, 0, 1))
60-
print("")
61-
pprint(mg.jog_coord(2, 1, 3))
62-
print("")
63-
pprint(mg.jog_stop())
64-
print("set_encoder")
65-
pprint(mg.set_encoder(1, 1024))
66-
print("get_encoder")
67-
pprint(mg.get_encoder(2))
68-
print("get_speed")
69-
pprint(mg.get_speed())
70-
print("set_speed")
71-
pprint(mg.set_speed(100))
72-
print("get_joint_min_angle")
73-
pprint(mg.get_joint_min_angle(1))
74-
print("get_joint_max_angle")
75-
pprint(mg.get_joint_max_angle(2))
76-
print("is_servo_enable")
77-
pprint(mg.is_servo_enable(6))
78-
print("is_all_servo_enable")
79-
pprint(mg.is_all_servo_enable())
80-
print("set_servo_data")
81-
pprint(mg.set_servo_data(0, 1, 2))
82-
print("get_servo_data")
83-
pprint(mg.get_servo_data(1, 2))
84-
print("set_servo_calibration")
85-
pprint(mg.set_servo_calibration(1))
86-
print("release_servo")
87-
pprint(mg.release_servo(1))
88-
print("focus_servo")
89-
pprint(mg.focus_servo(1))
90-
print("set_color")
91-
pprint(mg.set_color(255, 255, 0))
92-
print("set_pin_mode")
93-
pprint(mg.set_pin_mode(1, 0))
94-
print("set_digital_output")
95-
pprint(mg.set_digital_output(0, 1))
96-
pprint(mg)
23+
def test_flatten2(mcg):
24+
assert mcg._flatten([1,2,3,4,[],5]) == [1,2,3,4,5]
25+
26+
def test_flatten3(mcg):
27+
assert mcg._flatten([1,2,3,4,[5,6],7]) == [1,2,3,4,5,6,7]
28+
29+
def test_encode_int16(mcg):
30+
assert mcg._encode_int16([0, 1]) == sum([mcg._encode_int16(0), mcg._encode_int16(1)], [])
31+
32+
def test_process_data_command1(mcg):
33+
assert mcg._process_data_command(()) == []
34+
35+
def test_process_data_command2(mcg):
36+
assert mcg._process_data_command((1, 2, 3)) == [1, 2, 3]
37+
38+
def test_process_data_command3(mcg):
39+
assert mcg._process_data_command((1, 2, [1, 2])) == mcg._flatten([1, 2, mcg._encode_int16([1, 2])])
40+
41+
def test_version(mcg):
42+
assert mcg.version() == ([0xFE, 0xFE, 2, 0x00, 0xFA], True)
43+
44+
def test_power_on(mcg):
45+
assert mcg.power_on() == ([0xFE, 0xFE, 2, 0x10, 0xFA], False)
46+
47+
def test_power_off(mcg):
48+
assert mcg.power_off() == ([0xFE, 0xFE, 2, 0x11, 0xFA], False)
49+
50+
def test_release_all_servos(mcg):
51+
assert mcg.release_all_servos() == ([0xFE, 0xFE, 2, 0x13, 0xFA], False)
52+
53+
def test_is_controller_connected(mcg):
54+
assert mcg.is_controller_connected() == ([0xFE, 0xFE, 2, 0x14, 0xFA], True)
55+
56+
def test_get_angles(mcg):
57+
assert mcg.get_angles() == ([0xFE, 0xFE, 2, 0x20, 0xFA], True)
58+
59+
def test_get_coords(mcg):
60+
assert mcg.get_coords() == ([0xFE, 0xFE, 2, 0x23, 0xFA], True)
61+
62+
def test_is_in_position(mcg):
63+
assert mcg.is_in_position([0, 0, 0, 0, 0, 0], 0) == (mcg._flatten([0xFE, 0xFE, 15, 0x2A, mcg._flatten([mcg._encode_int16([0, 0, 0, 0, 0, 0]), 0]), 0xFA]), True)
64+
65+
def test_pause(mcg):
66+
assert mcg.pause() == ([0xFE, 0xFE, 2, 0x26, 0xFA], False)
67+
68+
def test_resume(mcg):
69+
assert mcg.resume() == ([0xFE, 0xFE, 2, 0x28, 0xFA], False)
70+
71+
def test_stop(mcg):
72+
assert mcg.stop() == ([0xFE, 0xFE, 2, 0x29, 0xFA], False)
73+
74+
def test_set_pin_mode(mcg):
75+
assert mcg.set_pin_mode(1, 0) == ([0xFE, 0xFE, 4, 0x60, 1, 0, 0xFA], False)
76+
77+
def test_set_digital_output(mcg):
78+
assert mcg.set_digital_output(0, 1) == ([0xFE, 0xFE, 4, 0x61, 0, 1, 0xFA], False)

0 commit comments

Comments
 (0)