Skip to content

Commit d32c73a

Browse files
committed
add test cases
1 parent 45d819c commit d32c73a

File tree

1 file changed

+148
-0
lines changed

1 file changed

+148
-0
lines changed

extras/test/src/test_command_encode.cpp

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -896,6 +896,65 @@ SCENARIO("Test the encoding of command messages") {
896896
}
897897
}
898898

899+
WHEN("Encode the DeviceNetConfigCmdUp message with Ethernet IPv6")
900+
{
901+
DeviceNetConfigCmdUp command;
902+
command.c.id = CommandId::DeviceNetConfigCmdUpId;
903+
904+
command.params.type = NetworkAdapter::ETHERNET;
905+
uint8_t ip[] = {0x1a, 0x4f, 0xa7, 0xa9, 0x92, 0x8f, 0x7b, 0x1c, 0xec, 0x3b, 0x1e, 0xcd, 0x88, 0x58, 0x0d, 0x1e};
906+
command.params.eth.ip.type = IPType::IPv6;
907+
memcpy(command.params.eth.ip.bytes, ip, sizeof(ip));
908+
uint8_t dns[] = {0x21, 0xf6, 0x3b, 0x22, 0x99, 0x6f, 0x5b, 0x72, 0x25, 0xd9, 0xe0, 0x24, 0xf0, 0x36, 0xb5, 0xd2};
909+
command.params.eth.dns.type = IPType::IPv6;
910+
memcpy(command.params.eth.dns.bytes, dns, sizeof(dns));
911+
uint8_t gateway[] = {0x2e, 0xc2, 0x27, 0xf1, 0xf1, 0x9a, 0x0c, 0x11, 0x47, 0x1b, 0x84, 0xaf, 0x96, 0x10, 0xb0, 0x17};
912+
command.params.eth.gateway.type = IPType::IPv6;
913+
memcpy(command.params.eth.gateway.bytes, gateway, sizeof(gateway));
914+
uint8_t netmask[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
915+
command.params.eth.netmask.type = IPType::IPv6;
916+
memcpy(command.params.eth.netmask.bytes, netmask, sizeof(netmask));
917+
918+
919+
uint8_t buffer[512];
920+
size_t bytes_encoded = sizeof(buffer);
921+
922+
CBORMessageEncoder encoder;
923+
MessageEncoder::Status err = encoder.encode((Message*)&command, buffer, bytes_encoded);
924+
925+
uint8_t expected_result[] = {
926+
0xda, 0x00, 0x01, 0x11, 0x00, 0x85,
927+
0x06,0x50, 0x1A, 0x4F, 0xA7, 0xA9, 0x92, 0x8F, 0x7B, 0x1C,
928+
0xEC, 0x3B, 0x1E, 0xCD, 0x88, 0x58, 0x0D, 0x1E,
929+
0x50, 0x21, 0xF6, 0x3B, 0x22, 0x99, 0x6F,
930+
0x5B, 0x72, 0x25, 0xD9, 0xE0, 0x24, 0xF0, 0x36,
931+
0xB5, 0xD2, 0x50, 0x2E, 0xC2, 0x27, 0xF1,
932+
0xF1, 0x9A, 0x0C, 0x11, 0x47, 0x1B, 0x84, 0xAF,
933+
0x96, 0x10, 0xB0, 0x17, 0x50, 0xFF, 0xFF,
934+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
935+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
936+
};
937+
938+
// Test the encoding is
939+
// DA 00011100 # tag(73728)
940+
// 85 # array(5)
941+
// 06 # unsigned(6)
942+
// 50 # bytes(16)
943+
// 1A4FA7A9928F7B1CEC3B1ECD88580D1E # "\u001AO\xA7\xA9\x92\x8F{\u001C\xEC;\u001E͈X\r\u001E"
944+
// 50 # bytes(16)
945+
// 21F63B22996F5B7225D9E024F036B5D2 # "!\xF6;\"\x99o[r%\xD9\xE0$\xF06\xB5\xD2"
946+
// 50 # bytes(16)
947+
// 2EC227F1F19A0C11471B84AF9610B017 # ".\xC2'\xF1\xF1\x9A\f\u0011G\e\x84\xAF\x96\u0010\xB0\u0017"
948+
// 50 # bytes(16)
949+
// FFFFFFFFFFFFFFFF0000000000000000 # "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"
950+
951+
THEN("The encoding is successful") {
952+
REQUIRE(err == MessageEncoder::Status::Complete);
953+
REQUIRE(bytes_encoded == sizeof(expected_result));
954+
REQUIRE(memcmp(buffer, expected_result, sizeof(expected_result)) == 0);
955+
}
956+
}
957+
899958
WHEN("Encode the DeviceNetConfigCmdUp message with Ethernet DHCP")
900959
{
901960
DeviceNetConfigCmdUp command;
@@ -938,6 +997,37 @@ SCENARIO("Test the encoding of command messages") {
938997
}
939998
}
940999

1000+
WHEN("Encode the DeviceNetConfigCmdUp message with Ethernet IPv6 not enough space")
1001+
{
1002+
DeviceNetConfigCmdUp command;
1003+
command.c.id = CommandId::DeviceNetConfigCmdUpId;
1004+
1005+
command.params.type = NetworkAdapter::ETHERNET;
1006+
uint8_t ip[] = {0x1a, 0x4f, 0xa7, 0xa9, 0x92, 0x8f, 0x7b, 0x1c, 0xec, 0x3b, 0x1e, 0xcd, 0x88, 0x58, 0x0d, 0x1e};
1007+
command.params.eth.ip.type = IPType::IPv6;
1008+
memcpy(command.params.eth.ip.bytes, ip, sizeof(ip));
1009+
uint8_t dns[] = {0x21, 0xf6, 0x3b, 0x22, 0x99, 0x6f, 0x5b, 0x72, 0x25, 0xd9, 0xe0, 0x24, 0xf0, 0x36, 0xb5, 0xd2};
1010+
command.params.eth.dns.type = IPType::IPv6;
1011+
memcpy(command.params.eth.dns.bytes, dns, sizeof(dns));
1012+
uint8_t gateway[] = {0x2e, 0xc2, 0x27, 0xf1, 0xf1, 0x9a, 0x0c, 0x11, 0x47, 0x1b, 0x84, 0xaf, 0x96, 0x10, 0xb0, 0x17};
1013+
command.params.eth.gateway.type = IPType::IPv6;
1014+
memcpy(command.params.eth.gateway.bytes, gateway, sizeof(gateway));
1015+
uint8_t netmask[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
1016+
command.params.eth.netmask.type = IPType::IPv6;
1017+
memcpy(command.params.eth.netmask.bytes, netmask, sizeof(netmask));
1018+
1019+
1020+
uint8_t buffer[35];
1021+
size_t bytes_encoded = sizeof(buffer);
1022+
1023+
CBORMessageEncoder encoder;
1024+
MessageEncoder::Status err = encoder.encode((Message*)&command, buffer, bytes_encoded);
1025+
1026+
THEN("The encoding fails") {
1027+
REQUIRE(err == MessageEncoder::Status::Error);
1028+
}
1029+
}
1030+
9411031
WHEN("Encode the DeviceNetConfigCmdUp message with Cellular")
9421032
{
9431033
DeviceNetConfigCmdUp command;
@@ -979,4 +1069,62 @@ SCENARIO("Test the encoding of command messages") {
9791069
REQUIRE(memcmp(buffer, expected_result, sizeof(expected_result)) == 0);
9801070
}
9811071
}
1072+
1073+
WHEN("Encode the DeviceNetConfigCmdUp message with Notecard")
1074+
{
1075+
DeviceNetConfigCmdUp command;
1076+
command.c.id = CommandId::DeviceNetConfigCmdUpId;
1077+
1078+
command.params.type = NetworkAdapter::NOTECARD;
1079+
1080+
uint8_t buffer[512];
1081+
size_t bytes_encoded = sizeof(buffer);
1082+
1083+
CBORMessageEncoder encoder;
1084+
MessageEncoder::Status err = encoder.encode((Message*)&command, buffer, bytes_encoded);
1085+
1086+
uint8_t expected_result[] = {
1087+
0xda, 0x00, 0x01, 0x11, 0x00, 0x81,
1088+
0x08
1089+
};
1090+
1091+
// Test the encoding is
1092+
// DA 00011100 # tag(73728)
1093+
// 81 # array(1)
1094+
// 08 # unsigned(8)
1095+
1096+
THEN("The encoding is successful") {
1097+
REQUIRE(err == MessageEncoder::Status::Complete);
1098+
REQUIRE(bytes_encoded == sizeof(expected_result));
1099+
REQUIRE(memcmp(buffer, expected_result, sizeof(expected_result)) == 0);
1100+
}
1101+
}
1102+
1103+
WHEN("Encode the DeviceNetConfigCmdUp message with None")
1104+
{
1105+
DeviceNetConfigCmdUp command;
1106+
command.c.id = CommandId::DeviceNetConfigCmdUpId;
1107+
1108+
command.params.type = NetworkAdapter::NONE;
1109+
1110+
uint8_t buffer[512];
1111+
size_t bytes_encoded = sizeof(buffer);
1112+
1113+
CBORMessageEncoder encoder;
1114+
MessageEncoder::Status err = encoder.encode((Message*)&command, buffer, bytes_encoded);
1115+
1116+
uint8_t expected_result[] = {
1117+
0xda, 0x00, 0x01, 0x11, 0x00, 0x81, 0x00
1118+
};
1119+
1120+
// Test the encoding is
1121+
// DA 00011100 # tag(73728)
1122+
// 80 # array(1)
1123+
1124+
THEN("The encoding is successful") {
1125+
REQUIRE(err == MessageEncoder::Status::Complete);
1126+
REQUIRE(bytes_encoded == sizeof(expected_result));
1127+
REQUIRE(memcmp(buffer, expected_result, sizeof(expected_result)) == 0);
1128+
}
1129+
}
9821130
}

0 commit comments

Comments
 (0)