@@ -13,54 +13,6 @@ 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);
@@ -73,23 +25,23 @@ void assertStringsEqual(Test& __test__, const char* expected, const String& actu
73
25
74
26
test (beginPrintsVersion)
75
27
{
76
- InMemoryStream stream;
28
+ FakeStream stream;
77
29
78
30
Firmata.begin (stream);
79
31
80
32
char expected[] =
81
33
{
82
- 0xF9 , // Version reporting identifier
83
- 2 , // Major version number
84
- 3 , // Minor version number
34
+ REPORT_VERSION,
35
+ FIRMATA_MAJOR_VERSION,
36
+ FIRMATA_MINOR_VERSION,
85
37
0
86
38
};
87
39
assertStringsEqual (__test__, expected, stream.bytesWritten ());
88
40
}
89
41
90
42
void processMessage (const byte* message, size_t length)
91
43
{
92
- InMemoryStream stream;
44
+ FakeStream stream;
93
45
Firmata.begin (stream);
94
46
95
47
for (size_t i = 0 ; i < length; i++)
@@ -178,3 +130,12 @@ test(specifiedDigitalWritePort)
178
130
assertEquals (1 , _digitalPort);
179
131
}
180
132
133
+ test (setFirmwareVersionDoesNotLeakMemory)
134
+ {
135
+ Firmata.setFirmwareVersion (1 , 0 );
136
+ int initialMemory = freeMemory ();
137
+
138
+ Firmata.setFirmwareVersion (1 , 0 );
139
+
140
+ assertEquals (0 , initialMemory - freeMemory ());
141
+ }
0 commit comments