2 // NormalBattleTest.swift
5 // Created by Hori,Masaki on 2017/10/19.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
16 class NormalBattleTest: XCTestCase {
18 var savedShips: [Ship] = []
19 var shipsHp: [Int] = []
20 var shipEquipments: [NSOrderedSet] = []
21 var shipExSlot: [Int] = []
23 func initBattleFleet(_ fleet: Int, seventh: Bool = false) {
33 let store = ServerDataStore.oneTimeEditor()
35 guard let deck = store.deck(by: fleet) else {
37 XCTFail("Can not get Deck.")
42 let max = seventh ? 6 : 5
43 (0...6).forEach { deck.setShip(id: -1, for: $0) }
44 (0...max).forEach { deck.setShip(id: $0 + 1, for: $0) }
46 store.ships(byDeckId: fleet).forEach {
51 shipEquipments += [$0.equippedItem]
52 shipExSlot += [$0.slot_ex]
59 let rawValue: [String: Any] = [
65 guard let json = JSON(rawValue: rawValue) else {
67 XCTFail("json is nil")
71 XCTAssertNotNil(json["api_result"])
73 let paramValue: [String: String] = [
74 "api_deck_id": "\(fleet)",
75 "api_maparea_id": "1",
78 let param = Parameter(paramValue)
79 XCTAssertEqual(param["api_deck_id"].string, "\(fleet)")
81 let api = APIResponse(api: API(endpointPath: Endpoint.start.rawValue), parameter: param, json: json)
82 XCTAssertEqual(api.json, json)
83 XCTAssertEqual(api.parameter, param)
85 let command = MapStartCommand(apiResponse: api)
93 let store = TemporaryDataStore.default
94 let battle = store.battle()
95 XCTAssertNotNil(battle)
96 XCTAssertEqual(battle?.deckId, fleet)
100 func clear(_ fleet: Int) {
104 ResetSortie().reset()
109 let store = ServerDataStore.oneTimeEditor()
111 let ships = store.ships(byDeckId: fleet)
113 zip(ships, shipsHp).forEach { $0.nowhp = $1 }
114 zip(ships, shipEquipments).forEach { $0.equippedItem = $1 }
115 zip(ships, shipExSlot).forEach { $0.slot_ex = $1 }
117 guard let deck = store.deck(by: fleet) else {
119 XCTFail("Can not get Deck.")
123 savedShips.enumerated().forEach { deck.setShip(id: $0.element.id, for: $0.offset) }
124 (0...6).forEach { deck.setShip(id: -1, for: $0) }
129 let store = TemporaryDataStore.default
130 let battle = store.battle()
135 func normalBattle(_ fleet: Int, seventh: Bool = false) {
140 let dfList = seventh ? [[2, 2], [6, 6]] : [[2, 2]]
141 let damages = seventh ? [[0, 3], [0, 7]] : [[0, 3]]
142 let fdam = seventh ? [0, 0, 0, 4, 0, 6, 7] : [0, 0, 0, 4, 0, 6]
143 let rawValue: [String: Any] = [
153 "api_opening_atack": [
159 "api_df_list": dfList,
160 "api_damage": damages,
171 guard let json = JSON(rawValue: rawValue) else {
173 XCTFail("json is nil")
177 let param = Parameter(["Test": "Test"])
178 let api = APIResponse(api: API(endpointPath: Endpoint.battle.rawValue), parameter: param, json: json)
180 let command = BattleCommand(apiResponse: api)
187 let rawValue: [String: Any] = [
206 guard let json = JSON(rawValue: rawValue) else {
208 XCTFail("json is nil")
212 let param = Parameter(["Test": "Test"])
213 let api = APIResponse(api: API(endpointPath: Endpoint.midnightBattle.rawValue), parameter: param, json: json)
215 let command = BattleCommand(apiResponse: api)
222 let rawValue: [String: Any] = [
225 guard let json = JSON(rawValue: rawValue) else {
227 XCTFail("json is nil")
231 let param = Parameter(["Test": "Test"])
232 let api = APIResponse(api: API(endpointPath: Endpoint.battleResult.rawValue), parameter: param, json: json)
234 let command = BattleCommand(apiResponse: api)
241 let store = ServerDataStore.oneTimeEditor()
242 let ships = store.ships(byDeckId: fleet)
244 XCTAssertEqual(ships.count, seventh ? 7 : 6)
246 XCTAssertEqual(ships[0].nowhp, shipsHp[0] - 1)
247 XCTAssertEqual(ships[1].nowhp, shipsHp[1] - 2)
248 XCTAssertEqual(ships[2].nowhp, shipsHp[2] - 3)
249 XCTAssertEqual(ships[3].nowhp, shipsHp[3] - 4)
250 XCTAssertEqual(ships[4].nowhp, shipsHp[4] - 5)
251 XCTAssertEqual(ships[5].nowhp, shipsHp[5] - 6 - 7)
253 XCTAssertEqual(ships[6].nowhp, shipsHp[6] - 7 - 7)
258 func damageControl(_ fleet: Int) {
263 let store = ServerDataStore.oneTimeEditor()
265 store.ship(by: 4).flatMap {
267 $0.slot_ex = 63_765 // 女神
269 store.ship(by: 5).flatMap {
272 $0.equippedItem = store.slotItem(by: 8_175).map { NSOrderedSet(array: [$0]) } ?? []
279 let rawValue: [String: Any] = [
304 guard let json = JSON(rawValue: rawValue) else {
306 XCTFail("json is nil")
310 let param = Parameter(["Test": "Test"])
311 let api = APIResponse(api: API(endpointPath: Endpoint.midnightBattle.rawValue), parameter: param, json: json)
313 let command = BattleCommand(apiResponse: api)
320 let rawValue: [String: Any] = [
323 guard let json = JSON(rawValue: rawValue) else {
325 XCTFail("json is nil")
329 let param = Parameter(["Test": "Test"])
330 let api = APIResponse(api: API(endpointPath: Endpoint.battleResult.rawValue), parameter: param, json: json)
332 let command = BattleCommand(apiResponse: api)
339 let store = ServerDataStore.oneTimeEditor()
340 let ships = store.ships(byDeckId: fleet)
342 XCTAssertEqual(ships.count, 6)
344 XCTAssertEqual(ships[0].nowhp, shipsHp[0])
345 XCTAssertEqual(ships[1].nowhp, shipsHp[1])
346 XCTAssertEqual(ships[2].nowhp, 0)
347 XCTAssertEqual(ships[3].nowhp, shipsHp[3])
348 XCTAssertEqual(ships[4].nowhp, Int(Double(shipsHp[4]) * 0.2))
352 func testFirstFleet() {
360 func testSecondFleet() {
368 func testThiredFleet() {
375 initBattleFleet(3, seventh: true)
376 normalBattle(3, seventh: true)
379 func testFourthFleet() {