Move Form and Species to traits, implement a bunch of mocks
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-11-28 21:34:28 +01:00
parent c1e09c654b
commit bce636b97e
25 changed files with 447 additions and 155 deletions

View File

@@ -19,6 +19,9 @@ pub use static_data::StaticData;
#[doc(inline)]
pub use type_library::*;
#[cfg(test)]
pub(crate) mod tests {}
/// The library data for abilities.
mod ability_library;
/// Basic helper trait for libraries.

View File

@@ -13,7 +13,7 @@ pub struct SpeciesLibrary {
/// A unique identifier so we know what value this is.
identifier: ValueIdentifier,
/// The underlying map.
map: IndexMap<StringKey, Arc<Species>>,
map: IndexMap<StringKey, Arc<dyn Species>>,
}
impl SpeciesLibrary {
@@ -26,11 +26,11 @@ impl SpeciesLibrary {
}
}
impl DataLibrary<Species> for SpeciesLibrary {
fn map(&self) -> &IndexMap<StringKey, Arc<Species>> {
impl DataLibrary<dyn Species> for SpeciesLibrary {
fn map(&self) -> &IndexMap<StringKey, Arc<dyn Species>> {
&self.map
}
fn get_modify(&mut self) -> &mut IndexMap<StringKey, Arc<Species>> {
fn get_modify(&mut self) -> &mut IndexMap<StringKey, Arc<dyn Species>> {
&mut self.map
}
}
@@ -48,18 +48,18 @@ pub mod tests {
use crate::static_data::libraries::data_library::DataLibrary;
use crate::static_data::libraries::species_library::SpeciesLibrary;
use crate::static_data::Species;
use crate::static_data::StaticStatisticSet;
use crate::static_data::{Form, LearnableMovesImpl};
use crate::static_data::LearnableMovesImpl;
use crate::static_data::{FormImpl, StaticStatisticSet};
use crate::static_data::{Species, SpeciesImpl};
fn build_species() -> Species {
Species::new(
fn build_species() -> Arc<dyn Species> {
Arc::new(SpeciesImpl::new(
0,
&"foo".into(),
0.5,
&"test_growthrate".into(),
0,
Arc::new(Form::new(
Arc::new(FormImpl::new(
&"default".into(),
0.0,
0.0,
@@ -72,7 +72,7 @@ pub mod tests {
HashSet::new(),
)),
HashSet::new(),
)
))
}
pub fn build() -> SpeciesLibrary {
@@ -80,7 +80,7 @@ pub mod tests {
let species = build_species();
// Borrow as mut so we can insert
let w = &mut lib;
w.add(&"foo".into(), Arc::new(species));
w.add(&"foo".into(), species);
// Drops borrow as mut
lib