Skip to content

Commit 1e5489a

Browse files
committed
reorganize tests
1 parent 6cca536 commit 1e5489a

File tree

3 files changed

+72
-51
lines changed

3 files changed

+72
-51
lines changed

Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ Distances = "0.10"
2020
KeywordCalls = "0.2"
2121
RecipesBase = "1"
2222
SpecialFunctions = "0.10, 1"
23+
StableRNGs = "1"
2324
StaticArrays = "0.12, 1"
2425
julia = "1.5"

test/Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
33
ChainRulesTestUtils = "cdddcdb0-9152-4a09-a978-84456f9df70a"
44
RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
5+
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
56
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
67
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
78

test/runtests.jl

Lines changed: 70 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ using ChainRulesCore
22
using ChainRulesTestUtils
33
using PSFModels
44
using PSFModels: Gaussian, Normal, AiryDisk, Moffat
5+
using StableRNGs
56
using StaticArrays
67
using Test
78

9+
rng = StableRNG(122)
10+
811
function test_model_interface(K)
912
# test defaults
1013
m = @inferred K(fwhm=10)
@@ -70,69 +73,85 @@ function test_model_interface(K)
7073
@test m(m.pos) BigFloat(1)
7174
end
7275

73-
function test_model_grads(K)
74-
75-
end
76-
77-
@testset "Model Interface - $K" for K in (Gaussian, AiryDisk, Moffat)
78-
test_model_interface(K)
79-
end
80-
8176
@testset "Gaussian" begin
82-
m = Gaussian(fwhm=10)
83-
expected = exp(-4 * log(2) * sum(abs2, SA[1, 2]) / 100)
84-
@test m[2, 1] m(1, 2) expected
85-
@test repr(m) == "Gaussian{Float64}(pos=[0, 0], fwhm=10, amp=1.0)"
77+
test_model_interface(Gaussian)
78+
79+
@testset "isotropic" begin
80+
m = Gaussian(fwhm=10)
81+
expected = exp(-4 * log(2) * sum(abs2, SA[1, 2]) / 100)
82+
@test m[2, 1] m(1, 2) expected
83+
@test repr(m) == "Gaussian{Float64}(pos=[0, 0], fwhm=10, amp=1.0)"
84+
end
8685

87-
m = Gaussian(fwhm=(10, 9))
88-
wdist = (1/10)^2 + (2/9)^2
89-
expected = exp(-4 * log(2) * wdist)
90-
@test m[2, 1] m(1, 2) expected
91-
@test repr(m) == "Gaussian{Float64}(pos=[0, 0], fwhm=(10, 9), amp=1.0)"
86+
@testset "diagonal" begin
87+
m = Gaussian(fwhm=(10, 9))
88+
wdist = (1/10)^2 + (2/9)^2
89+
expected = exp(-4 * log(2) * wdist)
90+
@test m[2, 1] m(1, 2) expected
91+
@test repr(m) == "Gaussian{Float64}(pos=[0, 0], fwhm=(10, 9), amp=1.0)"
92+
end
9293

9394
# test Normal alias
9495
@test Normal(fwhm=10) === Gaussian(fwhm=10)
96+
97+
@testset "gradients" begin
98+
psf_iso = Gaussian(fwhm=10)
99+
psf_tang = Tangent{Gaussian}(fwhm=rand(rng), pos=rand(rng, 2), amp=rand(rng), indices=ZeroTangent())
100+
end
95101
end
96102

97103

98104
@testset "AiryDisk" begin
99-
m = AiryDisk(fwhm=10)
100-
radius = m.fwhm * 1.18677
101-
# first radius is 0
102-
@test m(radius, 0) 0 atol=eps(Float64)
103-
@test m(-radius, 0) 0 atol=eps(Float64)
104-
@test m(0, radius) 0 atol=eps(Float64)
105-
@test m(0, -radius) 0 atol=eps(Float64)
106-
@test repr(m) == "AiryDisk{Float64}(pos=[0, 0], fwhm=10, amp=1.0)"
107-
108-
m = AiryDisk(fwhm=(10, 9))
109-
r1 = m.fwhm[1] * 1.18677
110-
r2 = m.fwhm[2] * 1.18677
111-
# first radius is 0
112-
@test m(r1, 0) 0 atol=eps(Float64)
113-
@test m(-r1, 0) 0 atol=eps(Float64)
114-
@test m(0, r2) 0 atol=eps(Float64)
115-
@test m(0, -r2) 0 atol=eps(Float64)
116-
@test repr(m) == "AiryDisk{Float64}(pos=[0, 0], fwhm=(10, 9), amp=1.0)"
105+
test_model_interface(AiryDisk)
106+
107+
@testset "isotropic" begin
108+
m = AiryDisk(fwhm=10)
109+
radius = m.fwhm * 1.18677
110+
# first radius is 0
111+
@test m(radius, 0) 0 atol=eps(Float64)
112+
@test m(-radius, 0) 0 atol=eps(Float64)
113+
@test m(0, radius) 0 atol=eps(Float64)
114+
@test m(0, -radius) 0 atol=eps(Float64)
115+
@test repr(m) == "AiryDisk{Float64}(pos=[0, 0], fwhm=10, amp=1.0)"
116+
end
117+
118+
@testset "diagonal" begin
119+
m = AiryDisk(fwhm=(10, 9))
120+
r1 = m.fwhm[1] * 1.18677
121+
r2 = m.fwhm[2] * 1.18677
122+
# first radius is 0
123+
@test m(r1, 0) 0 atol=eps(Float64)
124+
@test m(-r1, 0) 0 atol=eps(Float64)
125+
@test m(0, r2) 0 atol=eps(Float64)
126+
@test m(0, -r2) 0 atol=eps(Float64)
127+
@test repr(m) == "AiryDisk{Float64}(pos=[0, 0], fwhm=(10, 9), amp=1.0)"
128+
end
117129
end
118130

119131
@testset "Moffat" begin
120-
m = Moffat(fwhm=10)
121-
expected = inv(1 + sum(abs2, SA[1, 2]) / 25)
122-
@test m[2, 1] m(1, 2) expected
123-
@test repr(m) == "Moffat{Float64}(pos=[0, 0], fwhm=10, amp=1.0, alpha=1)"
124-
125-
m = Moffat(fwhm=(10, 9))
126-
wdist = (1/5)^2 + (2/4.5)^2
127-
expected = inv(1 + wdist)
128-
@test m[2, 1] m(1, 2) expected
129-
@test repr(m) == "Moffat{Float64}(pos=[0, 0], fwhm=(10, 9), amp=1.0, alpha=1)"
130-
131-
# different alpha
132-
m = Moffat(fwhm=10, alpha=2)
133-
expected = inv(1 + sum(abs2, SA[1, 2]) / 25)^2
134-
@test m[2, 1] m(1, 2) expected
135-
@test repr(m) == "Moffat{Float64}(pos=[0, 0], fwhm=10, amp=1.0, alpha=2)"
132+
test_model_interface(Moffat)
133+
134+
@testset "isotropic" begin
135+
m = Moffat(fwhm=10)
136+
expected = inv(1 + sum(abs2, SA[1, 2]) / 25)
137+
@test m[2, 1] m(1, 2) expected
138+
@test repr(m) == "Moffat{Float64}(pos=[0, 0], fwhm=10, amp=1.0, alpha=1)"
139+
end
140+
141+
@testset "diagonal" begin
142+
m = Moffat(fwhm=(10, 9))
143+
wdist = (1/5)^2 + (2/4.5)^2
144+
expected = inv(1 + wdist)
145+
@test m[2, 1] m(1, 2) expected
146+
@test repr(m) == "Moffat{Float64}(pos=[0, 0], fwhm=(10, 9), amp=1.0, alpha=1)"
147+
end
148+
149+
@testset "alpha" begin
150+
m = Moffat(fwhm=10, alpha=2)
151+
expected = inv(1 + sum(abs2, SA[1, 2]) / 25)^2
152+
@test m[2, 1] m(1, 2) expected
153+
@test repr(m) == "Moffat{Float64}(pos=[0, 0], fwhm=10, amp=1.0, alpha=2)"
154+
end
136155
end
137156

138157
include("plotting.jl")

0 commit comments

Comments
 (0)