mirror of
https://github.com/Xevion/smart-rgb.git
synced 2025-12-06 05:16:35 -06:00
Update source files
This commit is contained in:
50
crates/borders-core/tests/terrain.rs
Normal file
50
crates/borders-core/tests/terrain.rs
Normal file
@@ -0,0 +1,50 @@
|
||||
use borders_core::game::terrain::{MapManifest, MapMetadata, TerrainData, TileType};
|
||||
use borders_core::game::tilemap::TileMap;
|
||||
|
||||
fn create_test_terrain(width: usize, height: usize) -> TerrainData {
|
||||
let tile_types = vec![TileType { name: "water".to_string(), color_base: "blue".to_string(), color_variant: 0, conquerable: false, navigable: true, expansion_time: 255, expansion_cost: 255 }, TileType { name: "land".to_string(), color_base: "green".to_string(), color_variant: 0, conquerable: true, navigable: false, expansion_time: 50, expansion_cost: 50 }];
|
||||
|
||||
let mut terrain_data_raw = vec![0; width * height];
|
||||
terrain_data_raw[5] = 0x80; // Make position 5 land
|
||||
terrain_data_raw[10] = 0x85; // Make position 10 land with magnitude 5
|
||||
|
||||
let tiles: Vec<u8> = terrain_data_raw.iter().map(|&byte| if byte & 0x80 != 0 { 1 } else { 0 }).collect();
|
||||
|
||||
let terrain_data = TileMap::from_vec(width as u16, height as u16, terrain_data_raw);
|
||||
|
||||
TerrainData { _manifest: MapManifest { map: MapMetadata { size: glam::U16Vec2::new(width as u16, height as u16), num_land_tiles: 2 }, name: "Test".to_string(), nations: Vec::new() }, terrain_data, tiles, tile_types }
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_is_land() {
|
||||
let terrain = create_test_terrain(10, 10);
|
||||
assert!(!terrain.is_land(glam::U16Vec2::new(0, 0)));
|
||||
assert!(terrain.is_land(glam::U16Vec2::new(5, 0)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_is_conquerable() {
|
||||
let terrain = create_test_terrain(10, 10);
|
||||
assert!(!terrain.is_conquerable(glam::U16Vec2::new(0, 0)));
|
||||
assert!(terrain.is_conquerable(glam::U16Vec2::new(5, 0)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_is_navigable() {
|
||||
let terrain = create_test_terrain(10, 10);
|
||||
assert!(terrain.is_navigable(glam::U16Vec2::new(0, 0)));
|
||||
assert!(!terrain.is_navigable(glam::U16Vec2::new(5, 0)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_terrain_magnitude() {
|
||||
let terrain = create_test_terrain(10, 10);
|
||||
assert_eq!(terrain.terrain_magnitude(glam::U16Vec2::new(0, 1)), 5);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_expansion_properties() {
|
||||
let terrain = create_test_terrain(10, 10);
|
||||
assert_eq!(terrain.get_expansion_time(glam::U16Vec2::new(5, 0)), 50);
|
||||
assert_eq!(terrain.get_expansion_cost(glam::U16Vec2::new(5, 0)), 50);
|
||||
}
|
||||
Reference in New Issue
Block a user