00001 #include <UnitTest++.h> 00002 #include "cddefines.h" 00003 #include "physconst.h" 00004 #include "energy.h" 00005 00006 namespace { 00007 00008 TEST(TestEnergyCTor) 00009 { 00010 Energy Ezero; 00011 CHECK( fp_equal( Ezero.Ryd(), 0. ) ); 00012 Energy Eryd0(1.); 00013 CHECK( fp_equal( Eryd0.Ryd(), 1. ) ); 00014 Energy Eryd1(1.,"Ryd"); 00015 CHECK( fp_equal( Eryd1.Ryd(), 1. ) ); 00016 Energy Eerg(1.,"erg"); 00017 CHECK( fp_equal( Eerg.Ryd(), 1./EN1RYD ) ); 00018 Energy EeV(1.,"eV"); 00019 CHECK( fp_equal( EeV.Ryd(), 1./EVRYD ) ); 00020 Energy EkeV(1.,"keV"); 00021 CHECK( fp_equal( EkeV.Ryd(), 1.e3/EVRYD ) ); 00022 Energy EMeV(1.,"MeV"); 00023 CHECK( fp_equal( EMeV.Ryd(), 1.e6/EVRYD ) ); 00024 Energy Ewavn(1.,"cm^-1"); 00025 CHECK( fp_equal( Ewavn.Ryd(), 1./RYD_INF ) ); 00026 Energy Ecm(1.,"cm"); 00027 CHECK( fp_equal( Ecm.Ryd(), RYDLAM/1.e8 ) ); 00028 Energy Emm(1.,"mm"); 00029 CHECK( fp_equal( Emm.Ryd(), RYDLAM/1.e7 ) ); 00030 Energy Eum(1.,"um"); 00031 CHECK( fp_equal( Eum.Ryd(), RYDLAM/1.e4 ) ); 00032 Energy Enm(1.,"nm"); 00033 CHECK( fp_equal( Enm.Ryd(), RYDLAM/1.e1 ) ); 00034 Energy EA(1.,"A"); 00035 CHECK( fp_equal( EA.Ryd(), RYDLAM ) ); 00036 Energy EHz(1.,"Hz"); 00037 CHECK( fp_equal( EHz.Ryd(), 1./FR1RYD ) ); 00038 Energy EkHz(1.,"kHz"); 00039 CHECK( fp_equal( EkHz.Ryd(), 1.e3/FR1RYD ) ); 00040 Energy EMHz(1.,"MHz"); 00041 CHECK( fp_equal( EMHz.Ryd(), 1.e6/FR1RYD ) ); 00042 Energy EGHz(1.,"GHz"); 00043 CHECK( fp_equal( EGHz.Ryd(), 1.e9/FR1RYD ) ); 00044 Energy EK(1.,"K"); 00045 CHECK( fp_equal( EK.Ryd(), 1./TE1RYD ) ); 00046 } 00047 00048 TEST(TestEnergySet) 00049 { 00050 Energy E; 00051 E.set(10.); 00052 CHECK( fp_equal( E.Ryd(), 10. ) ); 00053 E.set(10.,"Ryd"); 00054 CHECK( fp_equal( E.Ryd(), 10. ) ); 00055 E.set(10.,"erg"); 00056 CHECK( fp_equal( E.Ryd(), 10./EN1RYD ) ); 00057 E.set(10.,"eV"); 00058 CHECK( fp_equal( E.Ryd(), 10./EVRYD ) ); 00059 E.set(10.,"keV"); 00060 CHECK( fp_equal( E.Ryd(), 1.e4/EVRYD ) ); 00061 E.set(10.,"MeV"); 00062 CHECK( fp_equal( E.Ryd(), 1.e7/EVRYD ) ); 00063 E.set(10.,"cm^-1"); 00064 CHECK( fp_equal( E.Ryd(), 10./RYD_INF ) ); 00065 E.set(10.,"cm"); 00066 CHECK( fp_equal( E.Ryd(), RYDLAM/1.e9 ) ); 00067 E.set(10.,"mm"); 00068 CHECK( fp_equal( E.Ryd(), RYDLAM/1.e8 ) ); 00069 E.set(10.,"um"); 00070 CHECK( fp_equal( E.Ryd(), RYDLAM/1.e5 ) ); 00071 E.set(10.,"nm"); 00072 CHECK( fp_equal( E.Ryd(), RYDLAM/1.e2 ) ); 00073 E.set(10.,"A"); 00074 CHECK( fp_equal( E.Ryd(), RYDLAM/10. ) ); 00075 E.set(10.,"Hz"); 00076 CHECK( fp_equal( E.Ryd(), 10./FR1RYD ) ); 00077 E.set(10.,"kHz"); 00078 CHECK( fp_equal( E.Ryd(), 1.e4/FR1RYD ) ); 00079 E.set(10.,"MHz"); 00080 CHECK( fp_equal( E.Ryd(), 1.e7/FR1RYD ) ); 00081 E.set(10.,"GHz"); 00082 CHECK( fp_equal( E.Ryd(), 1.e10/FR1RYD ) ); 00083 E.set(10.,"K"); 00084 CHECK( fp_equal( E.Ryd(), 10./TE1RYD ) ); 00085 } 00086 00087 TEST(TestEnergyGet) 00088 { 00089 Energy E( 1. ); 00090 CHECK( fp_equal( E.get("Ryd"), 1. ) ); 00091 CHECK( fp_equal( E.get("erg"), EN1RYD ) ); 00092 CHECK( fp_equal( E.get("eV"), EVRYD ) ); 00093 CHECK( fp_equal( E.get("keV"), EVRYD/1.e3 ) ); 00094 CHECK( fp_equal( E.get("MeV"), EVRYD/1.e6 ) ); 00095 CHECK( fp_equal( E.get("cm^-1"), RYD_INF ) ); 00096 CHECK( fp_equal( E.get("cm"), RYDLAM/1.e8 ) ); 00097 CHECK( fp_equal( E.get("mm"), RYDLAM/1.e7 ) ); 00098 CHECK( fp_equal( E.get("um"), RYDLAM/1.e4 ) ); 00099 CHECK( fp_equal( E.get("nm"), RYDLAM/1.e1 ) ); 00100 CHECK( fp_equal( E.get("A"), RYDLAM ) ); 00101 CHECK( fp_equal( E.get("Hz"), FR1RYD ) ); 00102 CHECK( fp_equal( E.get("kHz"), FR1RYD/1.e3 ) ); 00103 CHECK( fp_equal( E.get("MHz"), FR1RYD/1.e6 ) ); 00104 CHECK( fp_equal( E.get("GHz"), FR1RYD/1.e9 ) ); 00105 CHECK( fp_equal( E.get("K"), TE1RYD ) ); 00106 } 00107 00108 TEST(TestEnergyGet2) 00109 { 00110 Energy E( 1. ); 00111 CHECK( fp_equal( E.Ryd(), 1. ) ); 00112 CHECK( fp_equal( E.Erg(), EN1RYD ) ); 00113 CHECK( fp_equal( E.eV(), EVRYD ) ); 00114 CHECK( fp_equal( E.keV(), EVRYD/1.e3 ) ); 00115 CHECK( fp_equal( E.MeV(), EVRYD/1.e6 ) ); 00116 CHECK( fp_equal( E.WN(), RYD_INF ) ); 00117 CHECK( fp_equal( E.cm(), RYDLAM/1.e8 ) ); 00118 CHECK( fp_equal( E.mm(), RYDLAM/1.e7 ) ); 00119 CHECK( fp_equal( E.micron(), RYDLAM/1.e4 ) ); 00120 CHECK( fp_equal( E.nm(), RYDLAM/1.e1 ) ); 00121 CHECK( fp_equal( E.Angstrom(), RYDLAM ) ); 00122 CHECK( fp_equal( E.Hz(), FR1RYD ) ); 00123 CHECK( fp_equal( E.kHz(), FR1RYD/1.e3 ) ); 00124 CHECK( fp_equal( E.MHz(), FR1RYD/1.e6 ) ); 00125 CHECK( fp_equal( E.GHz(), FR1RYD/1.e9 ) ); 00126 CHECK( fp_equal( E.K(), TE1RYD ) ); 00127 } 00128 00129 TEST(TestEnergyUnitConversion) 00130 { 00131 Energy E( 10. ); 00132 CHECK( fp_equal( E.get( StandardEnergyUnit(" RYD") ), 10. ) ); 00133 CHECK( fp_equal( E.get( StandardEnergyUnit("ERG ") ), 10.*EN1RYD ) ); 00134 CHECK( fp_equal( E.get( StandardEnergyUnit(" EV ") ), 10.*EVRYD ) ); 00135 CHECK( fp_equal( E.get( StandardEnergyUnit(" KEV") ), EVRYD/1.e2 ) ); 00136 CHECK( fp_equal( E.get( StandardEnergyUnit(" MEV") ), EVRYD/1.e5 ) ); 00137 CHECK( fp_equal( E.get( StandardEnergyUnit("WAVE") ), 10.*RYD_INF ) ); 00138 CHECK( fp_equal( E.get( StandardEnergyUnit(" CM ") ), RYDLAM/1.e9 ) ); 00139 CHECK( fp_equal( E.get( StandardEnergyUnit("CENT") ), RYDLAM/1.e9 ) ); 00140 CHECK( fp_equal( E.get( StandardEnergyUnit(" MM ") ), RYDLAM/1.e8 ) ); 00141 CHECK( fp_equal( E.get( StandardEnergyUnit(" MIC") ), RYDLAM/1.e5 ) ); 00142 CHECK( fp_equal( E.get( StandardEnergyUnit(" NM ") ), RYDLAM/1.e2 ) ); 00143 CHECK( fp_equal( E.get( StandardEnergyUnit("ANGS") ), RYDLAM/10. ) ); 00144 CHECK( fp_equal( E.get( StandardEnergyUnit(" HZ ") ), 10.*FR1RYD ) ); 00145 CHECK( fp_equal( E.get( StandardEnergyUnit(" KHZ") ), FR1RYD/1.e2 ) ); 00146 CHECK( fp_equal( E.get( StandardEnergyUnit(" MHZ") ), FR1RYD/1.e5 ) ); 00147 CHECK( fp_equal( E.get( StandardEnergyUnit(" GHZ") ), FR1RYD/1.e8 ) ); 00148 CHECK( fp_equal( E.get( StandardEnergyUnit(" K ") ), 10.*TE1RYD ) ); 00149 CHECK( fp_equal( E.get( StandardEnergyUnit("KELV") ), 10.*TE1RYD ) ); 00150 } 00151 00152 }