OSDN Git Service

一覧プライマリの位置が閉じていると保存されないのを直す
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer.Test / QuestInfoTest.cs
index 24984b3..6f9aa26 100644 (file)
@@ -15,9 +15,9 @@
 using System;\r
 using System.Collections.Generic;\r
 using System.Linq;\r
+using DynaJson;\r
 using ExpressionToCodeLib;\r
 using KancolleSniffer.Model;\r
-using KancolleSniffer.Util;\r
 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
 \r
 namespace KancolleSniffer.Test\r
@@ -31,62 +31,37 @@ namespace KancolleSniffer.Test
             var queue = new Queue<DateTime>(new[]\r
             {\r
                 new DateTime(2017, 11, 1, 5, 0, 0), new DateTime(2017, 11, 6, 5, 0, 0),\r
-                new DateTime(2017, 12, 1, 5, 0, 0)\r
+                new DateTime(2017, 12, 1, 5, 0, 0), new DateTime(2018, 2, 1, 5, 0, 0),\r
+                new DateTime(2018, 3, 1, 5, 0, 0), new DateTime(2018, 5, 1, 5, 0, 0)\r
             });\r
-            var questInfo = new QuestInfo(() => queue.Dequeue());\r
+            var questInfo = MakeQuestInfo(() => queue.Dequeue());\r
             var status = new Status\r
             {\r
                 QuestCountList = new[]\r
                 {\r
                     new QuestCount {Id = 201, Now = 1}, new QuestCount {Id = 213, Now = 1},\r
-                    new QuestCount {Id = 265, Now = 1}, new QuestCount {Id = 822, Now = 1}\r
+                    new QuestCount {Id = 265, Now = 1},\r
+                    new QuestCount {Id = 436, NowArray = new[] {1, 1, 1, 1, 0}},\r
+                    new QuestCount {Id = 437, NowArray = new[] {1, 1, 1, 1}},\r
+                    new QuestCount {Id = 822, Now = 1},\r
+                    new QuestCount {Id = 904, NowArray = new[] {1, 1, 1, 1}}\r
                 },\r
                 QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)\r
             };\r
             questInfo.LoadState(status);\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
-            questInfo.SaveState(status);\r
-            PAssert.That(() =>\r
-                status.QuestCountList.Select(qc => new {qc.Id, qc.Now}).SequenceEqual(new[]\r
-                    {new {Id = 213, Now = 1}, new {Id = 822, Now = 1}})); // デイリーとマンスリーが消える\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
-            questInfo.SaveState(status);\r
-            PAssert.That(() =>\r
-                status.QuestCountList.Select(qc => new {qc.Id, qc.Now}).SequenceEqual(new[]\r
-                    {new {Id = 822, Now = 1}})); // ウィークリーが消える\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
-            questInfo.SaveState(status);\r
-            PAssert.That(() => status.QuestCountList.Length == 0); // クォータリーが消える\r
+            CheckQuestCountList(questInfo, status, new[] {213, 436, 437, 822, 904}); // デイリーとマンスリーが消える\r
+            CheckQuestCountList(questInfo, status, new[] {436, 437, 822, 904}); // ウィークリーが消える\r
+            CheckQuestCountList(questInfo, status, new[] {436, 437, 904}); // クォータリーが消える\r
+            CheckQuestCountList(questInfo, status, new[] {436, 437}); // イヤーリー2月が消える\r
+            CheckQuestCountList(questInfo, status, new[] {437}); // イヤーリー3月が消える\r
+            CheckQuestCountList(questInfo, status, new int[0]); // イヤーリー5月が消える\r
         }\r
 \r
-        [TestMethod]\r
-        public void ResetQuestList()\r
+        private void CheckQuestCountList(QuestInfo questInfo, Status status, int[] quests)\r
         {\r
-            var queue = new Queue<DateTime>(new[]\r
-            {\r
-                new DateTime(2017, 11, 1, 5, 0, 0), new DateTime(2017, 11, 6, 5, 0, 0),\r
-                new DateTime(2017, 12, 1, 5, 0, 0)\r
-            });\r
-            var questInfo = new QuestInfo(() => queue.Dequeue());\r
-            var status = new Status\r
-            {\r
-                QuestList = new[]\r
-                {\r
-                    new QuestStatus {Id = 201, Category = 2}, new QuestStatus {Id = 213, Category = 2},\r
-                    new QuestStatus {Id = 265, Category = 2}, new QuestStatus {Id = 822, Category = 8}\r
-                },\r
-                QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)\r
-            };\r
-            questInfo.LoadState(status);\r
-            questInfo.InspectQuestList(CreateQuestList(new int[0]));\r
-            questInfo.SaveState(status);\r
-            PAssert.That(() => status.QuestList.Select(q => q.Id).SequenceEqual(new[] {213, 822})); // デイリーとマンスリーが消える\r
-            questInfo.InspectQuestList(CreateQuestList(new int[0]));\r
-            questInfo.SaveState(status);\r
-            PAssert.That(() => status.QuestList.Select(q => q.Id).SequenceEqual(new[] {822})); // ウィークリーが消える\r
-            questInfo.InspectQuestList(CreateQuestList(new int[0]));\r
+            InspectQuestList(questInfo, new[] {201});\r
             questInfo.SaveState(status);\r
-            PAssert.That(() => status.QuestList.Length == 0); // クォータリーが消える\r
+            PAssert.That(() =>  status.QuestCountList.Select(qc => qc.Id).SequenceEqual(quests));\r
         }\r
 \r
         [TestMethod]\r
@@ -96,14 +71,14 @@ namespace KancolleSniffer.Test
             {\r
                 new DateTime(2019, 1, 22, 4, 0, 0)\r
             });\r
-            var questInfo = new QuestInfo(() => queue.Dequeue());\r
+            var questInfo = MakeQuestInfo(() => queue.Dequeue());\r
             var status = new Status\r
             {\r
                 QuestCountList = new[] {new QuestCount {Id = 213, Now = 1}},\r
                 QuestLastReset = new DateTime(2019, 1, 20, 5, 16, 22)\r
             };\r
             questInfo.LoadState(status);\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
+            InspectQuestList(questInfo, new[] {201});\r
             questInfo.SaveState(status);\r
             PAssert.That(() => status.QuestCountList.Length == 0);\r
         }\r
@@ -116,68 +91,62 @@ namespace KancolleSniffer.Test
                 new DateTime(2019, 1, 27, 10, 0, 0),\r
                 new DateTime(2019, 1, 28, 5, 0, 0)\r
             });\r
-            var questInfo = new QuestInfo(() => queue.Dequeue());\r
+            var questInfo = MakeQuestInfo(() => queue.Dequeue());\r
             var status = new Status\r
             {\r
                 QuestLastReset = new DateTime(2019, 1, 27, 5, 0, 0)\r
             };\r
             questInfo.LoadState(status);\r
-            questInfo.InspectQuestList( // 2019-1-27 10:00\r
-                Js(new\r
-                {\r
-                    api_list = new[]\r
-                    {\r
-                        new\r
-                        {\r
-                            api_no = 237,\r
-                            api_category = 2,\r
-                            api_type = 2,\r
-                            api_state = 2,\r
-                            api_title = "【節分拡張任務】南方海域 艦隊決戦",\r
-                            api_detail = "",\r
-                            api_get_material = new int[0],\r
-                            api_progress_flag = 0\r
-                        }\r
-                    }\r
-                }));\r
+            InspectQuestList(questInfo, // 2019-1-27 10:00\r
+                new[] {237}); // 【節分拡張任務】南方海域 艦隊決戦\r
             PAssert.That(() => questInfo.Quests[0].Id == 237);\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {201})); // 2019-1-28 05:00\r
+            InspectQuestList(questInfo, new[] {201}); // 2019-1-28 05:00\r
             PAssert.That(() => questInfo.Quests[0].Id == 201);\r
         }\r
 \r
-        private JsonObject Js(object obj) => JsonObject.CreateJsonObject(obj);\r
+        [TestMethod]\r
+        public void NotImplemented()\r
+        {\r
+            var questInfo = MakeQuestInfo(() => new DateTime(2015, 1, 1));\r
+            InspectQuestList(questInfo, new[] {679});\r
+            PAssert.That(() => questInfo.Quests[0].Count.Spec.Material.Length == 0);\r
+        }\r
+\r
+        private JsonObject Js(object obj) => new JsonObject(obj);\r
 \r
         private object CreateQuestList(int[] ids) => Js(new\r
         {\r
-            api_list =\r
-                ids.Select(id => new\r
-                {\r
-                    api_no = id,\r
-                    api_category = id / 100,\r
-                    api_type = 1,\r
-                    api_state = 2,\r
-                    api_title = "",\r
-                    api_detail = "",\r
-                    api_get_material = new int[0],\r
-                    api_progress_flag = 0\r
-                })\r
+            api_list = ids.Select(id => CreateQuest(id, 2))\r
         });\r
 \r
-        [TestMethod]\r
-        public void NotImplemented()\r
+        private object CreateQuest(int id, int state)\r
         {\r
-            var questInfo = new QuestInfo(() => new DateTime(2015, 1, 1));\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {679}));\r
-            PAssert.That(() => questInfo.Quests[0].Count.Spec.Material.Length == 0);\r
+            return new\r
+            {\r
+                api_no = id,\r
+                api_category = id / 100,\r
+                api_type = 1,\r
+                api_state = state,\r
+                api_title = "",\r
+                api_detail = "",\r
+                api_get_material = new int[0],\r
+                api_progress_flag = 0\r
+            };\r
+        }\r
+\r
+        private void InspectQuestList(QuestInfo questInfo, int[] ids)\r
+        {\r
+            questInfo.InspectQuestList("api_tab_id=0", CreateQuestList(ids));\r
         }\r
 \r
+\r
         /// <summary>\r
         /// 状態をロードするときに獲得資材に特殊資材のリストを追加しない\r
         /// </summary>\r
         [TestMethod]\r
         public void LoadStateNotAppendMaterialList()\r
         {\r
-            var questInfo = new QuestInfo(() => new DateTime(2015, 1, 1));\r
+            var questInfo = MakeQuestInfo(() => new DateTime(2015, 1, 1));\r
             var status = new Status\r
             {\r
                 QuestList = new[]\r
@@ -199,5 +168,10 @@ namespace KancolleSniffer.Test
             questInfo.LoadState(status);\r
             PAssert.That(() => questInfo.Quests[0].Material.Length == 8);\r
         }\r
+\r
+        private QuestInfo MakeQuestInfo(Func<DateTime> nowFunc)\r
+        {\r
+            return new QuestInfo(new QuestCountList(), nowFunc);\r
+        }\r
     }\r
 }
\ No newline at end of file