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 }