1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
require "xraylib"
require "test/unit"
class TestCompoundParser < Test::Unit::TestCase
def test_good_compounds
assert_instance_of(Hash, Xraylib.CompoundParser("C19H29COOH"))
assert_instance_of(Hash, Xraylib.CompoundParser("C12H10"))
assert_instance_of(Hash, Xraylib.CompoundParser("C12H6O2"))
assert_instance_of(Hash, Xraylib.CompoundParser("C6H5Br"))
assert_instance_of(Hash, Xraylib.CompoundParser("C3H4OH(COOH)3"))
assert_instance_of(Hash, Xraylib.CompoundParser("HOCH2CH2OH"))
assert_instance_of(Hash, Xraylib.CompoundParser("C5H11NO2"))
assert_instance_of(Hash, Xraylib.CompoundParser("CH3CH(CH3)CH3"))
assert_instance_of(Hash, Xraylib.CompoundParser("NH2CH(C4H5N2)COOH"))
assert_instance_of(Hash, Xraylib.CompoundParser("H2O"))
assert_instance_of(Hash, Xraylib.CompoundParser("Ca5(PO4)3F"))
assert_instance_of(Hash, Xraylib.CompoundParser("Ca5(PO4)3OH"))
assert_instance_of(Hash, Xraylib.CompoundParser("Ca5.522(PO4.48)3OH"))
assert_instance_of(Hash, Xraylib.CompoundParser("Ca5.522(PO.448)3OH"))
end
def test_bad_compounds
bad_compounds = [
"CuI2ww",
"0C",
"2O",
"13Li",
"2(NO3)",
"H(2)",
"Ba(12)",
"Cr(5)3",
"Pb(13)2",
"Au(22)11",
"Au11(H3PO4)2)",
"Au11(H3PO4))2",
"Au(11(H3PO4))2",
"Ca5.522(PO.44.8)3OH",
"Ba[12]",
"Auu1",
"AuL1",
nil,
" ",
"\t",
"\n",
"Au L1",
"Au\tFe"
]
bad_compounds.each {|compound| assert_raise(ArgumentError) {Xraylib.CompoundParser(compound)}}
assert_raise(TypeError) {
Xraylib.CompoundParser(26)
}
assert_raise(ArgumentError) {
Xraylib.CompoundParser()
}
assert_raise(ArgumentError) {
Xraylib.CompoundParser("H2O", "H2SO4")
}
end
def test_H2SO4
cd = Xraylib.CompoundParser("H2SO4")
assert_equal(cd['nElements'], 3)
assert_in_delta(cd['molarMass'], 98.09, 1E-6)
assert_in_delta(cd['nAtomsAll'], 7.0, 1E-6)
assert_equal(cd['Elements'], [1, 8, 16])
[0.02059333265368539, 0.6524620246712203, 0.32694464267509427].each_with_index do |v, i|
assert_in_delta(cd['massFractions'][i], v, 1E-6)
end
[2.0, 4.0, 1.0].each_with_index do |v, i|
assert_in_delta(cd['nAtoms'][i], v, 1E-6)
end
end
end
class TestSymbolToAtomicNumber < Test::Unit::TestCase
def test_Fe
assert_equal(Xraylib.SymbolToAtomicNumber("Fe"), 26)
end
def test_bad_symbol
assert_raise(ArgumentError) {
Xraylib.SymbolToAtomicNumber("Uu")
}
assert_raise(TypeError) {
Xraylib.SymbolToAtomicNumber(26)
}
assert_raise(ArgumentError) {
Xraylib.SymbolToAtomicNumber(nil)
}
assert_raise(ArgumentError) {
Xraylib.SymbolToAtomicNumber()
}
assert_raise(ArgumentError) {
Xraylib.SymbolToAtomicNumber("Cl", "Fe")
}
end
end
class TestAtomicNumberToSymbol < Test::Unit::TestCase
def test_Fe
assert_equal(Xraylib.AtomicNumberToSymbol(26), "Fe")
end
def test_bad_symbol
assert_raise(ArgumentError) {
Xraylib.AtomicNumberToSymbol(-2)
}
assert_raise(ArgumentError) {
Xraylib.AtomicNumberToSymbol(108)
}
assert_raise(TypeError) {
Xraylib.AtomicNumberToSymbol("Fe")
}
assert_raise(TypeError) {
Xraylib.AtomicNumberToSymbol(nil)
}
assert_raise(ArgumentError) {
Xraylib.AtomicNumberToSymbol(26, 52)
}
end
end
class TestCrossValidation < Test::Unit::TestCase
def test
(1..107).each {|z| assert_equal(Xraylib.SymbolToAtomicNumber(Xraylib.AtomicNumberToSymbol(z)), z)}
end
end
|