1 module dunitconversion.tests.linearfunction;
2 
3 import dunitconversion.linearfunction;
4 
5 import std.math;
6 
7 /// Basic construction tests
8 unittest {
9     auto f = LinearFunction(0, 0);
10     assert(!f.isValid);
11     assert(f.k == 0);
12     assert(f.b == 0);
13 
14     f = LinearFunction(1, 0);
15     assert(f.isValid);
16     assert(f.k == 1);
17     assert(f.b == 0);
18 
19     f = LinearFunction(-15, 8);
20     assert(f.isValid);
21     assert(f.k == -15);
22     assert(f.b == 8);
23 }
24 
25 /// Value test
26 unittest {
27     auto f = LinearFunction(5.5, 3);
28     assert(f.isValid());
29     assert(approxEqual(f.y(0), 3));
30     assert(approxEqual(f.y(-5), -24.5));
31     assert(approxEqual(f.y(1), 8.5));
32     assert(approxEqual(f.y(0.7659), 7.21245));
33     assert(approxEqual(f.y(35.6), 198.8));
34 }
35 
36 /// Inversed test
37 unittest {
38     auto f = LinearFunction(3, -2);
39     f = f.inversed();
40     assert(approxEqual(f.k, 1.0 / 3));
41     assert(approxEqual(f.b, 2.0 / 3));
42 
43     f.k = -2;
44     f.b = -16;
45     f = f.inversed();
46     assert(approxEqual(f.k, -0.5));
47     assert(approxEqual(f.b, -8));
48 }