#![cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Fixture(pub Vec<Test>);
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Test {
pub description: Option<String>,
pub input: TestInput,
pub output: TestOutput,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TestInput {
pub value: String,
pub options: TestOptions,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum TestOptions {
#[serde(rename = "length")]
Length(icu_datetime::options::length::Bag),
#[serde(rename = "components")]
#[cfg(feature = "experimental")]
Components(icu_datetime::options::components::Bag),
#[serde(rename = "components")]
#[cfg(not(feature = "experimental"))]
Components(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TestOutput {
pub values: HashMap<String, String>,
}