#include "lest.hpp" #include <math.h> #include "catima/catima.h" //#include "nucdata.h" using namespace std; using lest::approx; bool rcompare(double a, double b,double eps){ if(fabs((a-b)/fabs(b))<eps){ return true; } else{ std::cout<<"\033[1;31m"<<a<<" == "<<b<<"\033[0m"<<std::endl; return false; } } const lest::test specification[] = { CASE("LS generated is equal to calculated"){ catima::Projectile p; double a,b; p.A = 238; p.Z = 92; for(double e:{100.0,1000.0,5000.0,30000.0}){ p.T = e; a = catima::bethek_lindhard(p); b = catima::precalculated_lindhard(p); EXPECT(a==approx(b).epsilon(0.001)); } p.A = 220; p.Z = 92; for(double e:{100.0,1000.0,5000.0,30000.0}){ p.T = e; a = catima::bethek_lindhard(p); b = catima::precalculated_lindhard(p); EXPECT(a==approx(b).epsilon(0.01)); } p.A = 250; p.Z = 92; for(double e:{100.0,1000.0,5000.0,30000.0}){ p.T = e; a = catima::bethek_lindhard(p); b = catima::precalculated_lindhard(p); EXPECT(a==approx(b).epsilon(0.01)); } p.A = 200; p.Z = 76; for(double e:{100.0,1000.0,5000.0,30000.0}){ p.T = e; a = catima::bethek_lindhard(p); b = catima::precalculated_lindhard(p); EXPECT(a==approx(b).epsilon(0.01)); } p.A = 100; p.Z = 50; for(double e:{100.0,1000.0,5000.0,30000.0}){ p.T = e; a = catima::bethek_lindhard(p); b = catima::precalculated_lindhard(p); EXPECT(a==approx(b).epsilon(0.01)); } }, CASE("LS X generated is equal to calculated"){ catima::Projectile p; double a,b; p.A = 238; p.Z = 92; for(double e:{90.0,1000.0,5000.0,30000.0}){ p.T = e; a = catima::bethek_lindhard_X(p); b = catima::precalculated_lindhard_X(p); EXPECT(a==approx(b).epsilon(0.001)); } p.A = 220; p.Z = 92; for(double e:{100.0,1000.0,5000.0,30000.0}){ p.T = e; a = catima::bethek_lindhard_X(p); b = catima::precalculated_lindhard_X(p); EXPECT(a==approx(b).epsilon(0.02)); } p.A = 250; p.Z = 92; for(double e:{100.0,1000.0,5000.0,30000.0}){ p.T = e; a = catima::bethek_lindhard_X(p); b = catima::precalculated_lindhard_X(p); EXPECT(a==approx(b).epsilon(0.03)); } p.A = 200; p.Z = 76; for(double e:{100.0,1000.0,5000.0,30000.0}){ p.T = e; a = catima::bethek_lindhard_X(p); b = catima::precalculated_lindhard_X(p); EXPECT(a==approx(b).epsilon(0.03)); } p.A = 100; p.Z = 50; for(double e:{100.0,1000.0,5000.0,30000.0}){ p.T = e; a = catima::bethek_lindhard_X(p); b = catima::precalculated_lindhard_X(p); EXPECT(a==approx(b).epsilon(0.03)); } } }; int main( int argc, char * argv[] ) { return lest::run( specification, argc, argv ); }