mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-11-14 04:43:42 +01:00
refactor(mac): converge core/animation.rs and animation/prefix.rs to the shared version
core/animation.rs takes the shared copy (module docs, three serde unit tests) and its one doc comment now reads 'Bezier' like the Windows copy; that text is the description of the CubicBezier branch in schema.json, so schema.json changes in that one line (description only; the Windows schema keeps its text). prefix.rs gets the module docs; the macOS-only AnimationPrefix (no Transparency) is converged in the next revision. Verified: fast-check macOS (fake CC) cargo check --workspace --all-targets: PASS. jj diff of schema.json: the single description line. macOS tests not run (cannot).
This commit is contained in:
1 parent
51d7454b10
commit
eb903bccc5
3 files changed
+45
-2
No files matched your search
@@ -1,3 +1,5 @@
|
||||
//! The kinds of animation that settings can be given for, by prefix (`movement`).
|
||||
|
||||
use clap::ValueEnum;
|
||||
|
||||
use serde::Deserialize;
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//! The easing curves an animation can have (`komorebic animation-style`).
|
||||
|
||||
use clap::ValueEnum;
|
||||
|
||||
use serde::Deserialize;
|
||||
@@ -74,7 +76,7 @@ pub enum AnimationStyle {
|
||||
EaseInOutBounce,
|
||||
#[cfg_attr(feature = "schemars", schemars(title = "CubicBezier"))]
|
||||
#[value(skip)]
|
||||
/// Custom Cubic Bézier function
|
||||
/// Custom Cubic Bezier function
|
||||
CubicBezier(f64, f64, f64, f64),
|
||||
}
|
||||
|
||||
@@ -152,3 +154,42 @@ impl Serialize for AnimationStyle {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn a_style_is_written_as_its_name_and_a_bezier_as_four_numbers() {
|
||||
assert_eq!(
|
||||
serde_json::to_string(&AnimationStyle::EaseInOutSine).unwrap(),
|
||||
r#""EaseInOutSine""#
|
||||
);
|
||||
assert_eq!(
|
||||
serde_json::to_string(&AnimationStyle::CubicBezier(0.32, 0.72, 0.0, 1.0)).unwrap(),
|
||||
"[0.32,0.72,0.0,1.0]"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_style_is_read_back_from_what_it_is_written_as() {
|
||||
for style in [
|
||||
AnimationStyle::Linear,
|
||||
AnimationStyle::EaseOutBounce,
|
||||
AnimationStyle::CubicBezier(0.1, 0.2, 0.3, 0.4),
|
||||
] {
|
||||
let json = serde_json::to_string(&style).unwrap();
|
||||
assert_eq!(
|
||||
serde_json::from_str::<AnimationStyle>(&json).unwrap(),
|
||||
style
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_name_that_is_no_style_and_a_bezier_that_is_not_four_numbers_are_refused() {
|
||||
assert!(serde_json::from_str::<AnimationStyle>(r#""EaseInPlace""#).is_err());
|
||||
assert!(serde_json::from_str::<AnimationStyle>("[0.1, 0.2, 0.3]").is_err());
|
||||
assert!(serde_json::from_str::<AnimationStyle>("[0.1, 0.2, 0.3, 0.4, 0.5]").is_err());
|
||||
}
|
||||
}
|
||||
@@ -511,7 +511,7 @@
|
||||
},
|
||||
{
|
||||
"title": "CubicBezier",
|
||||
"description": "Custom Cubic Bézier function",
|
||||
"description": "Custom Cubic Bezier function",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"CubicBezier": {
|
||||
|
||||
Reference in new issue
Block a user