X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Funittests%2FOCRepresentationEncodingTest.cpp;h=edf695f06836acd292b64c7e73c34e10cf159060;hb=eb0a8ca0ab75d11aff5661131e35a011b76fca2b;hp=e1b0807607bac97194f4e3693fb8eb43fb132048;hpb=d38beaea16946810ff07a4bdd3b3bca67127d460;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/unittests/OCRepresentationEncodingTest.cpp b/resource/unittests/OCRepresentationEncodingTest.cpp index e1b0807..edf695f 100644 --- a/resource/unittests/OCRepresentationEncodingTest.cpp +++ b/resource/unittests/OCRepresentationEncodingTest.cpp @@ -232,6 +232,38 @@ namespace OCRepresentationEncodingTest OCPayloadDestroy(cparsed); } + TEST(RepresentationEncoding, RepAttributeEmpty) + { + OC::OCRepresentation startRep; + std::vector 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 iarr2 = r["iarr"]; + + EXPECT_EQ(iarr, iarr2); + OCPayloadDestroy(cparsed); + } + TEST(RepresentationEncoding, RepAttribute) { OC::OCRepresentation startRep; @@ -1148,4 +1180,71 @@ namespace OCRepresentationEncodingTest OCRepPayloadDestroy(payload); OCPayloadDestroy(cparsed); } + TEST(RepresentationEncodingRTandIF, TestPayloadContents) + { + OC::OCRepresentation subRep1; + std::vector types; + types.push_back("rt.firstitem"); + std::vector 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); + } }