mecomp_storage/
util.rs

1//! Utility types and functions.
2
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
7#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
8#[cfg_attr(feature = "serde", serde(rename_all = "lowercase"))]
9pub enum MetadataConflictResolution {
10    #[default]
11    Overwrite,
12    Skip,
13}
14
15#[cfg(all(test, feature = "serde"))]
16mod metadata_conflict_resolution {
17    use rstest::rstest;
18
19    use super::*;
20
21    #[test]
22    fn test_default() {
23        assert_eq!(
24            MetadataConflictResolution::default(),
25            MetadataConflictResolution::Overwrite
26        );
27    }
28
29    #[rstest]
30    #[case::lower(MetadataConflictResolution::Overwrite, "overwrite")]
31    #[case::lower(MetadataConflictResolution::Skip, "skip")]
32    fn test_deserialize<D, 'de>(#[case] expected: MetadataConflictResolution, #[case] input: D)
33    where
34        D: serde::de::IntoDeserializer<'de>,
35    {
36        let actual: MetadataConflictResolution =
37            MetadataConflictResolution::deserialize(input.into_deserializer()).unwrap();
38        assert_eq!(actual, expected);
39    }
40}