ruby_inflector/case/
screaming_snake.rs1use crate::case::*;
2pub fn to_screaming_snake_case(non_snake_case_string: &str) -> String {
16 to_case_snake_like(non_snake_case_string, "_", "upper")
17}
18
19pub fn is_screaming_snake_case(test_string: &str) -> bool {
35 test_string == to_screaming_snake_case(test_string)
36}
37
38#[cfg(all(feature = "unstable", test))]
39mod benchmarks {
40 extern crate test;
41 use self::test::Bencher;
42
43 #[bench]
44 fn bench_screaming_snake(b: &mut Bencher) {
45 b.iter(|| super::to_screaming_snake_case("Foo bar"));
46 }
47
48 #[bench]
49 fn bench_is_screaming_snake(b: &mut Bencher) {
50 b.iter(|| super::is_screaming_snake_case("Foo bar"));
51 }
52}
53
54#[cfg(test)]
55mod tests {
56 use super::is_screaming_snake_case;
57 use super::to_screaming_snake_case;
58
59 #[test]
60 fn from_camel_case() {
61 let convertable_string: String = "fooBar".to_owned();
62 let expected: String = "FOO_BAR".to_owned();
63 assert_eq!(to_screaming_snake_case(&convertable_string), expected)
64 }
65
66 #[test]
67 fn from_pascal_case() {
68 let convertable_string: String = "FooBar".to_owned();
69 let expected: String = "FOO_BAR".to_owned();
70 assert_eq!(to_screaming_snake_case(&convertable_string), expected)
71 }
72
73 #[test]
74 fn from_kebab_case() {
75 let convertable_string: String = "foo-bar".to_owned();
76 let expected: String = "FOO_BAR".to_owned();
77 assert_eq!(to_screaming_snake_case(&convertable_string), expected)
78 }
79
80 #[test]
81 fn from_sentence_case() {
82 let convertable_string: String = "Foo bar".to_owned();
83 let expected: String = "FOO_BAR".to_owned();
84 assert_eq!(to_screaming_snake_case(&convertable_string), expected)
85 }
86
87 #[test]
88 fn from_title_case() {
89 let convertable_string: String = "Foo Bar".to_owned();
90 let expected: String = "FOO_BAR".to_owned();
91 assert_eq!(to_screaming_snake_case(&convertable_string), expected)
92 }
93
94 #[test]
95 fn from_train_case() {
96 let convertable_string: String = "Foo-Bar".to_owned();
97 let expected: String = "FOO_BAR".to_owned();
98 assert_eq!(to_screaming_snake_case(&convertable_string), expected)
99 }
100
101 #[test]
102 fn from_screaming_screaming_snake_case() {
103 let convertable_string: String = "FOO_BAR".to_owned();
104 let expected: String = "FOO_BAR".to_owned();
105 assert_eq!(to_screaming_snake_case(&convertable_string), expected)
106 }
107
108 #[test]
109 fn from_snake_case() {
110 let convertable_string: String = "foo_bar".to_owned();
111 let expected: String = "FOO_BAR".to_owned();
112 assert_eq!(to_screaming_snake_case(&convertable_string), expected)
113 }
114
115 #[test]
116 fn is_correct_from_camel_case() {
117 let convertable_string: String = "fooBar".to_owned();
118 assert!(!is_screaming_snake_case(&convertable_string))
119 }
120
121 #[test]
122 fn is_correct_from_pascal_case() {
123 let convertable_string: String = "FooBar".to_owned();
124 assert!(!is_screaming_snake_case(&convertable_string))
125 }
126
127 #[test]
128 fn is_correct_from_kebab_case() {
129 let convertable_string: String = "foo-bar".to_owned();
130 assert!(!is_screaming_snake_case(&convertable_string))
131 }
132
133 #[test]
134 fn is_correct_from_sentence_case() {
135 let convertable_string: String = "Foo bar".to_owned();
136 assert!(!is_screaming_snake_case(&convertable_string))
137 }
138
139 #[test]
140 fn is_correct_from_title_case() {
141 let convertable_string: String = "Foo Bar".to_owned();
142 assert!(!is_screaming_snake_case(&convertable_string))
143 }
144
145 #[test]
146 fn is_correct_from_train_case() {
147 let convertable_string: String = "Foo-Bar".to_owned();
148 assert!(!is_screaming_snake_case(&convertable_string))
149 }
150
151 #[test]
152 fn is_correct_from_screaming_screaming_snake_case() {
153 let convertable_string: String = "FOO_BAR".to_owned();
154 assert!(is_screaming_snake_case(&convertable_string))
155 }
156
157 #[test]
158 fn is_correct_from_snake_case() {
159 let convertable_string: String = "foo_bar".to_owned();
160 assert!(!is_screaming_snake_case(&convertable_string))
161 }
162}