1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#![allow(clippy::cognitive_complexity)]
#![allow(clippy::let_and_return)]
#![allow(clippy::too_many_arguments)]
pub mod color;
pub mod conf;
pub mod game;
pub mod log;
pub mod name;
pub mod ui;
pub mod util;
#[cfg(test)]
mod test {
use crate::{
game::{
Alignment,
Game,
map::{
MapData,
Terrain,
},
unit::UnitType,
},
name::unit_namer,
util::{
Dims,
Location,
Wrap2d,
},
};
fn map1() -> MapData {
let dims = Dims{width: 10, height: 10};
let mut map = MapData::new(dims, |_loc| Terrain::Land);
map.new_city(Location{x:0,y:0}, Alignment::Belligerent{player:0}, "Machang").unwrap();
map.new_city(Location{x:0,y:1}, Alignment::Belligerent{player:1}, "Zanzibar").unwrap();
map
}
pub(crate) fn game1() -> Game {
let players = 2;
let fog_of_war = true;
let map = map1();
let unit_namer = unit_namer();
Game::new_with_map(map, players, fog_of_war, Box::new(unit_namer), Wrap2d::BOTH)
}
pub(crate) fn game_two_cities() -> Game {
let players = 2;
let fog_of_war = true;
let map = map1();
let unit_namer = unit_namer();
let mut game = Game::new_with_map(map, players, fog_of_war, Box::new(unit_namer), Wrap2d::BOTH);
let loc: Location = game.production_set_requests().next().unwrap();
println!("Setting production at {:?} to infantry", loc);
game.set_production(loc, UnitType::Infantry).unwrap();
let player = game.end_turn().unwrap().current_player;
assert_eq!(player, 1);
let loc: Location = game.production_set_requests().next().unwrap();
println!("Setting production at {:?} to infantry", loc);
game.set_production(loc, UnitType::Infantry).unwrap();
let player = game.end_turn().unwrap().current_player;
assert_eq!(player, 0);
game
}
pub(crate) fn game_two_cities_two_infantry() -> Game {
let mut game = game_two_cities();
for _ in 0..5 {
let player = game.end_turn().unwrap().current_player;
assert_eq!(player, 1);
let player = game.end_turn().unwrap().current_player;
assert_eq!(player, 0);
}
assert_eq!(game.end_turn(), Err(0));
assert_eq!(game.end_turn(), Err(0));
game
}
}