Skip to content

Commit a986b25

Browse files
author
James Foster
committed
Add basic tests for new classes.
1 parent c85e1a0 commit a986b25

File tree

4 files changed

+113
-6
lines changed

4 files changed

+113
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#include <Arduino.h>
2+
#include <ArduinoUnitTests.h>
3+
#include <Client.h>
4+
#include <IPAddress.h>
5+
#include <Printable.h>
6+
#include <Server.h>
7+
#include <Udp.h>
8+
9+
// Provide some rudamentary tests for these classes
10+
// They get more thoroughly tested in SampleProjects/NetworkLib
11+
12+
unittest(Client) {
13+
Client client;
14+
assertEqual(0, client.available()); // subclass of Stream
15+
assertEqual(0, client.availableForWrite()); // subclass of Print
16+
String outData = "Hello, world!";
17+
client.println(outData);
18+
String inData = client.readString();
19+
assertEqual(outData + "\r\n", inData);
20+
}
21+
22+
unittest(IPAddress) {
23+
IPAddress ipAddress0;
24+
assertEqual(0, ipAddress0.asWord());
25+
uint32_t one = 0x01020304;
26+
IPAddress ipAddress1(one);
27+
assertEqual(one, ipAddress1.asWord());
28+
IPAddress ipAddress2(2, 3, 4, 5);
29+
assertEqual(0x05040302, ipAddress2.asWord());
30+
uint8_t bytes[] = {3, 4, 5, 6};
31+
IPAddress ipAddress3(bytes);
32+
assertEqual(0x06050403, ipAddress3.asWord());
33+
uint8_t *pBytes = ipAddress1.raw_address();
34+
assertEqual(*(pBytes + 0), 4);
35+
assertEqual(*(pBytes + 1), 3);
36+
assertEqual(*(pBytes + 2), 2);
37+
assertEqual(*(pBytes + 3), 1);
38+
IPAddress ipAddress1a(one);
39+
assertTrue(ipAddress1 == ipAddress1a);
40+
assertTrue(ipAddress1 != ipAddress2);
41+
assertEqual(1, ipAddress1[3]);
42+
ipAddress1[1] = 11;
43+
assertEqual(11, ipAddress1[1]);
44+
assertEqual(1, ipAddress0 + 1);
45+
}
46+
47+
class TestPrintable : public Printable {
48+
public:
49+
virtual size_t printTo(Print &p) const {
50+
p.print("TestPrintable");
51+
return 13;
52+
}
53+
};
54+
55+
unittest(Printable) {
56+
TestPrintable printable;
57+
Client client;
58+
client.print(printable);
59+
assertEqual("TestPrintable", client.readString());
60+
}
61+
62+
class TestServer : public Server {
63+
public:
64+
uint8_t data;
65+
virtual size_t write(uint8_t value) { data = value; };
66+
};
67+
68+
unittest(Server) {
69+
TestServer server;
70+
server.write(67);
71+
assertEqual(67, server.data);
72+
}
73+
74+
unittest(Udp) {
75+
UDP udp;
76+
assertEqual(0, udp.available()); // subclass of Stream
77+
assertEqual(0, udp.availableForWrite()); // subclass of Print
78+
String outData = "Hello, world!";
79+
udp.println(outData);
80+
String inData = udp.readString();
81+
assertEqual(outData + "\r\n", inData);
82+
}
83+
84+
unittest_main()

cpp/arduino/Client.h

+13-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@
33
#include <Stream.h>
44

55
class Client : public Stream {
6+
public:
7+
Client() {
8+
// The Stream mock defines a String buffer but never puts anyting in it!
9+
if (!mGodmodeDataIn) {
10+
mGodmodeDataIn = new String;
11+
}
12+
}
13+
virtual size_t write(uint8_t value) {
14+
mGodmodeDataIn->concat(value);
15+
return 1;
16+
}
17+
618
protected:
7-
uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); };
19+
uint8_t *rawIPAddress(IPAddress &addr) { return addr.raw_address(); }
820
};

cpp/arduino/IPAddress.h

+4-5
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ class IPAddress {
77
union {
88
uint8_t bytes[4];
99
uint32_t dword;
10-
operator uint8_t* () const { return (uint8_t*) bytes; }
10+
operator uint8_t *() const { return (uint8_t *)bytes; }
1111
} _address;
1212

1313
public:
1414
// Constructors
15-
IPAddress() { IPAddress(0, 0, 0, 0); }
15+
IPAddress() : IPAddress(0, 0, 0, 0) {}
1616
IPAddress(uint8_t octet1, uint8_t octet2, uint8_t octet3, uint8_t octet4) {
1717
_address.bytes[0] = octet1;
1818
_address.bytes[1] = octet2;
@@ -26,12 +26,11 @@ class IPAddress {
2626
_address.bytes[2] = bytes[2];
2727
_address.bytes[3] = bytes[3];
2828
}
29-
30-
IPAddress(unsigned long dword) { _address.dword = (uint32_t) dword; }
29+
IPAddress(unsigned long dword) { _address.dword = (uint32_t)dword; }
3130

3231
// Accessors
3332
uint32_t asWord() const { return _address.dword; }
34-
uint8_t *raw_address() { return _address.bytes; };
33+
uint8_t *raw_address() { return _address.bytes; }
3534

3635
// Comparisons
3736
bool operator==(const IPAddress &rhs) const {

cpp/arduino/Udp.h

+12
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,16 @@
66
class UDP : public Stream {
77
protected:
88
uint8_t *rawIPAddress(IPAddress &addr) { return addr.raw_address(); };
9+
10+
public:
11+
UDP() {
12+
// The Stream mock defines a String buffer but never puts anyting in it!
13+
if (!mGodmodeDataIn) {
14+
mGodmodeDataIn = new String;
15+
}
16+
}
17+
virtual size_t write(uint8_t value) {
18+
mGodmodeDataIn->concat(value);
19+
return 1;
20+
}
921
};

0 commit comments

Comments
 (0)