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
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
{\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
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
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