2022-06-17 17:53:33 +00:00
|
|
|
#![feature(custom_test_frameworks)]
|
2023-06-24 12:44:23 +00:00
|
|
|
#![feature(lazy_cell)]
|
2022-12-24 13:03:47 +00:00
|
|
|
#![allow(clippy::borrowed_box)]
|
2023-09-24 16:24:02 +00:00
|
|
|
#![allow(clippy::arc_with_non_send_sync)]
|
2022-06-17 17:53:33 +00:00
|
|
|
|
2023-06-24 12:44:23 +00:00
|
|
|
use std::sync::{Arc, LazyLock};
|
2022-06-17 17:53:33 +00:00
|
|
|
|
2024-05-18 17:24:47 +00:00
|
|
|
use pkmn_lib::dynamic_data::{DynamicLibrary, PassChoice, PokemonBuilder, ScriptCategory, ScriptOwnerData, TurnChoice};
|
2022-06-19 19:34:08 +00:00
|
|
|
|
2023-04-02 10:07:08 +00:00
|
|
|
use crate::common::library_loader;
|
2022-06-19 19:34:08 +00:00
|
|
|
|
2022-06-17 17:53:33 +00:00
|
|
|
pub mod common;
|
2023-04-02 10:07:08 +00:00
|
|
|
pub mod datatests;
|
2022-06-17 17:53:33 +00:00
|
|
|
|
2023-06-24 12:44:23 +00:00
|
|
|
static LIBRARY: LazyLock<Arc<dyn DynamicLibrary>> = LazyLock::new(|| library_loader::load_library().library);
|
|
|
|
|
2024-04-07 16:55:41 +00:00
|
|
|
fn get_library() -> Arc<dyn DynamicLibrary> { LIBRARY.clone() }
|
2022-06-17 17:53:33 +00:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn validate_library_load() {
|
2022-07-18 08:16:47 +00:00
|
|
|
let start_time = chrono::Utc::now();
|
2022-12-25 10:26:14 +00:00
|
|
|
let result = library_loader::load_library();
|
2022-07-18 08:16:47 +00:00
|
|
|
let end_time = chrono::Utc::now();
|
2022-12-25 10:26:14 +00:00
|
|
|
println!(
|
|
|
|
"Built library in {} ms\
|
|
|
|
\n\t- Types load time: {} ms\
|
|
|
|
\n\t- Natures load time: {} ms\
|
|
|
|
\n\t- Items load time: {} ms\
|
|
|
|
\n\t- Growth Rate load time: {} ms\
|
|
|
|
\n\t- Abilities load time: {} ms\
|
|
|
|
\n\t- Moves load time: {} ms\
|
|
|
|
\n\t- Species load time: {} ms\
|
2024-04-07 16:55:41 +00:00
|
|
|
\n\t- Script load time: {} ms\
|
2022-12-25 10:26:14 +00:00
|
|
|
",
|
|
|
|
(end_time - start_time).num_milliseconds(),
|
|
|
|
result.types_load_time.num_milliseconds(),
|
|
|
|
result.natures_load_time.num_milliseconds(),
|
|
|
|
result.items_load_time.num_milliseconds(),
|
|
|
|
result.growth_rate_load_time.num_milliseconds(),
|
|
|
|
result.abilities_load_time.num_milliseconds(),
|
|
|
|
result.moves_load_time.num_milliseconds(),
|
|
|
|
result.species_load_time.num_milliseconds(),
|
|
|
|
result.wasm_load_time.num_milliseconds(),
|
|
|
|
);
|
2022-06-17 17:53:33 +00:00
|
|
|
}
|
|
|
|
|
2024-04-07 16:55:41 +00:00
|
|
|
#[test]
|
|
|
|
fn rune_test() {
|
|
|
|
let result = library_loader::load_library();
|
|
|
|
let library = result.library;
|
2024-05-08 13:46:09 +00:00
|
|
|
let p1 = PokemonBuilder::new(library.clone(), "charizard".into(), 100)
|
|
|
|
.build()
|
|
|
|
.unwrap();
|
|
|
|
|
2024-04-07 16:55:41 +00:00
|
|
|
let script = library
|
2024-05-08 13:46:09 +00:00
|
|
|
.load_script(
|
|
|
|
ScriptOwnerData::Pokemon(p1.weak()),
|
|
|
|
ScriptCategory::Move,
|
|
|
|
&"TestMove".into(),
|
|
|
|
)
|
2024-04-07 16:55:41 +00:00
|
|
|
.unwrap()
|
|
|
|
.unwrap();
|
|
|
|
assert_eq!(script.name().unwrap().str(), "TestMove");
|
|
|
|
let p1 = PokemonBuilder::new(library.clone(), "charizard".into(), 100)
|
|
|
|
.build()
|
|
|
|
.unwrap();
|
|
|
|
let turn_choice = Arc::new(TurnChoice::Pass(PassChoice::new(p1)));
|
|
|
|
let mut speed = 0;
|
|
|
|
script.change_speed(&turn_choice, &mut speed).unwrap();
|
|
|
|
assert_eq!(speed, 100);
|
|
|
|
}
|
|
|
|
|
2023-04-15 12:34:42 +00:00
|
|
|
#[test]
|
|
|
|
fn load_non_existing_wasm_script() {
|
|
|
|
let start_time = chrono::Utc::now();
|
|
|
|
let result = library_loader::load_library();
|
|
|
|
let end_time = chrono::Utc::now();
|
|
|
|
println!(
|
|
|
|
"Built library in {} ms\
|
|
|
|
\n\t- Types load time: {} ms\
|
|
|
|
\n\t- Natures load time: {} ms\
|
|
|
|
\n\t- Items load time: {} ms\
|
|
|
|
\n\t- Growth Rate load time: {} ms\
|
|
|
|
\n\t- Abilities load time: {} ms\
|
|
|
|
\n\t- Moves load time: {} ms\
|
|
|
|
\n\t- Species load time: {} ms\
|
2024-04-07 16:55:41 +00:00
|
|
|
\n\t- Script load time: {} ms\
|
2023-04-15 12:34:42 +00:00
|
|
|
",
|
|
|
|
(end_time - start_time).num_milliseconds(),
|
|
|
|
result.types_load_time.num_milliseconds(),
|
|
|
|
result.natures_load_time.num_milliseconds(),
|
|
|
|
result.items_load_time.num_milliseconds(),
|
|
|
|
result.growth_rate_load_time.num_milliseconds(),
|
|
|
|
result.abilities_load_time.num_milliseconds(),
|
|
|
|
result.moves_load_time.num_milliseconds(),
|
|
|
|
result.species_load_time.num_milliseconds(),
|
|
|
|
result.wasm_load_time.num_milliseconds(),
|
|
|
|
);
|
|
|
|
let script = result
|
|
|
|
.library
|
|
|
|
.load_script(ScriptOwnerData::None, ScriptCategory::Move, &"_____non_existing".into())
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
assert!(script.is_none());
|
|
|
|
}
|