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 deck = store.deck(by: fleet) else { return XCTFail("Can not get Deck.") }
34 (0...6).forEach { deck.setShip(id: $0 + 1, for: $0) }
36 store.ships(byDeckId: fleet).forEach {
41 shipEquipments += [$0.equippedItem]
42 shipExSlot += [$0.slot_ex]
48 let rawValue: [String: Any] = [
54 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
55 XCTAssertNotNil(json["api_result"])
57 let paramValue: [String: String] = [
58 "api_deck_id": "\(fleet)",
59 "api_maparea_id": "1",
62 let param = Parameter(paramValue)
63 XCTAssertEqual(param["api_deck_id"].string, "\(fleet)")
65 let api = APIResponse(api: MapAPI.start.rawValue, parameter: param, json: json)
66 XCTAssertEqual(api.json, json)
67 XCTAssertEqual(api.parameter, param)
69 let command = MapStartCommand(apiResponse: api)
76 let store = TemporaryDataStore.default
77 let battle = store.battle()
78 XCTAssertNotNil(battle)
79 XCTAssertEqual(battle?.deckId, fleet)
83 func clear(_ fleet: Int) {
90 let store = ServerDataStore.oneTimeEditor()
92 let ships = store.ships(byDeckId: fleet)
94 zip(ships, shipsHp).forEach { $0.nowhp = $1 }
95 zip(ships, shipEquipments).forEach { $0.equippedItem = $1 }
96 zip(ships, shipExSlot).forEach { $0.slot_ex = $1 }
98 guard let deck = store.deck(by: fleet) else { return XCTFail("Can not get Deck.") }
99 savedShips.enumerated().forEach { deck.setShip(id: $0.element.id, for: $0.offset) }
103 let store = TemporaryDataStore.default
104 let battle = store.battle()
109 func normalBattle(_ fleet: Int) {
113 let rawValue: [String: Any] = [
123 "api_opening_atack": [
149 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
150 let param = Parameter(["Test": "Test"])
151 let api = APIResponse(api: BattleAPI.battle.rawValue, parameter: param, json: json)
153 let command = BattleCommand(apiResponse: api)
159 let rawValue: [String: Any] = [
178 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
179 let param = Parameter(["Test": "Test"])
180 let api = APIResponse(api: BattleAPI.midnightBattle.rawValue, parameter: param, json: json)
182 let command = BattleCommand(apiResponse: api)
188 let rawValue: [String: Any] = [
191 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
192 let param = Parameter(["Test": "Test"])
193 let api = APIResponse(api: BattleAPI.battleResult.rawValue, parameter: param, json: json)
195 let command = BattleCommand(apiResponse: api)
201 let store = ServerDataStore.oneTimeEditor()
202 let ships = store.ships(byDeckId: fleet)
204 XCTAssertEqual(ships.count, 7)
206 XCTAssertEqual(ships[0].nowhp, shipsHp[0] - 1)
207 XCTAssertEqual(ships[1].nowhp, shipsHp[1] - 2)
208 XCTAssertEqual(ships[2].nowhp, shipsHp[2] - 3)
209 XCTAssertEqual(ships[3].nowhp, shipsHp[3] - 4)
210 XCTAssertEqual(ships[4].nowhp, shipsHp[4] - 5)
211 XCTAssertEqual(ships[5].nowhp, shipsHp[5] - 6)
212 XCTAssertEqual(ships[6].nowhp, shipsHp[6] - 7)
216 func damageControl(_ fleet: Int) {
220 let store = ServerDataStore.oneTimeEditor()
222 store.ship(by: 5).flatMap {
224 $0.slot_ex = 63765 // 女神
226 store.ship(by: 6).flatMap {
229 $0.equippedItem = store.slotItem(by: 72418).map { NSOrderedSet(array: [$0]) } ?? []
235 let rawValue: [String: Any] = [
260 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
261 let param = Parameter(["Test": "Test"])
262 let api = APIResponse(api: BattleAPI.midnightBattle.rawValue, parameter: param, json: json)
264 let command = BattleCommand(apiResponse: api)
270 let rawValue: [String: Any] = [
273 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
274 let param = Parameter(["Test": "Test"])
275 let api = APIResponse(api: BattleAPI.battleResult.rawValue, parameter: param, json: json)
277 let command = BattleCommand(apiResponse: api)
283 let store = ServerDataStore.oneTimeEditor()
284 let ships = store.ships(byDeckId: fleet)
286 XCTAssertEqual(ships.count, 7)
288 XCTAssertEqual(ships[0].nowhp, shipsHp[0])
289 XCTAssertEqual(ships[1].nowhp, shipsHp[1])
290 XCTAssertEqual(ships[2].nowhp, shipsHp[2])
291 XCTAssertEqual(ships[3].nowhp, 0)
292 XCTAssertEqual(ships[4].nowhp, shipsHp[4])
293 XCTAssertEqual(ships[5].nowhp, Int(Double(shipsHp[5]) * 0.2))
297 func testFirstFleet() {
305 func testSecondFleet() {
313 func testThiredFleet() {
321 func testFourthFleet() {