#include <OCApi.h>
#include <OCRepresentation.h>
#include <octypes.h>
+#include <ocstack.h>
#include <ocpayload.h>
#include <ocpayloadcbor.h>
#include <oic_malloc.h>
#include <oic_string.h>
+#include "payload_logging.h"
namespace OC
{
// CBOR->OCPayload and OCPayload->OCRepresentation conversions
namespace OCRepresentationEncodingTest
{
-
- static const char uri1[] = "/testuri";
- static const uint8_t sid1[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
+ static const char sid1[] = "646F6F72-4465-7669-6365-555549443030";
static const char devicename1[] = "device name";
static const char specver1[] = "spec version";
static const char dmver1[] = "data model version";
+ static OCStringLL *types = NULL;
// Device Payloads
TEST(DeviceDiscoveryEncoding, Normal)
{
+ OCResourcePayloadAddStringLL(&types, "oic.wk.d");
+ OCResourcePayloadAddStringLL(&types, "oic.d.tv");
+
OCDevicePayload* device = OCDevicePayloadCreate(
- uri1,
sid1,
devicename1,
+ types,
specver1,
dmver1);
-
- EXPECT_STREQ(uri1, device->uri);
+ EXPECT_STREQ(sid1, device->sid);
EXPECT_STREQ(devicename1, device->deviceName);
EXPECT_STREQ(specver1, device->specVersion);
EXPECT_STREQ(dmver1, device->dataModelVersion);
EXPECT_EQ(PAYLOAD_TYPE_DEVICE, ((OCPayload*)device)->type);
-
- for (uint8_t i = 1; i <= sizeof(sid1); ++i)
- {
- EXPECT_EQ(i, sid1[i - 1]);
- }
+ EXPECT_STREQ("oic.wk.d", device->types->value);
+ EXPECT_STREQ("oic.d.tv", device->types->next->value);
uint8_t* cborData;
size_t cborSize;
cborData, cborSize));
OICFree(cborData);
- EXPECT_STREQ(device->uri, ((OCDevicePayload*)parsedDevice)->uri);
+ EXPECT_STREQ(device->sid, ((OCDevicePayload*)parsedDevice)->sid);
EXPECT_STREQ(device->deviceName, ((OCDevicePayload*)parsedDevice)->deviceName);
EXPECT_STREQ(device->specVersion, ((OCDevicePayload*)parsedDevice)->specVersion);
EXPECT_STREQ(device->dataModelVersion, ((OCDevicePayload*)parsedDevice)->dataModelVersion);
+ EXPECT_STREQ("oic.wk.d", ((OCDevicePayload*)parsedDevice)->types->value);
+ EXPECT_STREQ("oic.d.tv", ((OCDevicePayload*)parsedDevice)->types->next->value);
EXPECT_EQ(device->base.type, ((OCDevicePayload*)parsedDevice)->base.type);
OCPayloadDestroy((OCPayload*)device);
mc.setPayload(parsedDevice);
EXPECT_EQ(1u, mc.representations().size());
const OC::OCRepresentation& r = mc.representations()[0];
- EXPECT_STREQ(uri1, r.getUri().c_str());
+ EXPECT_STREQ(sid1, r.getValue<std::string>(OC_RSRVD_DEVICE_ID).c_str());
EXPECT_STREQ(devicename1, r.getValue<std::string>(OC_RSRVD_DEVICE_NAME).c_str());
EXPECT_STREQ(specver1, r.getValue<std::string>(OC_RSRVD_SPEC_VERSION).c_str());
EXPECT_STREQ(dmver1, r.getValue<std::string>(OC_RSRVD_DATA_MODEL_VERSION).c_str());
-
OCPayloadDestroy(parsedDevice);
}
+ static const char uri1[] = "/testuri";
static char pfid1[] = "pfid";
static char mfgnm1[] = "mfgnm";
static char mfgurl1[] = "mfgurl";
{
OCPlatformInfo info {pfid1, mfgnm1, mfgurl1, modelnum1, dom1, pfver1, osver1, hwver1,
fwver1, url1, time1};
- OCPlatformPayload* platform = OCPlatformPayloadCreate(uri1, &info);
+ OCPlatformPayload* platform = OCPlatformPayloadCreate(&info);
EXPECT_EQ(PAYLOAD_TYPE_PLATFORM, ((OCPayload*)platform)->type);
- EXPECT_STREQ(uri1, platform->uri);
EXPECT_STREQ(pfid1, platform->info.platformID);
EXPECT_STREQ(mfgnm1, platform->info.manufacturerName);
EXPECT_STREQ(mfgurl1, platform->info.manufacturerUrl);
EXPECT_STREQ(fwver1, platform->info.firmwareVersion);
EXPECT_STREQ(url1, platform->info.supportUrl);
EXPECT_STREQ(time1, platform->info.systemTime);
+ EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, platform->interfaces->value);
+ EXPECT_STREQ(OC_RSRVD_INTERFACE_READ, platform->interfaces->next->value);
+ EXPECT_STREQ(OC_RSRVD_RESOURCE_TYPE_PLATFORM, platform->rt);
uint8_t* cborData;
size_t cborSize;
EXPECT_EQ(platform->base.type, ((OCPlatformPayload*)parsedPlatform)->base.type);
OCPlatformPayload* platform2 = (OCPlatformPayload*)parsedPlatform;
- EXPECT_STREQ(platform->uri, platform2->uri);
EXPECT_STREQ(platform->info.platformID, platform2->info.platformID);
EXPECT_STREQ(platform->info.manufacturerName, platform->info.manufacturerName);
EXPECT_STREQ(platform->info.manufacturerUrl, platform->info.manufacturerUrl);
EXPECT_STREQ(platform->info.firmwareVersion, platform->info.firmwareVersion);
EXPECT_STREQ(platform->info.supportUrl, platform->info.supportUrl);
EXPECT_STREQ(platform->info.systemTime, platform2->info.systemTime);
+ EXPECT_STREQ(platform->interfaces->value, platform2->interfaces->value);
+ EXPECT_STREQ(platform->rt, platform2->rt);
OCPayloadDestroy((OCPayload*)platform);
mc.setPayload(parsedPlatform);
EXPECT_EQ(1u, mc.representations().size());
const OC::OCRepresentation& r = mc.representations()[0];
- EXPECT_STREQ(uri1, r.getUri().c_str());
EXPECT_STREQ(pfid1, r.getValue<std::string>(OC_RSRVD_PLATFORM_ID).c_str());
EXPECT_STREQ(mfgnm1, r.getValue<std::string>(OC_RSRVD_MFG_NAME).c_str());
EXPECT_STREQ(mfgurl1, r.getValue<std::string>(OC_RSRVD_MFG_URL).c_str());
OCPayloadDestroy(parsedPlatform);
}
+ TEST(PresencePayload, Normal)
+ {
+ uint32_t maxAge = 0;
+ uint32_t sequenceNumber = 0;
+ OCPresenceTrigger trigger = OC_PRESENCE_TRIGGER_CREATE;
+ OCPresencePayload *presence = OCPresencePayloadCreate(sequenceNumber, maxAge, trigger, uri1);
+ uint8_t* cborData;
+ size_t cborSize;
+ OCPayload* cparsed;
+ EXPECT_EQ(OC_STACK_OK, OCConvertPayload((OCPayload*)presence, &cborData, &cborSize));
+ EXPECT_EQ(OC_STACK_OK, OCParsePayload(&cparsed, PAYLOAD_TYPE_PRESENCE,
+ cborData, cborSize));
+ OCPayloadDestroy((OCPayload*)presence);
+ OICFree(cborData);
+
+ OCPresencePayload* parsed = ((OCPresencePayload*)cparsed);
+ EXPECT_EQ(sequenceNumber, parsed->sequenceNumber);
+ EXPECT_EQ(maxAge, parsed->maxAge);
+ EXPECT_EQ(trigger, parsed->trigger);
+ EXPECT_STREQ(uri1, parsed->resourceType);
+
+ OCPayloadDestroy(cparsed);
+ }
// Representation Payloads
TEST(RepresentationEncoding, BaseAttributeTypes)
{
OCPayloadDestroy(cparsed);
}
+ TEST(RepresentationEncoding, RepAttributeEmpty)
+ {
+ OC::OCRepresentation startRep;
+ std::vector<int> iarr {};
+ startRep["iarr"] = {};
+
+ OC::MessageContainer mc1;
+ mc1.addRepresentation(startRep);
+
+ OCRepPayload* cstart = mc1.getPayload();
+ EXPECT_EQ(PAYLOAD_TYPE_REPRESENTATION, cstart->base.type);
+
+ uint8_t *cborData = NULL;
+ size_t cborSize = 0;
+ OCPayload *cparsed = NULL;
+ EXPECT_EQ(OC_STACK_OK, OCConvertPayload((OCPayload*)cstart, &cborData, &cborSize));
+ EXPECT_EQ(OC_STACK_OK, OCParsePayload(&cparsed, PAYLOAD_TYPE_REPRESENTATION,
+ cborData, cborSize));
+ OCPayloadDestroy((OCPayload*)cstart);
+ OICFree(cborData);
+
+ OC::MessageContainer mc2;
+ mc2.setPayload(cparsed);
+ EXPECT_EQ(1u, mc2.representations().size());
+ const OC::OCRepresentation& r = mc2.representations()[0];
+
+ std::vector<int> iarr2 = r["iarr"];
+
+ EXPECT_EQ(iarr, iarr2);
+ OCPayloadDestroy(cparsed);
+ }
+
TEST(RepresentationEncoding, RepAttribute)
{
OC::OCRepresentation startRep;
{
OCDiscoveryPayload* payload = OCDiscoveryPayloadCreate();
OCResourcePayload* resource = (OCResourcePayload*)OICCalloc(1, sizeof(OCResourcePayload));
+ payload->sid = OICStrdup(sid1);
payload->resources = resource;
- OCResourcePayloadAddResourceType(resource, "rt.singleitem");
- OCResourcePayloadAddInterface(resource, "if.singleitem");
+ EXPECT_TRUE(OCResourcePayloadAddStringLL(&resource->types, "rt.singleitem"));
+ EXPECT_TRUE(OCResourcePayloadAddStringLL(&resource->interfaces, "if.singleitem"));
+
resource->uri = OICStrdup("/uri/thing");
- resource->sid = (uint8_t*)OICMalloc(16);
uint8_t* cborData;
size_t cborSize;
EXPECT_EQ(1u, OCDiscoveryPayloadGetResourceCount((OCDiscoveryPayload*)cparsed));
OCResourcePayload* parsedResource = ((OCDiscoveryPayload*)cparsed)->resources;
+ EXPECT_STREQ(sid1, ((OCDiscoveryPayload*)cparsed)->sid);
EXPECT_EQ(NULL, parsedResource->next);
-
- EXPECT_EQ(NULL, parsedResource->types->next);
EXPECT_STREQ("rt.singleitem", parsedResource->types->value);
+ EXPECT_EQ(NULL, parsedResource->types->next);
EXPECT_EQ(NULL, parsedResource->interfaces->next);
EXPECT_STREQ("if.singleitem", parsedResource->interfaces->value);
TEST(DiscoveryRTandIF, SingleItemFrontTrim)
{
OCDiscoveryPayload* payload = OCDiscoveryPayloadCreate();
+ payload->sid = OICStrdup(sid1);
OCResourcePayload* resource = (OCResourcePayload*)OICCalloc(1, sizeof(OCResourcePayload));
payload->resources = resource;
- OCResourcePayloadAddResourceType(resource, " rt.singleitem");
- OCResourcePayloadAddInterface(resource, " if.singleitem");
+ EXPECT_TRUE(OCResourcePayloadAddStringLL(&resource->types, " rt.singleitem"));
+ EXPECT_TRUE(OCResourcePayloadAddStringLL(&resource->interfaces, " if.singleitem"));
resource->uri = OICStrdup("/uri/thing");
- resource->sid = (uint8_t*)OICMalloc(16);
uint8_t* cborData;
size_t cborSize;
OCResourcePayload* parsedResource = ((OCDiscoveryPayload*)cparsed)->resources;
EXPECT_EQ(NULL, parsedResource->next);
-
+ EXPECT_STREQ(sid1, ((OCDiscoveryPayload*)cparsed)->sid);
EXPECT_EQ(NULL, parsedResource->types->next);
EXPECT_STREQ("rt.singleitem", parsedResource->types->value);
EXPECT_EQ(NULL, parsedResource->interfaces->next);
OCPayloadDestroy(cparsed);
OCDiscoveryPayloadDestroy(payload);
}
+
TEST(DiscoveryRTandIF, SingleItemBackTrim)
{
OCDiscoveryPayload* payload = OCDiscoveryPayloadCreate();
+ payload->sid = OICStrdup(sid1);
OCResourcePayload* resource = (OCResourcePayload*)OICCalloc(1, sizeof(OCResourcePayload));
payload->resources = resource;
- OCResourcePayloadAddResourceType(resource, "rt.singleitem ");
- OCResourcePayloadAddInterface(resource, "if.singleitem ");
+ OCResourcePayloadAddStringLL(&resource->types, "rt.singleitem ");
+ OCResourcePayloadAddStringLL(&resource->interfaces, "if.singleitem ");
resource->uri = OICStrdup("/uri/thing");
- resource->sid = (uint8_t*)OICMalloc(16);
uint8_t* cborData;
size_t cborSize;
OCResourcePayload* parsedResource = ((OCDiscoveryPayload*)cparsed)->resources;
EXPECT_EQ(NULL, parsedResource->next);
-
+ EXPECT_STREQ(sid1, ((OCDiscoveryPayload*)cparsed)->sid);
EXPECT_EQ(NULL, parsedResource->types->next);
EXPECT_STREQ("rt.singleitem", parsedResource->types->value);
EXPECT_EQ(NULL, parsedResource->interfaces->next);
TEST(DiscoveryRTandIF, SingleItemBothTrim)
{
OCDiscoveryPayload* payload = OCDiscoveryPayloadCreate();
+ payload->sid = OICStrdup(sid1);
OCResourcePayload* resource = (OCResourcePayload*)OICCalloc(1, sizeof(OCResourcePayload));
payload->resources = resource;
- OCResourcePayloadAddResourceType(resource, " rt.singleitem ");
- OCResourcePayloadAddInterface(resource, " if.singleitem ");
+ OCResourcePayloadAddStringLL(&resource->types, " rt.singleitem ");
+ OCResourcePayloadAddStringLL(&resource->interfaces, " if.singleitem ");
resource->uri = OICStrdup("/uri/thing");
- resource->sid = (uint8_t*)OICMalloc(16);
uint8_t* cborData;
size_t cborSize;
OCResourcePayload* parsedResource = ((OCDiscoveryPayload*)cparsed)->resources;
EXPECT_EQ(NULL, parsedResource->next);
-
+ EXPECT_STREQ(sid1, ((OCDiscoveryPayload*)cparsed)->sid);
EXPECT_EQ(NULL, parsedResource->types->next);
EXPECT_STREQ("rt.singleitem", parsedResource->types->value);
EXPECT_EQ(NULL, parsedResource->interfaces->next);
TEST(DiscoveryRTandIF, MultiItemsNormal)
{
OCDiscoveryPayload* payload = OCDiscoveryPayloadCreate();
+ payload->sid = OICStrdup(sid1);
OCResourcePayload* resource = (OCResourcePayload*)OICCalloc(1, sizeof(OCResourcePayload));
payload->resources = resource;
- OCResourcePayloadAddResourceType(resource, "rt.firstitem");
- OCResourcePayloadAddResourceType(resource, "rt.seconditem");
- OCResourcePayloadAddInterface(resource, "if.firstitem");
- OCResourcePayloadAddInterface(resource, "if.seconditem");
+ OCResourcePayloadAddStringLL(&resource->types, "rt.firstitem");
+ OCResourcePayloadAddStringLL(&resource->types, "rt.seconditem");
+ OCResourcePayloadAddStringLL(&resource->interfaces, "if.firstitem");
+ OCResourcePayloadAddStringLL(&resource->interfaces, "if.seconditem");
resource->uri = OICStrdup("/uri/thing");
- resource->sid = (uint8_t*)OICMalloc(16);
uint8_t* cborData;
size_t cborSize;
OCResourcePayload* parsedResource = ((OCDiscoveryPayload*)cparsed)->resources;
EXPECT_EQ(NULL, parsedResource->next);
-
+ EXPECT_STREQ(sid1, ((OCDiscoveryPayload*)cparsed)->sid);
EXPECT_EQ(NULL, parsedResource->types->next->next);
EXPECT_STREQ("rt.firstitem", parsedResource->types->value);
EXPECT_STREQ("rt.seconditem", parsedResource->types->next->value);
TEST(DiscoveryRTandIF, MultiItemExtraLeadSpaces)
{
OCDiscoveryPayload* payload = OCDiscoveryPayloadCreate();
+ payload->sid = OICStrdup(sid1);
OCResourcePayload* resource = (OCResourcePayload*)OICCalloc(1, sizeof(OCResourcePayload));
payload->resources = resource;
- OCResourcePayloadAddResourceType(resource, " rt.firstitem");
- OCResourcePayloadAddResourceType(resource, " rt.seconditem");
- OCResourcePayloadAddInterface(resource, " if.firstitem");
- OCResourcePayloadAddInterface(resource, " if.seconditem");
+ OCResourcePayloadAddStringLL(&resource->types, " rt.firstitem");
+ OCResourcePayloadAddStringLL(&resource->types, " rt.seconditem");
+ OCResourcePayloadAddStringLL(&resource->interfaces, " if.firstitem");
+ OCResourcePayloadAddStringLL(&resource->interfaces, " if.seconditem");
resource->uri = OICStrdup("/uri/thing");
- resource->sid = (uint8_t*)OICMalloc(16);
uint8_t* cborData;
size_t cborSize;
OCResourcePayload* parsedResource = ((OCDiscoveryPayload*)cparsed)->resources;
EXPECT_EQ(NULL, parsedResource->next);
-
+ EXPECT_STREQ(sid1, ((OCDiscoveryPayload*)cparsed)->sid);
EXPECT_EQ(NULL, parsedResource->types->next->next);
EXPECT_STREQ("rt.firstitem", parsedResource->types->value);
EXPECT_STREQ("rt.seconditem", parsedResource->types->next->value);
TEST(DiscoveryRTandIF, MultiItemExtraTrailSpaces)
{
OCDiscoveryPayload* payload = OCDiscoveryPayloadCreate();
+ payload->sid = OICStrdup(sid1);
OCResourcePayload* resource = (OCResourcePayload*)OICCalloc(1, sizeof(OCResourcePayload));
payload->resources = resource;
- OCResourcePayloadAddResourceType(resource, "rt.firstitem ");
- OCResourcePayloadAddResourceType(resource, "rt.seconditem ");
- OCResourcePayloadAddInterface(resource, "if.firstitem ");
- OCResourcePayloadAddInterface(resource, "if.seconditem ");
+ OCResourcePayloadAddStringLL(&resource->types, "rt.firstitem ");
+ OCResourcePayloadAddStringLL(&resource->types, "rt.seconditem ");
+ OCResourcePayloadAddStringLL(&resource->interfaces, "if.firstitem ");
+ OCResourcePayloadAddStringLL(&resource->interfaces, "if.seconditem ");
resource->uri = OICStrdup("/uri/thing");
- resource->sid = (uint8_t*)OICMalloc(16);
uint8_t* cborData;
size_t cborSize;
OCResourcePayload* parsedResource = ((OCDiscoveryPayload*)cparsed)->resources;
EXPECT_EQ(NULL, parsedResource->next);
-
+ EXPECT_STREQ(sid1, ((OCDiscoveryPayload*)cparsed)->sid);
EXPECT_EQ(NULL, parsedResource->types->next->next);
EXPECT_STREQ("rt.firstitem", parsedResource->types->value);
EXPECT_STREQ("rt.seconditem", parsedResource->types->next->value);
TEST(DiscoveryRTandIF, MultiItemBothSpaces)
{
OCDiscoveryPayload* payload = OCDiscoveryPayloadCreate();
+ payload->sid = OICStrdup(sid1);
OCResourcePayload* resource = (OCResourcePayload*)OICCalloc(1, sizeof(OCResourcePayload));
payload->resources = resource;
- OCResourcePayloadAddResourceType(resource, " rt.firstitem ");
- OCResourcePayloadAddResourceType(resource, " rt.seconditem ");
- OCResourcePayloadAddInterface(resource, " if.firstitem ");
- OCResourcePayloadAddInterface(resource, " if.seconditem ");
+ OCResourcePayloadAddStringLL(&resource->types, " rt.firstitem ");
+ OCResourcePayloadAddStringLL(&resource->types, " rt.seconditem ");
+ OCResourcePayloadAddStringLL(&resource->interfaces, " if.firstitem ");
+ OCResourcePayloadAddStringLL(&resource->interfaces, " if.seconditem ");
resource->uri = OICStrdup("/uri/thing");
- resource->sid = (uint8_t*)OICMalloc(16);
uint8_t* cborData;
size_t cborSize;
OCResourcePayload* parsedResource = ((OCDiscoveryPayload*)cparsed)->resources;
EXPECT_EQ(NULL, parsedResource->next);
-
+ EXPECT_STREQ(sid1, ((OCDiscoveryPayload*)cparsed)->sid);
EXPECT_EQ(NULL, parsedResource->types->next->next);
EXPECT_STREQ("rt.firstitem", parsedResource->types->value);
EXPECT_STREQ("rt.seconditem", parsedResource->types->next->value);
TEST(RepresentationEncodingRTandIF, SingleItemNormal)
{
OCRepPayload* payload = OCRepPayloadCreate();
- OCRepPayloadSetUri(payload, "/this/uri");
OCRepPayloadAddResourceType(payload, "rt.firstitem");
OCRepPayloadAddInterface(payload, "if.firstitem");
EXPECT_STREQ("if.firstitem", parsedPayload->interfaces->value);
EXPECT_EQ(NULL, parsedPayload->interfaces->next);
-
OICFree(cborData);
OCRepPayloadDestroy(payload);
OCPayloadDestroy(cparsed);
TEST(RepresentationEncodingRTandIF, SingleItemFrontTrim)
{
OCRepPayload* payload = OCRepPayloadCreate();
- OCRepPayloadSetUri(payload, "/this/uri");
OCRepPayloadAddResourceType(payload, " rt.firstitem");
OCRepPayloadAddInterface(payload, " if.firstitem");
TEST(RepresentationEncodingRTandIF, SingleItemBackTrim)
{
OCRepPayload* payload = OCRepPayloadCreate();
- OCRepPayloadSetUri(payload, "/this/uri");
OCRepPayloadAddResourceType(payload, "rt.firstitem ");
OCRepPayloadAddInterface(payload, "if.firstitem ");
TEST(RepresentationEncodingRTandIF, SingleItemBothTrim)
{
OCRepPayload* payload = OCRepPayloadCreate();
- OCRepPayloadSetUri(payload, "/this/uri");
OCRepPayloadAddResourceType(payload, " rt.firstitem ");
OCRepPayloadAddInterface(payload, " if.firstitem ");
TEST(RepresentationEncodingRTandIF, MultiItemsNormal)
{
OCRepPayload* payload = OCRepPayloadCreate();
- OCRepPayloadSetUri(payload, "/this/uri");
OCRepPayloadAddResourceType(payload, "rt.firstitem");
OCRepPayloadAddResourceType(payload, "rt.seconditem");
OCRepPayloadAddInterface(payload, "if.firstitem");
TEST(RepresentationEncodingRTandIF, MultiItemExtraLeadSpaces)
{
OCRepPayload* payload = OCRepPayloadCreate();
- OCRepPayloadSetUri(payload, "/this/uri");
OCRepPayloadAddResourceType(payload, " rt.firstitem");
OCRepPayloadAddResourceType(payload, " rt.seconditem");
OCRepPayloadAddInterface(payload, " if.firstitem");
TEST(RepresentationEncodingRTandIF, MultiItemExtraTrailSpaces)
{
OCRepPayload* payload = OCRepPayloadCreate();
- OCRepPayloadSetUri(payload, "/this/uri");
OCRepPayloadAddResourceType(payload, "rt.firstitem ");
OCRepPayloadAddResourceType(payload, "rt.seconditem ");
OCRepPayloadAddInterface(payload, "if.firstitem ");
TEST(RepresentationEncodingRTandIF, MultiItemExtraMiddleSpaces)
{
OCRepPayload* payload = OCRepPayloadCreate();
- OCRepPayloadSetUri(payload, "/this/uri");
OCRepPayloadAddResourceType(payload, " rt.firstitem ");
OCRepPayloadAddResourceType(payload, " rt.seconditem ");
OCRepPayloadAddInterface(payload, " if.firstitem ");
OCRepPayloadDestroy(payload);
OCPayloadDestroy(cparsed);
}
+ TEST(RepresentationEncodingRTandIF, TestPayloadContents)
+ {
+ OC::OCRepresentation subRep1;
+ std::vector<std::string> types;
+ types.push_back("rt.firstitem");
+ std::vector<std::string> interfaces;
+ interfaces.push_back("if.firstitem");
+ subRep1.setResourceTypes(types);
+ subRep1.setResourceInterfaces(interfaces);
+ subRep1.setNULL("NullAttr");
+ subRep1.setValue("IntAttr", 77);
+ subRep1.setValue("DoubleAttr", 3.333);
+ subRep1.setValue("BoolAttr", true);
+ subRep1.setValue("StringAttr", std::string("String attr"));
+
+ OC::MessageContainer mc1;
+ mc1.addRepresentation(subRep1);
+
+ OCRepPayload *repPayload = mc1.getPayload();
+ EXPECT_EQ(PAYLOAD_TYPE_REPRESENTATION, repPayload->base.type);
+
+ uint8_t *cborData = NULL;
+ size_t cborSize = 0;
+ OCPayload *cparsed = NULL;
+
+ EXPECT_EQ(OC_STACK_OK, OCConvertPayload((OCPayload*)repPayload, &cborData, &cborSize));
+ EXPECT_EQ(OC_STACK_OK, OCParsePayload(&cparsed, PAYLOAD_TYPE_REPRESENTATION,
+ cborData, cborSize));
+
+ OCRepPayload *parsedPayload = (OCRepPayload *)cparsed;
+ EXPECT_EQ(NULL, parsedPayload->uri);
+ EXPECT_STREQ("rt.firstitem", parsedPayload->types->value);
+ EXPECT_EQ(NULL, parsedPayload->types->next);
+ EXPECT_STREQ("if.firstitem", parsedPayload->interfaces->value);
+ EXPECT_EQ(NULL, parsedPayload->interfaces->next);
+
+ // To make sure rt and if are not duplicated.
+ EXPECT_STREQ("BoolAttr", parsedPayload->values->name);
+ EXPECT_EQ(true, parsedPayload->values->b);
+ EXPECT_EQ(OCREP_PROP_BOOL, parsedPayload->values->type);
+ parsedPayload->values = parsedPayload->values->next;
+
+ EXPECT_STREQ("DoubleAttr", parsedPayload->values->name);
+ EXPECT_EQ(OCREP_PROP_DOUBLE, parsedPayload->values->type);
+ EXPECT_EQ(3.3330000000000002, parsedPayload->values->d);
+ parsedPayload->values = parsedPayload->values->next;
+
+ EXPECT_STREQ("IntAttr", parsedPayload->values->name);
+ EXPECT_EQ(77, parsedPayload->values->i);
+ EXPECT_EQ(OCREP_PROP_INT, parsedPayload->values->type);
+ parsedPayload->values = parsedPayload->values->next;
+
+ EXPECT_STREQ("NullAttr", parsedPayload->values->name);
+ EXPECT_EQ(OCREP_PROP_NULL, parsedPayload->values->type);
+ parsedPayload->values = parsedPayload->values->next;
+
+ EXPECT_STREQ("StringAttr", parsedPayload->values->name);
+ EXPECT_STREQ("String attr", parsedPayload->values->str);
+ EXPECT_EQ(OCREP_PROP_STRING, parsedPayload->values->type);
+ parsedPayload->values = parsedPayload->values->next;
+
+ EXPECT_EQ(NULL, parsedPayload->values);
+
+ OICFree(cborData);
+ OCRepPayloadDestroy(repPayload);
+ OCPayloadDestroy(cparsed);
+ }
}