2 // NormalBattleTest.swift
5 // Created by Hori,Masaki on 2017/10/19.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
15 class NormalBattleTest: XCTestCase {
17 var savedShips: [Ship] = []
18 var shipsHp: [Int] = []
19 var shipEquipments: [NSOrderedSet] = []
20 var shipExSlot: [Int] = []
22 func initBattleFleet(_ fleet: Int) {
31 let store = ServerDataStore.oneTimeEditor()
33 guard let secondFleet = store.deck(by: 2) else { return XCTFail("Can not get Deck.") }
34 (0...5).forEach { secondFleet.setShip(id: $0 + 10, for: $0) }
36 guard let deck = store.deck(by: fleet) else { return XCTFail("Can not get Deck.") }
37 (0...5).forEach { deck.setShip(id: $0 + 1, for: $0) }
39 store.ships(byDeckId: fleet).forEach {
44 shipEquipments += [$0.equippedItem]
45 shipExSlot += [$0.slot_ex]
51 let rawValue: [String: Any] = [
57 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
58 XCTAssertNotNil(json["api_result"])
60 let paramValue: [String: String] = [
61 "api_deck_id": "\(fleet)",
62 "api_maparea_id": "1",
65 let param = Parameter(paramValue)
66 XCTAssertEqual(param["api_deck_id"].string, "\(fleet)")
68 let api = APIResponse(api: MapAPI.start.rawValue, parameter: param, json: json)
69 XCTAssertEqual(api.json, json)
70 XCTAssertEqual(api.parameter, param)
72 let command = MapStartCommand(apiResponse: api)
79 let store = TemporaryDataStore.default
80 let battle = store.battle()
81 XCTAssertNotNil(battle)
82 XCTAssertEqual(battle?.deckId, fleet)
86 func clear(_ fleet: Int) {
93 let store = ServerDataStore.oneTimeEditor()
95 let ships = store.ships(byDeckId: fleet)
97 zip(ships, shipsHp).forEach { $0.nowhp = $1 }
98 zip(ships, shipEquipments).forEach { $0.equippedItem = $1 }
99 zip(ships, shipExSlot).forEach { $0.slot_ex = $1 }
101 guard let deck = store.deck(by: fleet) else { return XCTFail("Can not get Deck.") }
102 savedShips.enumerated().forEach { deck.setShip(id: $0.element.id, for: $0.offset) }
106 let store = TemporaryDataStore.default
107 let battle = store.battle()
112 func normalBattle(_ fleet: Int) {
116 let rawValue: [String: Any] = [
126 "api_opening_atack": [
148 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
149 let param = Parameter(["Test": "Test"])
150 let api = APIResponse(api: BattleAPI.battle.rawValue, parameter: param, json: json)
152 let command = BattleCommand(apiResponse: api)
158 let rawValue: [String: Any] = [
173 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
174 let param = Parameter(["Test": "Test"])
175 let api = APIResponse(api: BattleAPI.midnightBattle.rawValue, parameter: param, json: json)
177 let command = BattleCommand(apiResponse: api)
183 let rawValue: [String: Any] = [
186 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
187 let param = Parameter(["Test": "Test"])
188 let api = APIResponse(api: BattleAPI.battleResult.rawValue, parameter: param, json: json)
190 let command = BattleCommand(apiResponse: api)
196 let store = ServerDataStore.oneTimeEditor()
197 let ships = store.ships(byDeckId: fleet)
199 XCTAssertEqual(ships.count, 6)
201 XCTAssertEqual(ships[0].nowhp, shipsHp[0] - 3)
202 XCTAssertEqual(ships[1].nowhp, shipsHp[1] - 3)
203 XCTAssertEqual(ships[2].nowhp, shipsHp[2] - 1)
204 XCTAssertEqual(ships[3].nowhp, shipsHp[3] - 1)
205 XCTAssertEqual(ships[4].nowhp, shipsHp[4] - 5)
206 XCTAssertEqual(ships[5].nowhp, shipsHp[5])
210 func damageControl(_ fleet: Int) {
214 let store = ServerDataStore.oneTimeEditor()
216 store.ship(by: 5).flatMap {
218 $0.slot_ex = 63765 // 女神
220 store.ship(by: 6).flatMap {
223 $0.equippedItem = store.slotItem(by: 72418).map { NSOrderedSet(array: [$0]) } ?? []
229 let rawValue: [String: Any] = [
248 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
249 let param = Parameter(["Test": "Test"])
250 let api = APIResponse(api: BattleAPI.midnightBattle.rawValue, parameter: param, json: json)
252 let command = BattleCommand(apiResponse: api)
258 let rawValue: [String: Any] = [
261 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
262 let param = Parameter(["Test": "Test"])
263 let api = APIResponse(api: BattleAPI.battleResult.rawValue, parameter: param, json: json)
265 let command = BattleCommand(apiResponse: api)
271 let store = ServerDataStore.oneTimeEditor()
272 let ships = store.ships(byDeckId: fleet)
274 XCTAssertEqual(ships.count, 6)
276 XCTAssertEqual(ships[0].nowhp, shipsHp[0])
277 XCTAssertEqual(ships[1].nowhp, shipsHp[1])
278 XCTAssertEqual(ships[2].nowhp, shipsHp[2])
279 XCTAssertEqual(ships[3].nowhp, 0)
280 XCTAssertEqual(ships[4].nowhp, shipsHp[4])
281 XCTAssertEqual(ships[5].nowhp, Int(Double(shipsHp[5]) * 0.2))
285 func testFirstFleet() {
293 func testSecondFleet() {
301 func testThiredFleet() {
309 func testFourthFleet() {