diff options
| -rw-r--r-- | tests/test_eorzea_weather.rs | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/tests/test_eorzea_weather.rs b/tests/test_eorzea_weather.rs new file mode 100644 index 0000000..a13b994 --- /dev/null +++ b/tests/test_eorzea_weather.rs @@ -0,0 +1,108 @@ +extern crate ffxiv_chronowatcher; + +use ffxiv_chronowatcher::eorzean_weather::{calculate_current_weather_interval, find_next_weather_occurance, get_weather_by_time, calculate_forecast, Weather}; +use chrono::DateTime; + +mod weather_tests { + use super::*; + #[test] + fn test_calculate_current_weather_interval(){ + let timestamp = 1724738458; + let (start, end) = calculate_current_weather_interval(timestamp); + assert_eq!(start, 1724738403); + assert_eq!(end, 1724739802); + } + + #[test] + fn test_get_weather_by_time(){ + let timestamp = 1724738458; + let weather = get_weather_by_time("Middle La Noscea", timestamp); + println!("{:?}", weather); + } + + #[test] + fn test_calculate_forecast_pos_offset(){ + let timestamp = 1724738458; + let weather = calculate_forecast("Middle La Noscea", timestamp, 8); + assert_eq!(weather.weather, Weather::ClearSkies); + assert_eq!(weather.start_time, 1724749443); + assert_eq!(weather.end_time, 1724750823); + assert_eq!(weather.zone_name, "Middle La Noscea"); + } + + #[test] + fn test_calculate_forecast_neg_offset(){ + let timestamp = 1724738458; + let weather = calculate_forecast("Middle La Noscea", timestamp, -1); + assert_eq!(weather.weather, Weather::Wind); + assert_eq!(weather.start_time, 1724737023); + assert_eq!(weather.end_time, 1724738403); + assert_eq!(weather.zone_name, "Middle La Noscea"); + } + + #[test] + fn test_calculate_forecast_zero_offset(){ + let timestamp = 1724738458; + let weather = calculate_forecast("Middle La Noscea", timestamp, 0); + assert_eq!(weather.weather, Weather::Wind); + assert_eq!(weather.start_time, 1724738403); + assert_eq!(weather.end_time, 1724739802); + assert_eq!(weather.zone_name, "Middle La Noscea"); + } + + #[test] + fn test_find_next_weather_occurance(){ + let timestamp = 1724738458; + let weather = find_next_weather_occurance("Eureka Pagos", timestamp, Weather::Blizzards); + assert_eq!(weather.weather, Weather::Blizzards); + assert_eq!(weather.start_time, 1724742543); + assert_eq!(weather.end_time, 1724743923); + assert_eq!(weather.zone_name, "Eureka Pagos"); + } + + #[test] + fn test_convert_weather_enum_to_string(){ + let weather_variants = vec![ + (Weather::AstroMagneticStorm, "Astro-Magnetic Storms"), + (Weather::Blizzards, "Blizzards"), + (Weather::ClearSkies, "Clear Skies"), + (Weather::Clouds, "Clouds"), + (Weather::DustStorms, "Dust Storms"), + (Weather::FairSkies, "Fair Skies"), + (Weather::Fog, "Fog"), + (Weather::Gales, "Gales"), + (Weather::Gloom, "Gloom"), + (Weather::HeatWaves, "Heat Waves"), + (Weather::MoonDust, "Moon Dust"), + (Weather::Rain, "Rain"), + (Weather::Showers, "Showers"), + (Weather::Snow, "Snow"), + (Weather::Thunder, "Thunder"), + (Weather::Thunderstorms, "Thunderstorms"), + (Weather::UmbralStatic, "Umbral Static"), + (Weather::UmbralWind, "Umbral Wind"), + (Weather::Wind, "Wind"), + ]; + + for (weather, expected_str) in weather_variants { + assert_eq!(weather.to_string(), expected_str); + } + } + + #[test] + fn test_calculate_current_weather_interval_day_overflow(){ + let (start, end) = calculate_current_weather_interval(1672531199); + assert_eq!(1,1); + } + + #[test] + #[should_panic] + fn get_weather_by_time_panic_zone_not_found() { + let timestamp = 1724738458; + let weather = get_weather_by_time("Somewhere Not Here", timestamp); + } + + + +} + |
