material-ui-rs 0.5.3

A Material3 inspired theme for `iced`
Documentation
use super::*;
use crate::Theme;

#[test]
fn material_theme_transition_uses_m3_easing_and_duration() {
    let start = Instant::now();
    let transition =
        ColorSchemeTransition::material_theme(Theme::Dark.colors(), Theme::Light.colors(), start);

    assert_eq!(transition.duration, Duration::from_millis(400));
    assert_eq!(
        transition.easing,
        tokens::motion::EASING_EMPHASIZED_DECELERATE
    );
    assert_eq!(transition.progress_at(start), 0.0);
    assert!(!transition.is_finished_at(start + Duration::from_millis(200)));
    assert!(transition.is_finished_at(start + Duration::from_millis(400)));
}

#[test]
fn color_scheme_transition_reaches_target() {
    let start = Instant::now();
    let target = Theme::Light.colors();
    let transition = ColorSchemeTransition::material_theme(Theme::Dark.colors(), target, start);

    assert_eq!(
        transition.value_at(start + Duration::from_millis(500)),
        target
    );
}

#[test]
fn theme_reveal_transition_tracks_origin_and_radius() {
    let start = Instant::now();
    let origin = Point::new(3.0, 4.0);
    let target = Theme::Light.colors();
    let transition =
        ThemeRevealTransition::material_theme(Theme::Dark.colors(), target, origin, start);

    assert_eq!(transition.origin(), origin);
    assert_eq!(transition.reveal_radius_at(Size::new(6.0, 8.0), start), 0.0);
    assert!(
        transition.reveal_radius_at(Size::new(6.0, 8.0), start + Duration::from_millis(200)) > 0.0
    );
    assert!(!transition.is_finished_at(start + Duration::from_millis(1_000)));
    assert!(transition.is_finished_at(start + Duration::from_millis(THEME_REVEAL_DURATION_MS)));
    assert_eq!(transition.target(), target);
}