Skip to content

Commit ea89052

Browse files
committed
add tests for AtomsBase integration
1 parent c27067d commit ea89052

File tree

6 files changed

+56
-10
lines changed

6 files changed

+56
-10
lines changed

src/integrations/atomsbase_integration.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ AtomsBase.species_type(s::DynamicSystem) = species_type(s.system)
2222
Base.length(s::DynamicSystem) = length(s.system)
2323
Base.getindex(s::DynamicSystem, i::Integer) = getindex(s.system, i)
2424

25+
AtomsBase.position(s::DynamicSystem) = position(s.system)
26+
AtomsBase.velocity(s::DynamicSystem) = velocity(s.system)
27+
AtomsBase.atomic_mass(s::DynamicSystem) = atomic_mass(s.system)
28+
AtomsBase.atomic_symbol(s::DynamicSystem) = AtomsBase.atomic_symbol(s.system)
29+
AtomsBase.atomic_number(s::DynamicSystem) = atomic_number(s.system)
30+
2531
AtomsBase.position(s::DynamicSystem, i) = position(s.system, i)
2632
AtomsBase.velocity(s::DynamicSystem, i) = velocity(s.system, i)
2733
AtomsBase.atomic_mass(s::DynamicSystem, i) = atomic_mass(s.system, i)

test/Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
[deps]
22
AtomsBase = "a963bdd2-2df7-4f54-a1ee-49d51e6be12a"
3+
DFTK = "acf6eb54-70d9-11e9-0013-234b7a5f5337"
34
InteratomicPotentials = "a9efe35a-c65d-452d-b8a8-82646cd5cb04"
45
PeriodicTable = "7b2266bf-644c-5ea3-82d8-af4bbd25a884"
6+
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
57
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
68
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
79
UnitfulAtomic = "a7773ee8-282e-5fa2-be4e-bd808c38a91a"

test/runtests.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
using Atomistic
44
using AtomsBase
5+
using DFTK
56
using InteratomicPotentials
67
using PeriodicTable
8+
using StaticArrays
79
using Test
810
using Unitful
911
using UnitfulAtomic

test/unit/api/md_result.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# Unit tests for api/md_result.jl
22

3-
struct MockResult1 <: MolecularDynamicsResult end
4-
struct MockResult2 <: MolecularDynamicsResult end
5-
Atomistic.kinetic_energy(::MockResult2, t::Integer = 0) = t * u"bohr"
6-
Atomistic.potential_energy(::MockResult2, t::Integer = 0) = -2t * u"bohr"
7-
83
@testset "api/md_result.jl" begin
4+
struct MockResult1 <: MolecularDynamicsResult end
5+
struct MockResult2 <: MolecularDynamicsResult end
6+
Atomistic.kinetic_energy(::MockResult2, t::Integer = 0) = t * u"bohr"
7+
Atomistic.potential_energy(::MockResult2, t::Integer = 0) = -2t * u"bohr"
8+
99
target1 = MockResult1()
1010
target2 = MockResult2()
1111

test/unit/api/md_simulator.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Unit tests for api/md_simulator.jl
22

3-
struct MockSystem <: AbstractSystem{3} end
4-
struct MockSimulator <: MolecularDynamicsSimulator end
5-
struct MockPotential <: InteratomicPotentials.ArbitraryPotential end
6-
73
@testset "api/md_simulator.jl" begin
4+
struct MockSystem <: AbstractSystem{3} end
5+
struct MockSimulator <: MolecularDynamicsSimulator end
6+
struct MockPotential <: InteratomicPotentials.ArbitraryPotential end
7+
88
@test_throws Atomistic.UnimplementedError{MockSimulator} simulate(MockSystem(), MockSimulator(), MockPotential())
99
end
Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,41 @@
11
# Unit tests for integrations/atomsbase_integration.jl
22

33
@testset "integrations/atomsbase_integration.jl" begin
4-
# TODO
4+
struct MockSystem1D <: AbstractSystem{1} end
5+
AtomsBase.bounding_box(s::MockSystem1D) = infinite_box(3)
6+
AtomsBase.boundary_conditions(s::MockSystem1D) = [Periodic(), Periodic(), Periodic()]
7+
Base.length(s::MockSystem1D) = 3
8+
AtomsBase.species_type(s::MockSystem1D) = Symbol
9+
Base.getindex(s::MockSystem1D, index::Int) = Symbol(index)
10+
AtomsBase.position(s::MockSystem1D) = [11, 12, 13]u"m"
11+
AtomsBase.atomic_symbol(s::MockSystem1D) = [Symbol(11), Symbol(12), Symbol(13)]
12+
AtomsBase.atomic_number(s::MockSystem1D) = [10, 10, 10]
13+
AtomsBase.atomic_mass(s::MockSystem1D) = [10, 10, 10]u"kg"
14+
AtomsBase.velocity(s::MockSystem1D) = missing
15+
AtomsBase.position(s::MockSystem1D, i) = i * u"m"
16+
AtomsBase.atomic_symbol(s::MockSystem1D, i) = Symbol(i)
17+
AtomsBase.atomic_number(s::MockSystem1D, i) = 0
18+
AtomsBase.atomic_mass(s::MockSystem1D, i) = 0u"kg"
19+
AtomsBase.velocity(s::MockSystem1D, i) = missing
20+
21+
target = DynamicSystem(MockSystem1D(), 3.14u"s")
22+
23+
@test bounding_box(target) == infinite_box(3)
24+
@test boundary_conditions(target) == [Periodic(), Periodic(), Periodic()]
25+
@test periodicity(target) == [true, true, true]
26+
@test n_dimensions(target) == 1
27+
@test length(target) == 3
28+
@test size(target) == (3,)
29+
@test species_type(target) == Symbol
30+
@test [x for x target] == [Symbol(1), Symbol(2), Symbol(3)]
31+
@test position(target) == [11, 12, 13]u"m"
32+
@test ismissing(velocity(target))
33+
@test AtomsBase.atomic_symbol(target) == [Symbol(11), Symbol(12), Symbol(13)]
34+
@test atomic_number(target) == [10, 10, 10]
35+
@test atomic_mass(target) == [10, 10, 10]u"kg"
36+
@test position(target, 1) == 1u"m"
37+
@test ismissing(velocity(target, 1))
38+
@test AtomsBase.atomic_symbol(target, 1) == Symbol(1)
39+
@test atomic_number(target, 1) == 0
40+
@test atomic_mass(target, 1) == 0u"kg"
541
end

0 commit comments

Comments
 (0)