2 // GuardEscapeTest.swift
5 // Created by Hori,Masaki on 2017/12/03.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
15 class GuardEscapeTest: XCTestCase {
17 override func setUp() {
20 let store = TemporaryDataStore.oneTimeEditor()
21 store.guardEscaped().forEach(store.delete)
24 override func tearDown() {
26 let store = TemporaryDataStore.oneTimeEditor()
27 store.guardEscaped().forEach(store.delete)
31 func testShipEntity() {
34 let serverStore = ServerDataStore.default
36 guard let ship = serverStore.ship(by: shipId) else {
37 XCTFail("can not get Ship id \(shipId)")
41 XCTAssertFalse(ship.guardEscaped)
43 let tempStore = TemporaryDataStore.oneTimeEditor()
44 guard let g = tempStore.createGuardEscaped() else {
45 XCTFail("can not create GuardEscaped")
54 XCTAssertTrue(ship.guardEscaped)
58 func testGuardShelter() {
62 let store = ServerDataStore.oneTimeEditor()
64 guard let deck1 = store.deck(by: 1) else { return XCTFail("Can not get Deck.") }
65 (0...5).forEach { deck1.setShip(id: $0 + 1, for: $0) }
66 guard let deck2 = store.deck(by: 2) else { return XCTFail("Can not get Deck.") }
67 (0...5).forEach { deck2.setShip(id: $0 + 1 + 6, for: $0) }
73 let store = TemporaryDataStore.oneTimeEditor()
74 store.guardEscaped().forEach(store.delete)
75 store.battles().forEach(store.delete)
76 guard let battle = store.createBattle() else {
77 XCTFail("Can not create battle")
85 let rawValue: [String: Any] = [
89 "api_escape_idx": [9, 12],
95 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
96 let param = Parameter(["Test": "Test"])
97 let resultApi = APIResponse(api: API(endpointPath: Endpoint.battleResult.rawValue), parameter: param, json: json)
98 GuardShelterCommand(apiResponse: resultApi).execute()
100 let goBackApi = APIResponse(api: API(endpointPath: Endpoint.goback.rawValue), parameter: param, json: json)
101 GuardShelterCommand(apiResponse: goBackApi).execute()
106 let store = ServerDataStore.default
107 let ships1 = store.ships(byDeckId: 1)
108 XCTAssertEqual(ships1.count, 6)
109 XCTAssertEqual(ships1[0].guardEscaped, false)
110 XCTAssertEqual(ships1[1].guardEscaped, false)
111 XCTAssertEqual(ships1[2].guardEscaped, false)
112 XCTAssertEqual(ships1[3].guardEscaped, false)
113 XCTAssertEqual(ships1[4].guardEscaped, false)
114 XCTAssertEqual(ships1[5].guardEscaped, false)
116 let ships2 = store.ships(byDeckId: 2)
117 XCTAssertEqual(ships2.count, 6)
118 XCTAssertEqual(ships2[0].guardEscaped, false)
119 XCTAssertEqual(ships2[1].guardEscaped, false)
120 XCTAssertEqual(ships2[2].guardEscaped, true)
121 XCTAssertEqual(ships2[3].guardEscaped, true)
122 XCTAssertEqual(ships2[4].guardEscaped, false)
123 XCTAssertEqual(ships2[5].guardEscaped, false)
127 let store = TemporaryDataStore.oneTimeEditor()
128 store.guardEscaped().forEach(store.delete)
129 store.battles().forEach(store.delete)
138 let store = ServerDataStore.oneTimeEditor()
140 guard let deck1 = store.deck(by: 3) else { return XCTFail("Can not get Deck.") }
141 (0...6).forEach { deck1.setShip(id: $0 + 5, for: $0) }
147 let store = TemporaryDataStore.oneTimeEditor()
148 store.guardEscaped().forEach(store.delete)
149 store.battles().forEach(store.delete)
150 guard let battle = store.createBattle() else {
151 XCTFail("Can not create battle")
159 let rawValue: [String: Any] = [
163 "api_escape_idx": [3, 4]
168 guard let json = JSON(rawValue: rawValue) else { return XCTFail("json is nil") }
169 let param = Parameter(["Test": "Test"])
170 let resultApi = APIResponse(api: API(endpointPath: Endpoint.battleResult.rawValue), parameter: param, json: json)
171 GuardShelterCommand(apiResponse: resultApi).execute()
173 let goBackApi = APIResponse(api: API(endpointPath: Endpoint.gobakAlone.rawValue), parameter: param, json: json)
174 GuardShelterCommand(apiResponse: goBackApi).execute()
179 let store = ServerDataStore.default
180 let ships1 = store.ships(byDeckId: 3)
181 XCTAssertEqual(ships1.count, 7)
182 XCTAssertEqual(ships1[0].guardEscaped, false)
183 XCTAssertEqual(ships1[1].guardEscaped, false)
184 XCTAssertEqual(ships1[2].guardEscaped, true)
185 XCTAssertEqual(ships1[3].guardEscaped, false)
186 XCTAssertEqual(ships1[4].guardEscaped, false)
187 XCTAssertEqual(ships1[5].guardEscaped, false)
188 XCTAssertEqual(ships1[6].guardEscaped, false)
193 let store = TemporaryDataStore.oneTimeEditor()
194 store.guardEscaped().forEach(store.delete)
195 store.battles().forEach(store.delete)