/* **============================================================================== ** ** Open Management Infrastructure (OMI) ** ** Copyright (c) Microsoft Corporation ** ** Licensed under the Apache License, Version 2.0 (the "License"); you may not ** use this file except in compliance with the License. You may obtain a copy ** of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ** KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED ** WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, ** MERCHANTABLITY OR NON-INFRINGEMENT. ** ** See the Apache 2 License for the specific language governing permissions ** and limitations under the License. ** **============================================================================== */ #include #include #include #include #include #include #include using namespace std; #if defined(CONFIG_ENABLE_WCHAR) typedef std::wstring String; #else typedef std::string String; #endif WSBuf s_buf; NitsSetup(TestWsbufSetup) NitsEndSetup NitsCleanup(TestWsbufSetup) NitsEndCleanup #define TEST_STR_CHAR "`';\"\\!@#$%^&*()_+<>" #define TEST_STR MI_T("`';\"\\!@#$%^&*()_+<>") #define TEST_STR_ENCODED PAL_T("`';"\\!@#$%^&*()_+<>") #if defined(CONFIG_ENABLE_WCHAR) typedef std::wstring String; #else typedef std::string String; #endif NitsTestWithSetup(TestXMLStringEncoding, TestWsbufSetup) { String result; if(!TEST_ASSERT (MI_RESULT_OK == WSBuf_Init(&s_buf, 10))) NitsReturn; for ( unsigned int i = 0; i < 100; i++ ) { result += TEST_STR_ENCODED; TEST_ASSERT (MI_RESULT_OK == WSBuf_AddString(&s_buf, TEST_STR) ); } Page* p = WSBuf_StealPage(&s_buf); TEST_ASSERT(0 != p); /* content expected to be 0-terminated */ String buf_result( (const ZChar*) (p + 1) ); //cout << buf_result << endl; TEST_ASSERT(result == buf_result); PAL_Free(p); TEST_ASSERT (MI_RESULT_OK == WSBuf_Destroy(&s_buf)); } NitsEndTest NitsTestWithSetup(TestToFromXML, TestWsbufSetup) { String result; Page* p = NULL; XML * xml = NULL; XML_Elem e; if(!TEST_ASSERT (MI_RESULT_OK == WSBuf_Init(&s_buf, 10))) NitsReturn; if(!TEST_ASSERT (MI_RESULT_OK == WSBuf_AddStringNoEncoding(&s_buf, PAL_T("")) )) goto cleanup; for ( unsigned int i = 0; i < 100; i++ ) { result += TEST_STR; if(!TEST_ASSERT (MI_RESULT_OK == WSBuf_AddString(&s_buf, TEST_STR) )) goto cleanup; } if(!TEST_ASSERT (MI_RESULT_OK == WSBuf_AddStringNoEncoding(&s_buf, PAL_T("")) )) goto cleanup; p = WSBuf_StealPage(&s_buf); if(!TEST_ASSERT(0 != p)) goto cleanup; /* create xml */ xml = (XML *) PAL_Malloc(sizeof(XML)); if(!TEST_ASSERT(xml != NULL)) goto cleanup; XML_Init(xml); XML_SetText(xml, (ZChar*) (p + 1)); TEST_ASSERT(0 == XML_Next(xml, &e)); TEST_ASSERT(Tcscmp(e.data.data, PAL_T("a")) == 0); TEST_ASSERT(e.type == XML_START); TEST_ASSERT(0 == XML_Next(xml, &e)); TEST_ASSERT(e.type == XML_CHARS); TEST_ASSERT(result == e.data.data); TEST_ASSERT(0 == XML_Next(xml, &e)); TEST_ASSERT(Tcscmp(e.data.data, PAL_T("a")) == 0); TEST_ASSERT(e.type == XML_END); cleanup: if(p) PAL_Free(p); if(xml) PAL_Free(xml); TEST_ASSERT (MI_RESULT_OK == WSBuf_Destroy(&s_buf)); } NitsEndTest