Skip to content

Commit

Permalink
add missing costructor for ReverseOrdering() and tidy sort tests
Browse files Browse the repository at this point in the history
  • Loading branch information
oxinabox committed Nov 1, 2019
1 parent 7793ca9 commit f32d114
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 28 deletions.
3 changes: 2 additions & 1 deletion base/ordering.jl
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,12 @@ end

ReverseOrdering(rev::ReverseOrdering) = rev.fwd
ReverseOrdering(fwd::Fwd) where {Fwd} = ReverseOrdering{Fwd}(fwd)
ReverseOrdering() = ReverseOrdering(ForwardOrdering())

const DirectOrdering = Union{ForwardOrdering,ReverseOrdering{ForwardOrdering}}

const Forward = ForwardOrdering()
const Reverse = ReverseOrdering(Forward)
const Reverse = ReverseOrdering()

struct By{T} <: Ordering
by::T
Expand Down
70 changes: 43 additions & 27 deletions test/sorting.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,55 @@

module SortingTests

using Base.Order: Forward
using Base.Order
using Random
using Test

@test sort([2,3,1]) == [1,2,3]
@test sort([2,3,1], rev=true) == [3,2,1]
@test sort(['z':-1:'a';]) == ['a':'z';]
@test sort(['a':'z';], rev=true) == ['z':-1:'a';]
@test sortperm([2,3,1]) == [3,1,2]
@test sortperm!([1,2,3], [2,3,1]) == [3,1,2]
let s = view([1,2,3,4], 1:3),
r = sortperm!(s, [2,3,1])
@test r == [3,1,2]
@test r === s
@testset "Order" begin
@test Forward == ForwardOrdering()
@test ReverseOrdering(Forward) == ReverseOrdering() == Reverse
end
@test_throws ArgumentError sortperm!(view([1,2,3,4], 1:4), [2,3,1])
@test !issorted([2,3,1])
@test issorted([1,2,3])
@test reverse([2,3,1]) == [1,3,2]
@test partialsort([3,6,30,1,9],3) == 6
@test partialsort([3,6,30,1,9],3:4) == [6,9]
@test partialsortperm([3,6,30,1,9], 3:4) == [2,5]
@test partialsortperm!(Vector(1:5), [3,6,30,1,9], 3:4) == [2,5]
let a=[1:10;]
for r in Any[2:4, 1:2, 10:10, 4:2, 2:1, 4:-1:2, 2:-1:1, 10:-1:10, 4:1:3, 1:2:8, 10:-3:1]
@test partialsort(a, r) == [r;]
@test partialsortperm(a, r) == [r;]
@test partialsort(a, r, rev=true) == (11 .- [r;])
@test partialsortperm(a, r, rev=true) == (11 .- [r;])

@testset "sort" begin
@test sort([2,3,1]) == [1,2,3] == sort([2,3,1]; order=Forward)
@test sort([2,3,1], rev=true) == [3,2,1] == sort([2,3,1], order=Reverse)
@test sort(['z':-1:'a';]) == ['a':'z';]
@test sort(['a':'z';], rev=true) == ['z':-1:'a';]
end

@testset "sortperm" begin
@test sortperm([2,3,1]) == [3,1,2]
@test sortperm!([1,2,3], [2,3,1]) == [3,1,2]
let s = view([1,2,3,4], 1:3),
r = sortperm!(s, [2,3,1])
@test r == [3,1,2]
@test r === s
end
@test_throws ArgumentError sortperm!(view([1,2,3,4], 1:4), [2,3,1])
end

@testset "misc sorting" begin
@test !issorted([2,3,1])
@test issorted([1,2,3])
@test reverse([2,3,1]) == [1,3,2]
@test sum(randperm(6)) == 21
end

@testset "partialsort" begin
@test partialsort([3,6,30,1,9],3) == 6
@test partialsort([3,6,30,1,9],3:4) == [6,9]
@test partialsortperm([3,6,30,1,9], 3:4) == [2,5]
@test partialsortperm!(Vector(1:5), [3,6,30,1,9], 3:4) == [2,5]
let a=[1:10;]
for r in Any[2:4, 1:2, 10:10, 4:2, 2:1, 4:-1:2, 2:-1:1, 10:-1:10, 4:1:3, 1:2:8, 10:-3:1]
@test partialsort(a, r) == [r;]
@test partialsortperm(a, r) == [r;]
@test partialsort(a, r, rev=true) == (11 .- [r;])
@test partialsortperm(a, r, rev=true) == (11 .- [r;])
end
end
@test_throws ArgumentError partialsortperm!([1,2], [2,3,1], 1:2)
end
@test_throws ArgumentError partialsortperm!([1,2], [2,3,1], 1:2)
@test sum(randperm(6)) == 21

@testset "searchsorted" begin
numTypes = [ Int8, Int16, Int32, Int64, Int128,
Expand Down

0 comments on commit f32d114

Please sign in to comment.