45 lines
1.6 KiB
Rust
45 lines
1.6 KiB
Rust
use logic::data::{table, LogicDataRef, LogicDataTables};
|
|
use std::path::Path;
|
|
use std::sync::Arc;
|
|
fn tables() {
|
|
let root = Path::new(env!("CARGO_MANIFEST_DIR")).join("../../assets");
|
|
LogicDataTables::install(Arc::new(
|
|
LogicDataTables::load_from_dir(&root).expect("tables"),
|
|
));
|
|
}
|
|
#[test]
|
|
fn single_value_scaled() {
|
|
tables();
|
|
let spear = LogicDataRef::by_name(table::PROJECTILES, "SpearGoblinProjectile")
|
|
.as_projectile()
|
|
.expect("SpearGoblinProjectile");
|
|
assert_eq!(spear.damage(0), 24);
|
|
assert_eq!(spear.damage(2), 29, "the level that crashed the client");
|
|
assert_eq!(spear.damage(6), 42, "the bot's deck level");
|
|
}
|
|
#[test]
|
|
fn tower_scale_percent() {
|
|
tables();
|
|
let princess = LogicDataRef::by_name(table::BUILDINGS, "PrincessTower")
|
|
.as_character()
|
|
.expect("PrincessTower");
|
|
let base = princess.hitpoints(0);
|
|
assert!(base > 0);
|
|
assert_eq!(princess.hitpoints(1), base * 109 / 100);
|
|
assert_eq!(princess.hitpoints(2), base * (109 * 109 / 100) / 100);
|
|
let king = LogicDataRef::by_name(table::BUILDINGS, "KingTower")
|
|
.as_character()
|
|
.expect("KingTower");
|
|
let king_base = king.hitpoints(0);
|
|
assert_eq!(king.hitpoints(1), king_base * 108 / 100);
|
|
}
|
|
#[test]
|
|
fn card_scale_percent() {
|
|
tables();
|
|
let knight = LogicDataRef::by_name(table::CHARACTERS_COMBINED, "Knight")
|
|
.as_character()
|
|
.expect("Knight");
|
|
let base = knight.hitpoints(0);
|
|
assert_eq!(knight.hitpoints(1), base * 110 / 100);
|
|
assert_eq!(knight.hitpoints(3), base * 133 / 100);
|
|
}
|