rutilities/utilities/
is_rut_valid.rs1use super::get_verification_digit;
2use wasm_bindgen::prelude::wasm_bindgen;
3
4#[wasm_bindgen(js_name = isRutValid)]
16pub fn is_rut_valid(rut: &str) -> bool {
17 let mut unformatted_document_number = rut.replace(".", "").replace("-", "");
18 let given_verification_digit = match unformatted_document_number.pop() {
19 Some(vd) => vd,
20 None => return false,
21 };
22
23 let expected_verification_digit = match get_verification_digit(&unformatted_document_number) {
24 Ok(vd) => vd,
25 Err(_) => return false,
26 };
27
28 return given_verification_digit == expected_verification_digit;
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34
35 #[test]
36 fn it_returns_false_for_invalid_rut() {
37 assert_eq!(is_rut_valid("1234"), false);
38 }
39
40 #[test]
41 fn it_returns_false_for_empty_rut() {
42 assert_eq!(is_rut_valid(""), false);
43 }
44
45 #[test]
46 fn it_returns_false_for_dirty_rut() {
47 assert_eq!(is_rut_valid("muddy87566129"), false);
48 }
49
50 #[test]
51 fn it_returns_true_for_valid_rut() {
52 assert_eq!(is_rut_valid("8756612-9"), true);
53 }
54}