From 20a7e8bd75ff906e11e17f7ddba1d253e7e532d2 Mon Sep 17 00:00:00 2001 From: N2614 Date: Thu, 26 Jan 2012 05:26:07 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=97=E3=83=AA=E3=82=A4=E3=83=B3=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=83=BC=E3=83=AB=E3=83=86=E3=83=BC=E3=83=96=E3=83=AB?= =?UTF-8?q?=E3=81=8C=E5=AD=98=E5=9C=A8=E3=81=97=E3=81=AA=E3=81=84=E5=A0=B4?= =?UTF-8?q?=E5=90=88=E3=81=AB=E3=82=A8=E3=83=A9=E3=83=BC=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@606 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../sources/ConsoleRestore/Controller.cpp | 30 +++++--- .../ConsoleRestore/PreinstallImporter.cpp | 9 ++- .../ConsoleRestore/PreinstallImporter.h | 2 + .../test_PreinstallImporter.cpp | 19 +++-- .../SimpleXmlParser/test_SimpleXmlParser.cpp | 74 +++++++++++++++---- 5 files changed, 104 insertions(+), 30 deletions(-) diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp index ee68357..18ab404 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp @@ -1705,8 +1705,9 @@ void ControlState(common::HardwareStateManager& manager, ::std::vectorcontentSize); void* titleIdBuffer = xmlHeap.GetAddr(); @@ -191,7 +199,6 @@ void PreinstallImporter::SplitTextAndSetupList(nn::ProgramId* list, size_t* num, const char* token = ","; char* cutout; - *num = 0; cutout = std::strtok(text, token); if(!cutout) { diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/PreinstallImporter.h b/trunk/ConsoleDataMigration/sources/ConsoleRestore/PreinstallImporter.h index d075f0a..8ebba31 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/PreinstallImporter.h +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/PreinstallImporter.h @@ -45,6 +45,8 @@ private: nn::Result GetHtmlBodyAndParseXmlData(BgsCommunicator& comm, nn::ProgramId* list, size_t* num); //! @brief 受信したXMLデータを解析してタイトルIDリストを設定します + //! @return プリインストールアプリが存在しない場合、(Level=Status, Summary=NotFound, Module=Application, Description=NotFound)
+ //! のResultを返します nn::Result ParseXmlData(void* buf, nn::ProgramId* list, size_t* num); //! @brief SimpleXmlパーサの解析をTitleIdノードまで進めます diff --git a/trunk/ConsoleDataMigration/sources/tests/ConsoleRestore/PreinstallImporter/test_PreinstallImporter.cpp b/trunk/ConsoleDataMigration/sources/tests/ConsoleRestore/PreinstallImporter/test_PreinstallImporter.cpp index 522c00f..c637104 100644 --- a/trunk/ConsoleDataMigration/sources/tests/ConsoleRestore/PreinstallImporter/test_PreinstallImporter.cpp +++ b/trunk/ConsoleDataMigration/sources/tests/ConsoleRestore/PreinstallImporter/test_PreinstallImporter.cpp @@ -103,13 +103,22 @@ void PreinstallImporterTest::ListUp() size_t num; nn::ProgramId list[256]; - NN_TEST_ASSERT_RESULT_SUCCESS( - importer.ListTitles(list, &num, 17179924184, reinterpret_cast(const_cast("EJA20305940")))); + nn::Result result; + result = importer.ListTitles(list, &num, 17179924184, reinterpret_cast(const_cast("EJA20305940"))); - NN_LOG("Preinstalled num = %d\n", num); - for(u32 i = 0; i < num; i++) + if(result == nn::MakePermanentResult(nn::Result::SUMMARY_NOT_FOUND, + nn::Result::MODULE_APPLICATION, nn::Result::DESCRIPTION_NOT_FOUND)) { - NN_LOG("%016llx\n", list[i]); + NN_LOG("No PreInstalled Application found\n"); + NN_TEST_ASSERT(num == 0); + } + else + { + NN_LOG("Preinstalled num = %d\n", num); + for (u32 i = 0; i < num; i++) + { + NN_LOG("%016llx\n", list[i]); + } } } diff --git a/trunk/ConsoleDataMigration/sources/tests/ConsoleRestore/SimpleXmlParser/test_SimpleXmlParser.cpp b/trunk/ConsoleDataMigration/sources/tests/ConsoleRestore/SimpleXmlParser/test_SimpleXmlParser.cpp index 4c3d146..efd0b54 100644 --- a/trunk/ConsoleDataMigration/sources/tests/ConsoleRestore/SimpleXmlParser/test_SimpleXmlParser.cpp +++ b/trunk/ConsoleDataMigration/sources/tests/ConsoleRestore/SimpleXmlParser/test_SimpleXmlParser.cpp @@ -39,9 +39,11 @@ class SimpleXmlParserTest : public Suite { public: SimpleXmlParserTest() { TEST_ADD(SimpleXmlParserTest::Find); + TEST_ADD(SimpleXmlParserTest::NotFound); } private: void Find(); + void NotFound(); }; namespace @@ -84,6 +86,25 @@ const char* SimpleXmlParserGetter::GetContent(const nn::xml::simple::SimpleXmlPa char SimpleXmlParserGetter::m_Buf[SimpleXmlParserGetter::BUF_SIZE]; +nn::Result SetNodetoPreinstalledInfo(nn::xml::simple::SimpleXmlParser& parser, std::string& xmlData, const nn::xml::simple::SimpleXmlParser::Node** pNode) +{ + parser.parse(reinterpret_cast(const_cast(xmlData.c_str())), xmlData.size()); + + NN_TEST_ASSERT(!parser.isError()); + const nn::xml::simple::SimpleXmlParser::Node* pRootNode = parser.getRootNode(); + const nn::xml::simple::SimpleXmlParser::Node* pTargetNode = pRootNode->firstChild; + // 欲しい情報がある場所まで階層を掘り下げる + const nn::xml::simple::SimpleXmlParser::Node* pPriorityNode = nn::xml::simple::SimpleXmlParser::FindNextNode( + pTargetNode, "Body"); + pPriorityNode = nn::xml::simple::SimpleXmlParser::FindNextNode(pPriorityNode->firstChild, + "GetPreInstalledInfoResponse"); + pPriorityNode = nn::xml::simple::SimpleXmlParser::FindNextNode(pPriorityNode->firstChild, + "GetPreInstalledInfoResponse"); + *pNode = nn::xml::simple::SimpleXmlParser::FindNextNode(pPriorityNode->firstChild, "PreinstalledInfo"); + + return nn::ResultSuccess(); +} + } //------------------------------------------------------------------ @@ -117,20 +138,9 @@ const char testText[] = "\ nn::fnd::IAllocator* pAllocator = nn::init::GetAllocator(); nn::xml::simple::SimpleXmlParser simpleXmlParser(pAllocator); - simpleXmlParser.parse(reinterpret_cast(const_cast(testText)), sizeof(testText) - 1); - - - NN_TEST_ASSERT(!simpleXmlParser.isError()); - const nn::xml::simple::SimpleXmlParser::Node* pRootNode = simpleXmlParser.getRootNode(); - const nn::xml::simple::SimpleXmlParser::Node* pTargetNode = pRootNode->firstChild; - // 欲しい情報がある場所まで階層を掘り下げる - const nn::xml::simple::SimpleXmlParser::Node* pPriorityNode = nn::xml::simple::SimpleXmlParser::FindNextNode( - pTargetNode, "Body"); - pPriorityNode = nn::xml::simple::SimpleXmlParser::FindNextNode(pPriorityNode->firstChild, - "GetPreInstalledInfoResponse"); - pPriorityNode = nn::xml::simple::SimpleXmlParser::FindNextNode(pPriorityNode->firstChild, - "GetPreInstalledInfoResponse"); - pPriorityNode = nn::xml::simple::SimpleXmlParser::FindNextNode(pPriorityNode->firstChild, "PreinstalledInfo"); + const nn::xml::simple::SimpleXmlParser::Node* pPriorityNode; + std::string xmlData(testText); + SetNodetoPreinstalledInfo(simpleXmlParser, xmlData, &pPriorityNode); { const nn::xml::simple::SimpleXmlParser::Node* pTaskIdNode = nn::xml::simple::SimpleXmlParser::FindNextNode( @@ -158,6 +168,42 @@ const char testText[] = "\ } +void SimpleXmlParserTest::NotFound() +{ +const char testText[] = \ +"\ +\ +\ +\ +\ +\ +1327551124393\ +0\ +1\ +\ +17179924184\ +EJA20305940\ +JPN\ +1327545997000\ +\ +\ +\ +\ +"; + + nn::fnd::IAllocator* pAllocator = nn::init::GetAllocator(); + nn::xml::simple::SimpleXmlParser simpleXmlParser(pAllocator); + const nn::xml::simple::SimpleXmlParser::Node* pPriorityNode; + std::string xmlData(testText); + SetNodetoPreinstalledInfo(simpleXmlParser, xmlData, &pPriorityNode); + + { + const nn::xml::simple::SimpleXmlParser::Node* pTaskIdNode = nn::xml::simple::SimpleXmlParser::FindNextNode( + pPriorityNode->firstChild, "TitleIds"); + NN_TEST_ASSERT(!pTaskIdNode); + } +} + NN_TEST_DEFINE_MAIN(SimpleXmlParserTest) /*---------------------------------------------------------------------------*