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, seventh: Bool = false) {
31 let store = ServerDataStore.oneTimeEditor()
33 guard let deck = store.deck(by: fleet) else { return XCTFail("Can not get Deck.") }
35 let max = seventh ? 6 : 5
36 (0...6).forEach { deck.setShip(id: -1, for: $0) }
37 (0...max).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: API(endpointPath: Endpoint.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) }
103 (0...6).forEach { deck.setShip(id: -1, for: $0) }
107 let store = TemporaryDataStore.default
108 let battle = store.battle()
113 func normalBattle(_ fleet: Int, seventh: Bool = false) {
117 let dfList = seventh ? [[2, 2], [6, 6]] : [[2, 2]]
118 let damages = seventh ? [[0, 3], [0, 7]] : [[0, 3]]
119 let fdam = seventh ? [0, 0, 0, 4, 0, 6, 7] : [0, 0, 0, 4, 0, 6]
120 let rawValue: [String: Any] = [
130 "api_opening_atack": [
136 "api_df_list": dfList,
137 "api_damage": damages,
148 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
149 let param = Parameter(["Test": "Test"])
150 let api = APIResponse(api: API(endpointPath: Endpoint.battle.rawValue), parameter: param, json: json)
152 let command = BattleCommand(apiResponse: api)
158 let rawValue: [String: Any] = [
177 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
178 let param = Parameter(["Test": "Test"])
179 let api = APIResponse(api: API(endpointPath: Endpoint.midnightBattle.rawValue), parameter: param, json: json)
181 let command = BattleCommand(apiResponse: api)
187 let rawValue: [String: Any] = [
190 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
191 let param = Parameter(["Test": "Test"])
192 let api = APIResponse(api: API(endpointPath: Endpoint.battleResult.rawValue), parameter: param, json: json)
194 let command = BattleCommand(apiResponse: api)
200 let store = ServerDataStore.oneTimeEditor()
201 let ships = store.ships(byDeckId: fleet)
203 XCTAssertEqual(ships.count, seventh ? 7 : 6)
205 XCTAssertEqual(ships[0].nowhp, shipsHp[0] - 1)
206 XCTAssertEqual(ships[1].nowhp, shipsHp[1] - 2)
207 XCTAssertEqual(ships[2].nowhp, shipsHp[2] - 3)
208 XCTAssertEqual(ships[3].nowhp, shipsHp[3] - 4)
209 XCTAssertEqual(ships[4].nowhp, shipsHp[4] - 5)
210 XCTAssertEqual(ships[5].nowhp, shipsHp[5] - 6 - 7)
212 XCTAssertEqual(ships[6].nowhp, shipsHp[6] - 7 - 7)
217 func damageControl(_ fleet: Int) {
221 let store = ServerDataStore.oneTimeEditor()
223 store.ship(by: 4).flatMap {
225 $0.slot_ex = 63765 // 女神
227 store.ship(by: 5).flatMap {
230 $0.equippedItem = store.slotItem(by: 72418).map { NSOrderedSet(array: [$0]) } ?? []
236 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: API(endpointPath: Endpoint.midnightBattle.rawValue), parameter: param, json: json)
265 let command = BattleCommand(apiResponse: api)
271 let rawValue: [String: Any] = [
274 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
275 let param = Parameter(["Test": "Test"])
276 let api = APIResponse(api: API(endpointPath: Endpoint.battleResult.rawValue), parameter: param, json: json)
278 let command = BattleCommand(apiResponse: api)
284 let store = ServerDataStore.oneTimeEditor()
285 let ships = store.ships(byDeckId: fleet)
287 XCTAssertEqual(ships.count, 6)
289 XCTAssertEqual(ships[0].nowhp, shipsHp[0])
290 XCTAssertEqual(ships[1].nowhp, shipsHp[1])
291 XCTAssertEqual(ships[2].nowhp, 0)
292 XCTAssertEqual(ships[3].nowhp, shipsHp[3])
293 XCTAssertEqual(ships[4].nowhp, Int(Double(shipsHp[4]) * 0.2))
297 func testFirstFleet() {
305 func testSecondFleet() {
313 func testThiredFleet() {
319 initBattleFleet(3, seventh: true)
320 normalBattle(3, seventh: true)
323 func testFourthFleet() {