use serde::{Deserialize, Serialize};
#[derive(
Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize, Default,
)]
#[serde(rename_all = "lowercase")]
pub enum Outcome {
#[default]
Fail,
Review,
Pass,
Untested,
}
impl Outcome {
pub fn is_visible_by_default(self) -> bool {
!matches!(self, Outcome::Pass)
}
pub fn is_problem(self) -> bool {
matches!(self, Outcome::Fail | Outcome::Review)
}
pub fn as_str(self) -> &'static str {
match self {
Outcome::Fail => "fail",
Outcome::Review => "review",
Outcome::Pass => "pass",
Outcome::Untested => "untested",
}
}
}
#[derive(
Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize, Default,
)]
#[serde(rename_all = "lowercase")]
pub enum Severity {
Low,
#[default]
Medium,
High,
Critical,
}
impl Severity {
pub fn as_str(self) -> &'static str {
match self {
Severity::Low => "low",
Severity::Medium => "medium",
Severity::High => "high",
Severity::Critical => "critical",
}
}
pub fn as_axe_impact(self) -> &'static str {
match self {
Severity::Low => "minor",
Severity::Medium => "moderate",
Severity::High => "serious",
Severity::Critical => "critical",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum WcagLevel {
A,
AA,
AAA,
}
impl WcagLevel {
pub fn as_str(self) -> &'static str {
match self {
WcagLevel::A => "A",
WcagLevel::AA => "AA",
WcagLevel::AAA => "AAA",
}
}
pub fn included_in(self, target: WcagLevel) -> bool {
self <= target
}
}