stratum_components/
common.rs1#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
5pub enum Size {
6 Xs,
8 Sm,
10 #[default]
12 Md,
13 Lg,
15 Xl,
17}
18
19impl Size {
20 pub fn as_str(&self) -> &'static str {
22 match self {
23 Size::Xs => "xs",
24 Size::Sm => "sm",
25 Size::Md => "md",
26 Size::Lg => "lg",
27 Size::Xl => "xl",
28 }
29 }
30}
31
32pub fn merge_classes(computed: &str, user_class: &Option<String>) -> String {
34 match user_class {
35 Some(extra) => format!("{} {}", computed, extra),
36 None => computed.to_string(),
37 }
38}
39
40#[cfg(test)]
41mod tests {
42 use super::*;
43
44 #[test]
45 fn size_default_is_md() {
46 assert_eq!(Size::default(), Size::Md);
47 }
48
49 #[test]
50 fn size_as_str() {
51 assert_eq!(Size::Xs.as_str(), "xs");
52 assert_eq!(Size::Sm.as_str(), "sm");
53 assert_eq!(Size::Md.as_str(), "md");
54 assert_eq!(Size::Lg.as_str(), "lg");
55 assert_eq!(Size::Xl.as_str(), "xl");
56 }
57
58 #[test]
59 fn merge_classes_without_override() {
60 let result = merge_classes("btn btn-primary", &None);
61 assert_eq!(result, "btn btn-primary");
62 }
63
64 #[test]
65 fn merge_classes_with_override() {
66 let result = merge_classes("btn btn-primary", &Some("my-custom".to_string()));
67 assert_eq!(result, "btn btn-primary my-custom");
68 }
69}