/*---------------------------------------------------------------------- | TestWhitespace +---------------------------------------------------------------------*/ static void TestWhitespace() { const char* xml = "<doc>\r\n" " <clean> </clean>\r\n" " <dirty> A B </dirty>\r\n" " <mixed>\r\n" " A\r\n" " <clean> </clean>\r\n" " B\r\n" " <dirty> A B </dirty>\r\n" " C\r\n" " </mixed>\r\n" "</doc>\r\n"; const char* expect1 = "<doc><clean/><dirty> A B </dirty><mixed>\n" " A\n" " <clean/>\n" " B\n" " <dirty> A B </dirty>\n" " C\n" " </mixed></doc>"; const char* expect2 = "<doc>\n" " <clean> </clean>\n" " <dirty> A B </dirty>\n" " <mixed>\n" " A\n" " <clean> </clean>\n" " B\n" " <dirty> A B </dirty>\n" " C\n" " </mixed>\n" "</doc>"; NPT_XmlParser parser1(false); // ignore whitespace NPT_XmlNode* root; CHECK(NPT_SUCCEEDED(parser1.Parse(xml, root))); CHECK(root); NPT_XmlWriter writer; NPT_MemoryStream buffer; writer.Serialize(*root, buffer); CHECK(buffer.GetBuffer() == NPT_DataBuffer(expect1, NPT_StringLength(expect1))); delete root; NPT_XmlParser parser2(true); // keep whitespace CHECK(NPT_SUCCEEDED(parser2.Parse(xml, root))); CHECK(root); buffer.SetSize(0); writer.Serialize(*root, buffer); CHECK(buffer.GetBuffer() == NPT_DataBuffer(expect2, NPT_StringLength(expect2))); delete root; }
/*---------------------------------------------------------------------- | TestMakeStandalone +---------------------------------------------------------------------*/ static void TestMakeStandalone() { const char* xml = "<parent xmlns:foo='foo-ns' xmlns:bar='bar-ns' xmlns='default-ns'><inter xmlns:bli='bli-ns' xmlns:bou='bou-ns'><child><foo:a>a-text</foo:a><bar:b xml:fifi='0'>b-text</bar:b><c>c-text</c><d bou:att='b-att'/></child></inter></parent>"; const char* expected = "<child xmlns=\"default-ns\" xmlns:foo=\"foo-ns\" xmlns:bar=\"bar-ns\" xmlns:bou=\"bou-ns\"><foo:a>a-text</foo:a><bar:b xml:fifi=\"0\">b-text</bar:b><c>c-text</c><d bou:att=\"b-att\"/></child>"; NPT_XmlParser parser; NPT_XmlNode* root = NULL; NPT_Result result = parser.Parse(xml, root); CHECK(NPT_SUCCEEDED(result)); CHECK(root != NULL); CHECK(root->AsElementNode() != NULL); NPT_XmlElementNode* inter = root->AsElementNode()->GetChild("inter", NPT_XML_ANY_NAMESPACE); CHECK(inter != NULL); NPT_XmlElementNode* child = inter->GetChild("child", NPT_XML_ANY_NAMESPACE); CHECK(child != NULL); child->MakeStandalone(); NPT_XmlWriter writer; NPT_MemoryStream buffer; writer.Serialize(*child, buffer); CHECK(buffer.GetBuffer() == NPT_DataBuffer(expected, NPT_StringLength(expected))); delete root; }
SimpleDMS::SimpleDMS(const UUID& uuid) { m_uuid = uuid; m_deviceType = "urn:schemas-upnp-org:device:MediaServer:1"; m_friendlyName = "SimpleDMS[WTF]"; m_manufacturer = "NETGEAR Inc."; m_manufacturerURL = "http://www.netgear.com"; m_modelDescription = "GENIE SimpleDMS"; m_modelName = "SimpleDMS"; m_modelNumber = "DJ-DMS"; m_modelURL = "http://www.netgear.com"; m_serialNumber = "260471"; m_upc = "400240112013"; m_presentationURL = "http://www.netgear.com"; /* m_modelName = "Windows Media Player Sharing"; m_modelNumber = "12.0"; m_friendlyName = "SimpleDMS[WTF] : 2";*/ /* m_modelURL = "http://go.microsoft.com/fwlink/?LinkId=105926"; m_manufacturer = "Microsoft Corporation"; m_manufacturerURL = "http://www.microsoft.com";*/ // NPT_String friendlyName = "SimpleDMS248"; // m_friendlyName = NPT_String::Format("%s: 1", friendlyName.GetChars()); // m_modelName = NPT_String::Format("Windows Media Connect compatible (%s)", m_friendlyName.GetChars()); // m_modelNumber = "1"; //m_modelURL = "http://www.netgear.com/"; //m_manufacturer = "NETGEAR32"; //m_manufacturerURL = "http://www.siteview.com/"; //m_serialNumber = "12345678"; //m_modelDescription = friendlyName; registerServices(g_DMSServiceTable, g_DMSServiceTableSize); registerStaticContent("icon1", "image/png", NPT_DataBuffer(g_icon120_png, g_icon120_png_size, false), false); registerStaticContent("icon2", "image/png", NPT_DataBuffer(g_icon48_png, g_icon48_png_size, false), false); registerStaticContent("icon3", "image/png", NPT_DataBuffer(g_icon32_png, g_icon32_png_size, false), false); registerStaticContent("icon4", "image/jpeg", NPT_DataBuffer(g_icon120_jpg, g_icon120_jpg_size, false), false); registerStaticContent("icon5", "image/jpeg", NPT_DataBuffer(g_icon48_jpg, g_icon48_jpg_size, false), false); registerStaticContent("icon6", "image/jpeg", NPT_DataBuffer(g_icon32_jpg, g_icon32_jpg_size, false), false); const char *cds = "urn:upnp-org:serviceId:ContentDirectory"; setStateValue(cds, "SearchCapabilities", "*"); setStateValue(cds, "SortCapabilities", "*"); setStateValue(cds, "SystemUpdateID", "0"); setStateValue(cds, "ContainerUpdateIDs", ""); const char *cms = "urn:upnp-org:serviceId:ConnectionManager"; setStateValue(cms, "SourceProtocolInfo", ""); setStateValue(cms, "SinkProtocolInfo", ""); setStateValue(cms, "CurrentConnectionIDs", "0"); m_store = new MediaStore(this); }
/*---------------------------------------------------------------------- | TestCdata +---------------------------------------------------------------------*/ static void TestCdata() { const char* xml = "<doc> blabla <![CDATA[ < [[ Smith ]] > ]]> blibli</doc>"; const char* expect = "<doc> blabla < [[ Smith ]] > blibli</doc>"; NPT_XmlParser parser; NPT_XmlNode* root; CHECK(NPT_SUCCEEDED(parser.Parse(xml, root))); CHECK(root); NPT_XmlWriter writer; NPT_MemoryStream buffer; writer.Serialize(*root, buffer); CHECK(buffer.GetBuffer() == NPT_DataBuffer(expect, NPT_StringLength(expect))); delete root; }
/*---------------------------------------------------------------------- | TestComments +---------------------------------------------------------------------*/ static void TestComments() { const char* xml = "<!-- comment outside the element -->\n" "<doc> blabla <!-- --> foo <!-- you <g> &foo -> &bar --> blibli</doc>"; const char* expect = "<doc> blabla foo blibli</doc>"; NPT_XmlParser parser; NPT_XmlNode* root; CHECK(NPT_SUCCEEDED(parser.Parse(xml, root))); CHECK(root); NPT_XmlWriter writer; NPT_MemoryStream buffer; writer.Serialize(*root, buffer); CHECK(buffer.GetBuffer() == NPT_DataBuffer(expect, NPT_StringLength(expect))); delete root; }
SimpleDMR::SimpleDMR(Callback *callback, const UUID& uuid) : m_callback(callback) { m_uuid = uuid; m_deviceType = "urn:schemas-upnp-org:device:MediaRenderer:1"; m_friendlyName = "SimpleDMR[WTF]"; m_manufacturer = "NETGEAR Inc."; m_manufacturerURL = "http://www.netgear.com"; m_modelDescription = "GENIE SimpleDMR"; m_modelName = "SimpleDMR"; m_modelNumber = "DJ-DMR"; m_modelURL = "http://www.netgear.com"; m_serialNumber = "262471"; m_upc = "400240112011"; m_presentationURL = "http://www.netgear.com"; registerServices(g_DMRServiceTable, g_DMRServiceTableSize); registerStaticContent("icon1", "image/png", NPT_DataBuffer(g_icon120_png, g_icon120_png_size, false), false); registerStaticContent("icon2", "image/png", NPT_DataBuffer(g_icon48_png, g_icon48_png_size, false), false); registerStaticContent("icon3", "image/png", NPT_DataBuffer(g_icon32_png, g_icon32_png_size, false), false); registerStaticContent("icon4", "image/jpeg", NPT_DataBuffer(g_icon120_jpg, g_icon120_jpg_size, false), false); registerStaticContent("icon5", "image/jpeg", NPT_DataBuffer(g_icon48_jpg, g_icon48_jpg_size, false), false); registerStaticContent("icon6", "image/jpeg", NPT_DataBuffer(g_icon32_jpg, g_icon32_jpg_size, false), false); /* const char *sinkProtocolInfo = "http-get:*:image/png:*," "http-get:*:image/jpeg:*," "http-get:*:image/bmp:*," "http-get:*:image/gif:*," "http-get:*:audio/mpeg:*," "http-get:*:audio/3gpp:*," "http-get:*:audio/mp4:*," "http-get:*:audio/x-ms-wma:*," "http-get:*:audio/wav:*," "http-get:*:video/mp4:*," "http-get:*:video/mpeg:*," "http-get:*:video/x-ms-wmv:*," "http-get:*:video/x-ms-asf:*," "http-get:*:video/3gpp:*," "http-get:*:video/avi:*," "http-get:*:video/quicktime:*" ; */ const char *cms = "urn:upnp-org:serviceId:ConnectionManager"; setStateValue(cms, "SourceProtocolInfo", ""); // setStateValue(cms, "SinkProtocolInfo", sinkProtocolInfo); setStateValue(cms, "CurrentConnectionIDs", "0"); /* const char *avt = "urn:upnp-org:serviceId:AVTransport"; setStateValue(avt, "TransportState", "NO_MEDIA_PRESENT"); setStateValue(avt, "TransportStatus", "OK"); setStateValue(avt, "PlaybackStorageMedium", "NONE"); setStateValue(avt, "RecordStorageMedium", "NOT_IMPLEMENTED"); setStateValue(avt, "PossiblePlaybackStorageMedia", "NONE,NETWORK,UNKNOWN,HDD"); setStateValue(avt, "PossibleRecordStorageMedia", "NOT_IMPLEMENTED"); setStateValue(avt, "CurrentPlayMode", "NORMAL"); setStateValue(avt, "TransportPlaySpeed", "1"); setStateValue(avt, "RecordMediumWriteStatus", "NOT_IMPLEMENTED"); setStateValue(avt, "CurrentRecordQualityMode", "NOT_IMPLEMENTED"); setStateValue(avt, "PossibleRecordQualityModes", "NOT_IMPLEMENTED"); setStateValue(avt, "NumberOfTracks", "0"); setStateValue(avt, "CurrentTrack", "0"); setStateValue(avt, "CurrentTrackDuration", "00:00:00"); setStateValue(avt, "CurrentMediaDuration", "00:00:00"); setStateValue(avt, "CurrentTrackMetaData", ""); setStateValue(avt, "CurrentTrackURI", ""); setStateValue(avt, "AVTransportURI", ""); setStateValue(avt, "AVTransportURIMetaData", ""); setStateValue(avt, "NextAVTransportURI", "NOT_IMPLEMENTED"); setStateValue(avt, "NextAVTransportURIMetaData", "NOT_IMPLEMENTED"); setStateValue(avt, "RelativeTimePosition", "00:00:00"); setStateValue(avt, "AbsoluteTimePosition", "NOT_IMPLEMENTED"); setStateValue(avt, "RelativeCounterPosition", "-1"); setStateValue(avt, "AbsoluteCounterPosition", "-1"); setStateValue(avt, "CurrentTransportActions", ""); const char *rcs = "urn:upnp-org:serviceId:RenderingControl"; setStateValue(rcs, "PresetNameList", "FactoryDefaults"); setStateValue(rcs, "Mute", "0"); setStateValue(rcs, "Volume", "100"); */ setVar(DMRVAR_TransportState, "NO_MEDIA_PRESENT"); setVar(DMRVAR_TransportStatus, "OK"); setVar(DMRVAR_PlaybackStorageMedium, "NONE"); setVar(DMRVAR_RecordStorageMedium, "NOT_IMPLEMENTED"); setVar(DMRVAR_PossiblePlaybackStorageMedia, "NONE,NETWORK,UNKNOWN,HDD"); setVar(DMRVAR_PossibleRecordStorageMedia, "NOT_IMPLEMENTED"); setVar(DMRVAR_CurrentPlayMode, "NORMAL"); setVar(DMRVAR_TransportPlaySpeed, "1"); setVar(DMRVAR_RecordMediumWriteStatus, "NOT_IMPLEMENTED"); setVar(DMRVAR_CurrentRecordQualityMode, "NOT_IMPLEMENTED"); setVar(DMRVAR_PossibleRecordQualityModes, "NOT_IMPLEMENTED"); setVar(DMRVAR_NumberOfTracks, "0"); setVar(DMRVAR_CurrentTrack, "0"); setVar(DMRVAR_CurrentTrackDuration, "00:00:00"); setVar(DMRVAR_CurrentMediaDuration, "00:00:00"); setVar(DMRVAR_CurrentTrackMetaData, ""); setVar(DMRVAR_CurrentTrackURI, ""); setVar(DMRVAR_AVTransportURI, ""); setVar(DMRVAR_AVTransportURIMetaData, ""); setVar(DMRVAR_NextAVTransportURI, "NOT_IMPLEMENTED"); setVar(DMRVAR_NextAVTransportURIMetaData, "NOT_IMPLEMENTED"); setVar(DMRVAR_RelativeTimePosition, "00:00:00"); setVar(DMRVAR_AbsoluteTimePosition, "NOT_IMPLEMENTED"); setVar(DMRVAR_RelativeCounterPosition, "-1"); setVar(DMRVAR_AbsoluteCounterPosition, "-1"); setVar(DMRVAR_CurrentTransportActions, ""); setVar(DMRVAR_PresetNameList, "FactoryDefaults"); setVar(DMRVAR_Mute, "0"); setVar(DMRVAR_Volume, "100"); }