Skip to content

Commit 532fa13

Browse files
devmotionoschulz
authored andcommitted
Add InverseFunctions.test_inverse
1 parent 3e8a3eb commit 532fa13

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ uuid = "3587e190-3f89-42d0-90ee-14403ec27112"
33
version = "0.1.0"
44

55
[deps]
6+
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
67

78
[compat]
89
julia = "1"
910

1011
[extras]
1112
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
12-
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1313

1414
[targets]
15-
test = ["Documenter", "Test"]
15+
test = ["Documenter"]

src/InverseFunctions.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ Lightweight package that defines an interface to invert functions.
66
"""
77
module InverseFunctions
88

9+
using Test
10+
911
include("inverse.jl")
12+
include("test.jl")
1013

1114
end # module

src/inverse.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ true
4545
Implementations of `inverse(::typeof(f))` have to satisfy
4646
* `inverse(f)(f(x)) ≈ x` for all `x` in the domain of `f`, and
4747
* `inverse(inverse(f)) === f`.
48+
49+
You can check your implementation with [`InverseFunctions.test_inverse`](@ref).
4850
"""
4951
inverse(f)
5052
export inverse

src/test.jl

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"""
2+
InverseFunctions.test_inverse(f, x; kwargs...)
3+
4+
Check if [`inverse(f)`](@ref) is implemented correctly.
5+
6+
The function checks if
7+
- `inverse(f)(f(x)) ≈ x` and
8+
- `inverse(inverse(f)) === f`.
9+
10+
All keyword arguments are passed to `isapprox`.
11+
"""
12+
function test_inverse(f, x; kwargs...)
13+
@testset "test_inverse: $f with input $x" begin
14+
inverse_f = inverse(f)
15+
@test isapprox(inverse_f(f(x)), x; kwargs...)
16+
@test inverse(inverse_f) === f
17+
end
18+
return nothing
19+
end

0 commit comments

Comments
 (0)