1pub mod complex;
2
3
4#[cfg(test)]
5mod tests {
6 use super::*;
7 fn create_complex_pair() -> (complex::Complex, complex::Complex)
8 {
9 let c1 = complex::Complex::new(1.0, 5.0);
10 let c2 = complex::Complex::new(3.0, 2.0);
11 (c1, c2)
12 }
13
14 #[test]
15 fn generation() {
16 let pol = complex::Polar {
17 r: 1.0,
18 theta: 0.0,
19 };
20 let actual = pol.to_complex();
21 let expected = complex::Complex::new(1.0, 0.0);
22 assert!(actual == expected);
23
24 let actual = complex::Complex::i();
25 let expected = complex::Complex::new(0.0, 1.0);
26 assert!(actual == expected);
27 }
28
29 #[test]
30 fn comparison() {
31 let (c1, c2) = create_complex_pair();
32 let c3 = complex::Complex::new(c1.real, c1.img);
33 assert!(c1 != c2);
34 assert!(c1 == c3);
35 }
36
37 #[test]
38 fn arithmetic() {
39 let (c1, c2) = create_complex_pair();
40
41 let actual = c1 + c2;
42 let expected = complex::Complex::new(4.0, 7.0);
43 assert!(actual == expected);
44
45 let actual = c1 - c2;
46 let expected = complex::Complex::new(-2.0, 3.0);
47 assert!(actual == expected);
48
49 let actual = c1 * c2;
50 let expected = complex::Complex::new(-7.0, 17.0);
51 assert!(actual == expected);
52
53 let actual = c1 / c2;
54 let expected = complex::Complex::new(1.0, 1.0);
55 assert!(actual == expected);
56 }
57
58 #[test]
59 fn functions() {
60 let (c1, _) = create_complex_pair();
61
62
63 let actual = c1.conjugate();
64 let expected = complex::Complex::new(c1.real, -c1.img);
65 assert!(actual == expected);
66
67
68 let c4 = complex::Complex::new(3.0, 1.0);
69
70 let actual = c4.cos();
71 let expected = complex::Complex::new(((c4.real).cos()*(c4.img).cosh()), (-(c4.real).sin()*(c4.img).sinh()));
72 assert!(actual == expected);
73
74 let actual = c4.sin();
75 let expected = complex::Complex::new((c4.real).sin()*(c4.img).cosh(), -(c4.real).cos()*(c4.img).sinh());
76 assert!(actual == expected);
77 }
78}