Skip to content

Commit 20f2cfc

Browse files
authored
Use Infinities in infinite tests (#312)
1 parent b6fa0b4 commit 20f2cfc

File tree

3 files changed

+11
-34
lines changed

3 files changed

+11
-34
lines changed

Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ FillArraysStatisticsExt = "Statistics"
2222
[compat]
2323
Aqua = "0.8"
2424
Base64 = "1.6"
25+
Infinities = "0.1"
2526
LinearAlgebra = "1.6"
2627
PDMats = "0.11.17"
2728
Random = "1.6"
@@ -35,6 +36,7 @@ julia = "1.6"
3536
[extras]
3637
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
3738
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
39+
Infinities = "e1ba4f0e-776d-440f-acd9-e1d2e9742647"
3840
PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150"
3941
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
4042
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
@@ -43,4 +45,4 @@ Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
4345
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
4446

4547
[targets]
46-
test = ["Aqua", "Test", "Base64", "PDMats", "ReverseDiff", "SparseArrays", "StaticArrays", "Statistics"]
48+
test = ["Aqua", "Test", "Base64", "Infinities", "PDMats", "ReverseDiff", "SparseArrays", "StaticArrays", "Statistics"]

test/infinitearrays.jl

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,13 @@
11
# Infinite Arrays implementation from
22
# https://github.com/JuliaLang/julia/blob/master/test/testhelpers/InfiniteArrays.jl
33
module InfiniteArrays
4-
export OneToInf, Infinity
5-
6-
"""
7-
Infinity()
8-
Represents infinite cardinality. Note that `Infinity <: Integer` to support
9-
being treated as an index.
10-
"""
11-
struct Infinity <: Integer end
12-
13-
Base.:(==)(::Infinity, ::Int) = false
14-
Base.:(==)(::Int, ::Infinity) = false
15-
Base.:(<)(::Int, ::Infinity) = true
16-
Base.:(<)(::Infinity, ::Int) = false
17-
Base.:()(::Int, ::Infinity) = true
18-
Base.:()(::Infinity, ::Int) = false
19-
Base.:()(::Infinity, ::Infinity) = true
20-
Base.:(-)(::Infinity, ::Int) = Infinity()
21-
Base.:(+)(::Infinity, ::Int) = Infinity()
22-
Base.:(:)(::Infinity, ::Infinity) = 1:0
23-
24-
Base.:(+)(::Integer, ::Infinity) = Infinity()
25-
Base.:(+)(::Infinity, ::Integer) = Infinity()
26-
Base.:(*)(::Integer, ::Infinity) = Infinity()
27-
Base.:(*)(::Infinity, ::Integer) = Infinity()
28-
29-
Base.isinf(::Infinity) = true
4+
using Infinities
5+
export OneToInf
306

317
abstract type AbstractInfUnitRange{T<:Real} <: AbstractUnitRange{T} end
32-
Base.length(r::AbstractInfUnitRange) = Infinity()
33-
Base.size(r::AbstractInfUnitRange) = (Infinity(),)
34-
Base.unitrange(r::AbstractInfUnitRange) = InfUnitRange(r)
35-
Base.last(r::AbstractInfUnitRange) = Infinity()
8+
Base.length(r::AbstractInfUnitRange) = ℵ₀
9+
Base.size(r::AbstractInfUnitRange) = (ℵ₀,)
10+
Base.last(r::AbstractInfUnitRange) = ℵ₀
3611
Base.axes(r::AbstractInfUnitRange) = (OneToInf(),)
3712

3813
Base.IteratorSize(::Type{<:AbstractInfUnitRange}) = Base.IsInfinite()
@@ -49,7 +24,7 @@ module InfiniteArrays
4924

5025
Base.axes(r::OneToInf) = (r,)
5126
Base.first(r::OneToInf{T}) where {T} = oneunit(T)
52-
Base.oneto(::Infinity) = OneToInf()
27+
Base.oneto(::InfiniteCardinal{0}) = OneToInf()
5328

5429
struct InfUnitRange{T<:Real} <: AbstractInfUnitRange{T}
5530
start::T
@@ -58,8 +33,7 @@ module InfiniteArrays
5833
InfUnitRange(a::InfUnitRange) = a
5934
InfUnitRange{T}(a::AbstractInfUnitRange) where T<:Real = InfUnitRange{T}(first(a))
6035
InfUnitRange(a::AbstractInfUnitRange{T}) where T<:Real = InfUnitRange{T}(first(a))
61-
unitrange(a::AbstractInfUnitRange) = InfUnitRange(a)
62-
Base.:(:)(start::T, stop::Infinity) where {T<:Integer} = InfUnitRange{T}(start)
36+
Base.:(:)(start::T, stop::InfiniteCardinal{0}) where {T<:Integer} = InfUnitRange{T}(start)
6337
function getindex(v::InfUnitRange{T}, i::Integer) where T
6438
@boundscheck i > 0 || Base.throw_boundserror(v, i)
6539
convert(T, first(v) + i - 1)

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ using Aqua
1010
end
1111

1212
include("infinitearrays.jl")
13+
import .InfiniteArrays
1314

1415
# we may use this instead of rand(n) to generate deterministic arrays
1516
oneton(T::Type, sz...) = reshape(T.(1:prod(sz)), sz)

0 commit comments

Comments
 (0)