rcomplex/
lib.rs

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}