forked from marcoschwartz/aREST
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserial_test.py
131 lines (100 loc) · 3.43 KB
/
serial_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Test for the aREST library using Serial
# Imports
import serial
import time
import json
import unittest
# Serial port parameters
serial_speed = 115200
serial_port = '/dev/tty.usbmodem1a12121'
class TestSequenceFunctions(unittest.TestCase):
# Setup
def setUp(self):
# Open Serial connection
self.serial = serial.Serial(serial_port, serial_speed, timeout=1)
time.sleep(2)
# Mode basic test
def test_mode(self):
# Input
self.serial.write("/mode/6/i\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['message'],"Pin D6 set to input")
# Output
self.serial.write("/mode/6/o\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['message'],"Pin D6 set to output")
# Digital write basic test
def test_digital_write(self):
# HIGH
self.serial.write("/digital/6/1\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['message'],"Pin D6 set to 1")
# LOW
self.serial.write("/digital/6/0\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['message'],"Pin D6 set to 0")
# Digital read basic test
def test_digital_read(self):
# Set to LOW
self.serial.write("/digital/6/0\r")
answer = json.loads(self.serial.readline())
# Read
self.serial.write("/digital/6\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['return_value'],0)
# Analog write basic test
def test_analog_write(self):
# Set to 100
self.serial.write("/analog/6/100\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['message'],"Pin D6 set to 100")
# Set to 0
self.serial.write("/analog/6/0\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['message'],"Pin D6 set to 0")
# Analog read basic test
def test_analog_read(self):
# Read
self.serial.write("/analog/6\r")
answer = json.loads(self.serial.readline())
self.assertGreaterEqual(answer['return_value'],0)
self.assertLessEqual(answer['return_value'],1023)
# Digital write + check test
def test_digital_check(self):
# Set to Output
self.serial.write("/mode/6/o\r")
answer = json.loads(self.serial.readline())
# Set to HIGH
self.serial.write("/digital/6/1\r")
answer = json.loads(self.serial.readline())
# Read
self.serial.write("/digital/6\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['return_value'],1)
# Variable write check
def test_variable(self):
# Get variable
self.serial.write("/temperature\r")
answer = json.loads(self.serial.readline())
self.assertGreaterEqual(answer['temperature'],0)
self.assertLessEqual(answer['temperature'],40)
# Function call check
def test_function(self):
# Call function
self.serial.write("/led?params=1\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['return_value'],1)
# Read
self.serial.write("/digital/6\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['return_value'],1)
# Call function
self.serial.write("/led?params=0\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['return_value'],1)
# Read
self.serial.write("/digital/6\r")
answer = json.loads(self.serial.readline())
self.assertEqual(answer['return_value'],0)
if __name__ == '__main__':
unittest.main()