all_variants enum methods (#1191)

This commit is contained in:
Brandon Thomas
2026-03-22 18:10:56 -04:00
committed by GitHub
parent be18036bf6
commit 78e7d08f04
4 changed files with 68 additions and 0 deletions
@@ -64,6 +64,11 @@ pub enum GenericDownloadType {
/// NB: Legacy API for older code.
impl GenericDownloadType {
pub fn all_variants() -> std::collections::BTreeSet<Self> {
use strum::IntoEnumIterator;
Self::iter().collect()
}
pub fn to_str(&self) -> &'static str {
match self {
Self::HifiGan => "hifigan",
@@ -154,5 +159,17 @@ mod tests {
assert!(serialized.len() <= MAX_LENGTH, "variant {:?} is too long", variant);
}
}
#[test]
fn all_variants_returns_all() {
let variants = GenericDownloadType::all_variants();
assert_eq!(variants.len(), 8);
}
#[test]
fn all_variants_matches_iter_count() {
use strum::IntoEnumIterator;
assert_eq!(GenericDownloadType::all_variants().len(), GenericDownloadType::iter().count());
}
}
}
@@ -51,6 +51,11 @@ impl_mysql_enum_coders!(InferenceJobType);
impl_mysql_from_row!(InferenceJobType);
impl InferenceJobType {
pub fn all_variants() -> std::collections::BTreeSet<Self> {
use strum::IntoEnumIterator;
Self::iter().collect()
}
pub fn to_str(&self) -> &'static str {
match self {
Self::FalQueue => "fal_queue",
@@ -229,5 +234,17 @@ mod tests {
assert!(serialized.len() <= MAX_LENGTH, "variant {:?} is too long", variant);
}
}
#[test]
fn all_variants_returns_all() {
let variants = InferenceJobType::all_variants();
assert_eq!(variants.len(), 23);
}
#[test]
fn all_variants_matches_iter_count() {
use strum::IntoEnumIterator;
assert_eq!(InferenceJobType::all_variants().len(), InferenceJobType::iter().count());
}
}
}
@@ -60,6 +60,11 @@ impl_mysql_from_row!(InferenceModelType);
/// NB: Legacy API for older code.
impl InferenceModelType {
pub fn all_variants() -> std::collections::BTreeSet<Self> {
use strum::IntoEnumIterator;
Self::iter().collect()
}
pub fn to_str(&self) -> &'static str {
match self {
Self::RvcV2 => "rvc_v2",
@@ -193,5 +198,17 @@ mod tests {
assert!(serialized.len() <= MAX_LENGTH, "variant {:?} is too long", variant);
}
}
#[test]
fn all_variants_returns_all() {
let variants = InferenceModelType::all_variants();
assert_eq!(variants.len(), 15);
}
#[test]
fn all_variants_matches_iter_count() {
use strum::IntoEnumIterator;
assert_eq!(InferenceModelType::all_variants().len(), InferenceModelType::iter().count());
}
}
}
@@ -29,6 +29,11 @@ impl_mysql_from_row!(UserFeatureFlag);
/// NB: Legacy API for older code.
impl UserFeatureFlag {
pub fn all_variants() -> std::collections::BTreeSet<Self> {
use strum::IntoEnumIterator;
Self::iter().collect()
}
pub fn to_str(&self) -> &'static str {
match self {
Self::ExploreMedia => "explore_media",
@@ -108,5 +113,17 @@ mod tests {
assert!(serialized.len() <= MAX_LENGTH, "variant {:?} is too long", variant);
}
}
#[test]
fn all_variants_returns_all() {
let variants = UserFeatureFlag::all_variants();
assert_eq!(variants.len(), 4);
}
#[test]
fn all_variants_matches_iter_count() {
use strum::IntoEnumIterator;
assert_eq!(UserFeatureFlag::all_variants().len(), UserFeatureFlag::iter().count());
}
}
}