Skip to main content

calculator_washin/
lib.rs

1pub mod calc1;
2pub mod calc2;
3pub mod calc3;
4#[cfg(test)]
5mod tests {
6    use super::calc1::{add, sub};
7    use super::calc2::{multiply, rate};
8    use super::calc3::{pot, log};
9
10    #[test]
11    fn teste_add() {
12        assert_eq!(add(10, 20), 30);
13    }
14
15    #[test]
16    fn teste_add_zero() {
17        assert_eq!(add(0, 20), 20);
18        assert_eq!(add(20, 0), 20);
19    }
20
21    #[test]
22    fn teste_add_grandes() {
23        assert_eq!(add(1_000_000_000, 1_000_000_000), 2_000_000_000);
24    }
25
26    #[test]
27    fn teste_sub() {
28        assert_eq!(sub(20, 10), 10);
29    }
30
31    #[test]
32    fn teste_sub_zero() {
33        assert_eq!(sub(20, 0), 20);
34        assert_eq!(sub(0, 20), 0);
35    }
36
37    #[test]
38    fn teste_multiply() {
39        assert_eq!(multiply(2, 3), 6);
40    }
41    
42    #[test]
43    fn teste_multiply_zero() {
44        assert_eq!(multiply(0, 5), 0);
45        assert_eq!(multiply(5, 0), 0);
46    }
47
48    #[test]
49    fn teste_multiply_grandes() {
50        assert_eq!(multiply(1_000_000, 1_000), 1_000_000_000);
51    }
52
53    #[test]
54    fn teste_rate() {
55        assert_eq!(rate(100, 5), 20);
56    }
57
58    #[test]
59    fn teste_rate_zero() {
60        assert_eq!(rate(100, 0), 0);
61        assert_eq!(rate(0, 5), 0);
62    }
63
64    #[test]
65    fn teste_rate_fracionario() {
66        assert_eq!(rate(105, 2), 52);
67    }
68
69    #[test]
70    fn teste_pot() {
71        assert_eq!(pot(2.0, 3), 8.0);
72        assert_eq!(pot(3.0, 2), 9.0);
73    }
74
75    #[test]
76    fn teste_log() {
77        let tolerance = 1e-9;
78        assert!((log(3.0, 8.0) - 1.892789260714372).abs() < tolerance);
79        assert_eq!(log(3.0, 9.0), 2.0);
80    }
81}