@@ -13,83 +13,47 @@ void loop()
13
13
suite.run ();
14
14
}
15
15
16
- class InMemoryStream : public Stream
17
- {
18
- public:
19
- virtual ~InMemoryStream ()
20
- {
21
- }
22
-
23
- size_t write (uint8_t val)
24
- {
25
- _bytesWritten += (char ) val;
26
-
27
- return size_t (1 );
28
- }
29
-
30
- void flush ()
31
- {
32
- }
33
-
34
- const String& bytesWritten ()
35
- {
36
- return _bytesWritten;
37
- }
38
-
39
- void nextByte (byte b)
40
- {
41
- _nextByte = b;
42
- }
43
-
44
- int available ()
45
- {
46
- return 1 ;
47
- }
48
-
49
- int read ()
50
- {
51
- return _nextByte;
52
- }
53
-
54
- int peek ()
55
- {
56
- return _nextByte;
57
- }
58
-
59
- private:
60
- String _bytesWritten;
61
- byte _nextByte;
62
- };
63
-
64
16
void assertStringsEqual (Test& __test__, const char * expected, const String& actual)
65
17
{
66
18
size_t expectedLength = strlen (expected);
67
19
assertEquals (expectedLength, actual.length ());
68
- for (size_t i = 0 ; i < strlen (expected) ; i++)
20
+ for (size_t i = 0 ; i < expectedLength ; i++)
69
21
{
70
22
assertEquals (expected[i], actual[i]);
71
23
}
72
24
}
73
25
26
+ test (setFirmwareVersionDoesNotLeakMemory)
27
+ {
28
+ Firmata.setFirmwareVersion (1 , 0 );
29
+ int initialMemory = freeMemory ();
30
+
31
+ Firmata.setFirmwareVersion (1 , 0 );
32
+
33
+ assertEquals (0 , initialMemory - freeMemory ());
34
+
35
+ Firmata.unsetFirmwareVersion ();
36
+ }
37
+
74
38
test (beginPrintsVersion)
75
39
{
76
- InMemoryStream stream;
40
+ FakeStream stream;
77
41
78
42
Firmata.begin (stream);
79
43
80
44
char expected[] =
81
45
{
82
- 0xF9 , // Version reporting identifier
83
- 2 , // Major version number
84
- 3 , // Minor version number
46
+ REPORT_VERSION,
47
+ FIRMATA_MAJOR_VERSION,
48
+ FIRMATA_MINOR_VERSION,
85
49
0
86
50
};
87
51
assertStringsEqual (__test__, expected, stream.bytesWritten ());
88
52
}
89
53
90
54
void processMessage (const byte* message, size_t length)
91
55
{
92
- InMemoryStream stream;
56
+ FakeStream stream;
93
57
Firmata.begin (stream);
94
58
95
59
for (size_t i = 0 ; i < length; i++)
@@ -107,8 +71,14 @@ void writeToDigitalPort(byte port, int value)
107
71
_digitalPortValue = value;
108
72
}
109
73
74
+ void setupDigitalPort () {
75
+ _digitalPort = 0 ;
76
+ _digitalPortValue = 0 ;
77
+ }
78
+
110
79
test (processWriteDigital_0)
111
80
{
81
+ setupDigitalPort ();
112
82
Firmata.attach (DIGITAL_MESSAGE, writeToDigitalPort);
113
83
114
84
byte message[] = { DIGITAL_MESSAGE, 0 , 0 };
@@ -119,6 +89,7 @@ test(processWriteDigital_0)
119
89
120
90
test (processWriteDigital_127)
121
91
{
92
+ setupDigitalPort ();
122
93
Firmata.attach (DIGITAL_MESSAGE, writeToDigitalPort);
123
94
124
95
byte message[] = { DIGITAL_MESSAGE, 127 , 0 };
@@ -127,18 +98,9 @@ test(processWriteDigital_127)
127
98
assertEquals (127 , _digitalPortValue);
128
99
}
129
100
130
- test (processWriteDigitalStripsTopBit)
131
- {
132
- Firmata.attach (DIGITAL_MESSAGE, writeToDigitalPort);
133
-
134
- byte message[] = { DIGITAL_MESSAGE, B11111111, 0 };
135
- processMessage (message, 3 );
136
-
137
- assertEquals (B01111111, _digitalPortValue);
138
- }
139
-
140
101
test (processWriteDigital_128)
141
102
{
103
+ setupDigitalPort ();
142
104
Firmata.attach (DIGITAL_MESSAGE, writeToDigitalPort);
143
105
144
106
byte message[] = { DIGITAL_MESSAGE, 0 , 1 };
@@ -149,6 +111,7 @@ test(processWriteDigital_128)
149
111
150
112
test (processWriteLargestDigitalValue)
151
113
{
114
+ setupDigitalPort ();
152
115
Firmata.attach (DIGITAL_MESSAGE, writeToDigitalPort);
153
116
154
117
byte message[] = { DIGITAL_MESSAGE, 0x7F , 0x7F };
@@ -160,6 +123,7 @@ test(processWriteLargestDigitalValue)
160
123
161
124
test (defaultDigitalWritePortIsZero)
162
125
{
126
+ setupDigitalPort ();
163
127
Firmata.attach (DIGITAL_MESSAGE, writeToDigitalPort);
164
128
165
129
byte message[] = { DIGITAL_MESSAGE, 0 , 0 };
@@ -170,6 +134,7 @@ test(defaultDigitalWritePortIsZero)
170
134
171
135
test (specifiedDigitalWritePort)
172
136
{
137
+ setupDigitalPort ();
173
138
Firmata.attach (DIGITAL_MESSAGE, writeToDigitalPort);
174
139
175
140
byte message[] = { DIGITAL_MESSAGE + 1 , 0 , 0 };
0 commit comments