2 // CombinedBattleTest.swift
5 // Created by Hori,Masaki on 2017/11/27.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
16 class CombinedBattleTest: XCTestCase {
18 var savedShips: [Ship] = []
19 var shipsHp: [Int] = []
20 var shipEquipments: [NSOrderedSet] = []
21 var shipExSlot: [Int] = []
23 func initBattleFleet() {
33 let store = ServerDataStore.oneTimeEditor()
35 guard let deck1 = store.deck(by: 1) else {
37 XCTFail("Can not get Deck.")
41 (0...5).forEach { deck1.setShip(id: $0 + 1, for: $0) }
42 deck1.setShip(id: 0, for: 6)
43 guard let deck2 = store.deck(by: 2) else {
45 XCTFail("Can not get Deck.")
49 (0...5).forEach { deck2.setShip(id: $0 + 1 + 6, for: $0) }
50 deck2.setShip(id: 0, for: 6)
52 store.ships(byDeckId: 1).forEach {
57 shipEquipments += [$0.equippedItem]
58 shipExSlot += [$0.slot_ex]
60 store.ships(byDeckId: 2).forEach {
65 shipEquipments += [$0.equippedItem]
66 shipExSlot += [$0.slot_ex]
69 XCTAssertEqual(shipsHp.count, 12)
75 let rawValue: [String: Any] = [
81 guard let json = JSON(rawValue: rawValue) else {
83 XCTFail("json is nil")
87 XCTAssertNotNil(json["api_result"])
89 let paramValue: [String: String] = [
91 "api_maparea_id": "1",
94 let param = Parameter(paramValue)
96 let api = APIResponse(api: API(endpointPath: Endpoint.start.rawValue), parameter: param, json: json)
97 XCTAssertEqual(api.json, json)
98 XCTAssertEqual(api.parameter, param)
100 let command = MapStartCommand(apiResponse: api)
108 let store = TemporaryDataStore.default
109 let battle = store.battle()
110 XCTAssertNotNil(battle)
111 XCTAssertEqual(battle?.deckId, 1)
119 ResetSortie().reset()
124 let store = ServerDataStore.oneTimeEditor()
126 let ships1 = store.ships(byDeckId: 1)
128 zip(ships1, shipsHp).forEach { $0.nowhp = $1 }
129 zip(ships1, shipEquipments).forEach { $0.equippedItem = $1 }
130 zip(ships1, shipExSlot).forEach { $0.slot_ex = $1 }
132 guard let deck1 = store.deck(by: 1) else {
134 XCTFail("Can not get Deck.")
138 savedShips.enumerated().forEach { deck1.setShip(id: $0.element.id, for: $0.offset) }
140 let ships2 = store.ships(byDeckId: 1)
142 zip(ships2, shipsHp[6...]).forEach { $0.nowhp = $1 }
143 zip(ships2, shipEquipments[6...]).forEach { $0.equippedItem = $1 }
144 zip(ships2, shipExSlot[6...]).forEach { $0.slot_ex = $1 }
146 guard let deck2 = store.deck(by: 2) else {
148 XCTFail("Can not get Deck.")
152 savedShips.enumerated().forEach { deck2.setShip(id: $0.element.id, for: $0.offset) }
157 let store = TemporaryDataStore.default
158 let battle = store.battle()
163 func normalBattle() {
168 let rawValue: [String: Any] = [
174 1, 0, 0, 0, 0, 0 // 1番艦
177 "api_stage3_combined": [
179 2, 0, 0, 0, 0, 0 // 第二1番艦
183 "api_opening_atack": [
185 0, 2, 0, 0, 0, 0, // 2番艦
186 0, 2, 0, 0, 0, 0 // 第二2番艦
248 guard let json = JSON(rawValue: rawValue) else {
250 XCTFail("json is nil")
254 let param = Parameter(["Test": "Test"])
255 let api = APIResponse(api: API(endpointPath: Endpoint.combinedBattle.rawValue), parameter: param, json: json)
257 let command = BattleCommand(apiResponse: api)
263 let store = TemporaryDataStore.default
264 let damages = store.damages()
265 XCTAssertEqual(damages.count, 12)
269 func midnightBattle() {
274 let rawValue: [String: Any] = [
293 guard let json = JSON(rawValue: rawValue) else {
295 XCTFail("json is nil")
299 let param = Parameter(["Test": "Test"])
300 let api = APIResponse(api: API(endpointPath: Endpoint.combinedMidnightBattle.rawValue), parameter: param, json: json)
302 let command = BattleCommand(apiResponse: api)
309 let rawValue: [String: Any] = [
312 guard let json = JSON(rawValue: rawValue) else {
314 XCTFail("json is nil")
318 let param = Parameter(["Test": "Test"])
319 let api = APIResponse(api: API(endpointPath: Endpoint.combinedBattleResult.rawValue), parameter: param, json: json)
321 let command = BattleCommand(apiResponse: api)
331 let store = ServerDataStore.oneTimeEditor()
332 let ships1 = store.ships(byDeckId: 1)
334 XCTAssertEqual(ships1.count, 6)
336 XCTAssertEqual(ships1[0].nowhp, shipsHp[0] - 1)
337 XCTAssertEqual(ships1[1].nowhp, shipsHp[1] - 2)
338 XCTAssertEqual(ships1[2].nowhp, shipsHp[2] - 3)
339 XCTAssertEqual(ships1[3].nowhp, shipsHp[3] - 4)
340 XCTAssertEqual(ships1[4].nowhp, shipsHp[4] - 10)
341 XCTAssertEqual(ships1[5].nowhp, shipsHp[5] - 7)
343 let ships2 = store.ships(byDeckId: 2)
345 XCTAssertEqual(ships2.count, 6)
347 XCTAssertEqual(ships2[0].nowhp, shipsHp[6] - 2)
348 XCTAssertEqual(ships2[1].nowhp, shipsHp[7] - 3)
349 XCTAssertEqual(ships2[2].nowhp, shipsHp[8] - 3)
350 XCTAssertEqual(ships2[3].nowhp, shipsHp[9] - 4)
351 XCTAssertEqual(ships2[4].nowhp, shipsHp[10] - 5)
352 XCTAssertEqual(ships2[5].nowhp, shipsHp[11] - 1)
356 func testCombined() {