Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions src/utils/chemspecies.jl
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,23 @@ end

ChemicalSpecies(sym::ChemicalSpecies) = sym

==(a::ChemicalSpecies, sym::Symbol) =
((a == ChemicalSpecies(sym)) && (Symbol(a) == sym))
function ==(a::ChemicalSpecies, sym::Symbol)
# We need to catch ArgumentError here as e.g.
# ChemicalSpecies(:H) == :not_atom
# does throw an error but should return false
tmp = try
ChemicalSpecies(sym)
catch e
if e isa ArgumentError
return false
else
rethrow()
end
end
return (a == tmp) && (Symbol(a) == sym)
end

==(sym::Symbol, a::ChemicalSpecies) = ==(a, sym)

function ==(cs1::ChemicalSpecies, cs2::ChemicalSpecies)
if cs1.atomic_number != cs2.atomic_number
Expand Down
10 changes: 10 additions & 0 deletions test/species.jl
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ end
@test ChemicalSpecies(:U238) == :U238
@test ChemicalSpecies(:Cl35) == :Cl35
@test ChemicalSpecies(:He3) == :He3
@test ChemicalSpecies(:H) != :not_atom
@test :H == ChemicalSpecies(:H)
@test :D == ChemicalSpecies(:D)
@test :T == ChemicalSpecies(:T)
@test :X == ChemicalSpecies(:X)
@test :Fe56 == ChemicalSpecies(:Fe56)
@test :Al27 == ChemicalSpecies(:Al27)
@test :He4 == ChemicalSpecies(:He4)
@test :not_atom != ChemicalSpecies(:O)

@test_throws ArgumentError ChemicalSpecies(:C; atom_name=:MyLongC)
@test_throws ArgumentError ChemicalSpecies(:U2389)
Expand Down Expand Up @@ -66,6 +75,7 @@ end

tmp = ChemicalSpecies(:C12; atom_name=:MyC)
@test atom_name(tmp) != atomic_symbol(tmp)
@test atomic_symbol(tmp) != atom_name(tmp)

@test mass(ChemicalSpecies(:C)) != mass(ChemicalSpecies(:C12))
@test mass(ChemicalSpecies(:C12)) != mass(ChemicalSpecies(:C13))
Expand Down
Loading