@@ -775,13 +775,17 @@ TEST_CLASS(GameContext_Tests)
775775 " \" Created\" :1234567890,\" Modified\" :123459999},"
776776 " {\" ID\" :7,\" Title\" :\" Ach2\" ,\" Description\" :\" Desc2\" ,\" Flags\" :5,"
777777 " \" Points\" :15,\" MemAddr\" :\" 1=1\" ,\" Author\" :\" Auth2\" ,\" BadgeName\" :\" 12345\" ,"
778+ " \" Created\" :1234567890,\" Modified\" :123459999},"
779+ " {\" ID\" :9,\" Title\" :\" Ach3\" ,\" Description\" :\" Desc3\" ,\" Flags\" :3,"
780+ " \" Points\" :5,\" MemAddr\" :\" 1=1\" ,\" Author\" :\" Auth3\" ,\" BadgeName\" :\" 12345\" ,"
778781 " \" Created\" :1234567890,\" Modified\" :123459999}"
779782 );
780783
781784 game.mockStorage .MockStoredData (ra::services::StorageItemType::UserAchievements, L" 1" ,
782785 " Version\n "
783786 " Game\n "
784787 " 7:1=2:Ach2b:Desc2b::::Auth2b:25:1234554321:1234555555:::54321\n "
788+ " 9:1=2:Ach3b:Desc3b::::Auth3b:25:1234554321:1234555555:::54321\n "
785789 " 0:\" 1=1\" :\" Ach3\" :\" Desc3\" ::::Auth3:20:1234511111:1234500000:::555\n "
786790 " 0:R:1=1:Ach4:Desc4::::Auth4:10:1234511111:1234500000:::556\n "
787791 );
@@ -811,6 +815,24 @@ TEST_CLASS(GameContext_Tests)
811815 Assert::AreEqual (25 , pAch->GetPoints ());
812816 Assert::AreEqual (std::string (" 1=2" ), pAch->GetTrigger ());
813817
818+ const auto * pTrigger = pAch->GetRuntimeTrigger ();
819+ Assert::AreEqual (2U , pTrigger->requirement ->conditions ->operand2 .value .num ); // runtime trigger updated
820+
821+ // local achievement data for 9 should be merged with server achievement data
822+ pAch = game.Assets ().FindAchievement (9U );
823+ Assert::IsNotNull (pAch);
824+ Ensures (pAch != nullptr );
825+ Assert::AreEqual (std::wstring (L" Ach3b" ), pAch->GetName ());
826+ Assert::AreEqual (std::wstring (L" Desc3b" ), pAch->GetDescription ());
827+ Assert::AreEqual (std::wstring (L" Auth3" ), pAch->GetAuthor ()); // author not merged
828+ Assert::AreEqual (std::wstring (L" 54321" ), pAch->GetBadge ());
829+ Assert::AreEqual (ra::data::models::AssetCategory::Core, pAch->GetCategory ()); // category not merged
830+ Assert::AreEqual (25 , pAch->GetPoints ());
831+ Assert::AreEqual (std::string (" 1=2" ), pAch->GetTrigger ());
832+
833+ pTrigger = pAch->GetRuntimeTrigger ();
834+ Assert::AreEqual (2U , pTrigger->requirement ->conditions ->operand2 .value .num ); // runtime trigger updated
835+
814836 // no server achievement, assign FirstLocalId
815837 pAch = game.Assets ().FindAchievement (GameAssets::FirstLocalId);
816838 Assert::IsNotNull (pAch);
0 commit comments