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 }