1#[rustfmt::skip]
17mod generated;
18
19pub use generated::{get_languages, Language, Languages, LANGUAGES};
20
21pub mod languages {
22 pub use super::generated::*;
23}
24
25#[cfg(test)]
26pub mod tests {
27 use super::*;
28
29 #[test]
30 fn get_all_languages() {
31 let languages = get_languages();
32 assert!(!languages.all_languages().is_empty());
33 }
34
35 #[test]
36 fn get_language_by_name() {
37 let languages = get_languages();
38 let language = languages.get_by_name("Rust").unwrap();
39 assert_eq!(language.name, "Rust");
40 }
41
42 #[test]
43 fn no_language_with_name() {
44 let languages = get_languages();
45 let language = languages.get_by_name("Rusttt");
46 assert!(language.is_none());
47 }
48
49 #[test]
50 fn get_languages_by_extension() {
51 let languages = get_languages();
52 let extension_languages = languages.get_by_extension(".rs");
53 assert!(!extension_languages.is_empty());
54 assert!(extension_languages.iter().any(|l| l.name == "Rust"));
55 }
56
57 #[test]
58 fn no_languages_with_extension() {
59 let languages = get_languages();
60 let extension_languages = languages.get_by_extension(".helloworld");
61 assert!(extension_languages.is_empty());
62 }
63
64 #[test]
65 fn get_languages_by_type() {
66 let languages = get_languages();
67 let programming_languages = languages.get_by_type("programming");
68 assert!(!programming_languages.is_empty());
69 assert!(programming_languages.iter().any(|l| l.name == "Rust"));
70 }
71
72 #[test]
73 fn no_languages_with_type() {
74 let languages = get_languages();
75 let invalid_languages = languages.get_by_type("helloworld");
76 assert!(invalid_languages.is_empty());
77 }
78
79 #[test]
80 fn get_languages_by_alias() {
81 let languages = get_languages();
82 let alias_languages = languages.get_by_alias("rs");
83 assert!(!alias_languages.is_empty());
84 assert!(alias_languages.iter().any(|l| l.name == "Rust"));
85 }
86
87 #[test]
88 fn no_languages_with_alias() {
89 let languages = get_languages();
90 let invalid_languages = languages.get_by_alias("helloworld");
91 assert!(invalid_languages.is_empty());
92 }
93
94 #[test]
95 fn get_languages_by_interpreter() {
96 let languages = get_languages();
97 let interpreter_languages = languages.get_by_interpreter("rust-script");
98 assert!(!interpreter_languages.is_empty());
99 assert!(interpreter_languages.iter().any(|l| l.name == "Rust"));
100 }
101
102 #[test]
103 fn no_languages_with_interpreter() {
104 let languages = get_languages();
105 let invalid_languages = languages.get_by_interpreter("helloworld");
106 assert!(invalid_languages.is_empty());
107 }
108
109 #[test]
110 fn get_languages_by_filename() {
111 let languages = get_languages();
112 let languages_with_filenames = languages.get_by_filename("Cargo.lock");
113 assert!(!languages_with_filenames.is_empty());
114 assert!(languages_with_filenames.iter().any(|l| l.name == "TOML"));
115 }
116
117 #[test]
118 fn no_languages_with_filename() {
119 let languages = get_languages();
120 let invalid_languages = languages.get_by_filename("helloworld");
121 assert!(invalid_languages.is_empty());
122 }
123
124 #[test]
125 fn should_get_language_by_id() {
126 let languages = get_languages();
127 let language = languages.get_by_id(100);
128 assert!(language.is_some());
129 assert_eq!(language.unwrap().name, "Elixir");
130 }
131
132 #[test]
133 fn no_language_with_id() {
134 let languages = get_languages();
135 let language = languages.get_by_id(9999999);
136 assert!(language.is_none());
137 }
138
139 #[test]
140 fn language_info_structs() {
141 let javascript = languages::JavaScript::info();
142 assert_eq!(javascript.name, "JavaScript");
143 assert_eq!(javascript.r#type, "programming");
144
145 let typescript = languages::TypeScript::info();
146 assert_eq!(typescript.name, "TypeScript");
147 assert_eq!(typescript.r#type, "programming");
148
149 let rust = languages::Rust::info();
150 assert_eq!(rust.name, "Rust");
151 assert_eq!(rust.r#type, "programming");
152
153 let java = languages::Java::info();
154 assert_eq!(java.name, "Java");
155 assert_eq!(java.r#type, "programming");
156
157 let python = languages::Python::info();
158 assert_eq!(python.name, "Python");
159 assert_eq!(python.r#type, "programming");
160 }
161}