100 lines
3.0 KiB
Julia
100 lines
3.0 KiB
Julia
# This file is a part of Julia. License is MIT: https://julialang.org/license
|
|
|
|
@test ifelse(true, 1, 2) == 1
|
|
@test ifelse(false, 1, 2) == 2
|
|
|
|
s = Set()
|
|
ifelse(true, push!(s, 1), push!(s, 2))
|
|
@test s == Set([1, 2])
|
|
|
|
s = Set()
|
|
true ? push!(s, 1) : push!(s, 2)
|
|
false ? push!(s, 3) : push!(s, 4)
|
|
@test s == Set([1, 4])
|
|
|
|
B = [true true false]
|
|
@test ifelse.(B, 1, 2) == [1 1 2]
|
|
@test ifelse.(B, 1, [2 3 4]) == [1 1 4]
|
|
@test ifelse.(B, [2 3 4], 1) == [2 3 1]
|
|
@test ifelse.(B, [2 3 4], [5 6 7]) == [2 3 7]
|
|
|
|
@test reverse(Pair(1,2)) == Pair(2,1)
|
|
@test reverse(Pair("13","24")) == Pair("24","13")
|
|
@test typeof(reverse(Pair{String,Int64}("a",1))) == Pair{Int64,String}
|
|
@test convert(Pair{Float64,Float64}, 17 => 4711) === (17.0 => 4711.0)
|
|
@test convert(Pair{Int,Float64}, 17 => 4711) === (17 => 4711.0)
|
|
@test convert(Pair{Float64,Int}, 17 => 4711) === (17.0 => 4711)
|
|
@test convert(Pair{Any,Any}, 17 => 4711) === Pair{Any,Any}(17, 4711)
|
|
@test convert(Pair{Number,Number}, 17 => 4711) === Pair{Number,Number}(17, 4711)
|
|
@test promote(1=>1, 2=>2.0) === (1=>1.0, 2=>2.0)
|
|
@test promote(1=>1, 2.0=>2) === (1.0=>1, 2.0=>2)
|
|
@test promote(1=>1.0, 2.0=>2) === (1.0=>1.0, 2.0=>2.0)
|
|
@test promote(1=>1, :b=>2.0) === (Pair{Any,Float64}(1,1.0),Pair{Any,Float64}(:b,2.0))
|
|
@test isa([:a=>1, :b=>2], Vector{Pair{Symbol,Int}})
|
|
@test isa([:a=>1, :b=>2.0], Vector{Pair{Symbol,Float64}})
|
|
@test isa(["a"=>1, :b=>2.0], Vector{Pair{Any,Float64}})
|
|
|
|
# Infix `isa`
|
|
@test 1 isa Integer
|
|
|
|
p = 1=>:foo
|
|
@test first(p) == 1
|
|
@test last(p) == :foo
|
|
@test first(reverse(p)) == :foo
|
|
@test last(reverse(p)) == 1
|
|
@test endof(p) == 2
|
|
@test p[endof(p)] == p[end] == p[2] == :foo
|
|
|
|
@test (|)(2) == 2
|
|
@test xor(2) == 2
|
|
@test (⊻)(2) == 2
|
|
|
|
# @test ctranspose('a') == 'a' # (c)transpose of Chars no longer supported
|
|
|
|
@test_throws ArgumentError Base.scalarmin(['a','b'],['c','d'])
|
|
@test_throws ArgumentError Base.scalarmin('a',['c','d'])
|
|
@test_throws ArgumentError Base.scalarmin(['a','b'],'c')
|
|
@test_throws ArgumentError Base.scalarmax(['a','b'],['c','d'])
|
|
@test_throws ArgumentError Base.scalarmax('a',['c','d'])
|
|
@test_throws ArgumentError Base.scalarmax(['a','b'],'c')
|
|
|
|
@test lexless('a','b')
|
|
|
|
@test 1 .!= 2
|
|
@test 1 .== 1
|
|
@test 1 .< 2
|
|
@test 1 .<= 2
|
|
|
|
# issue #13144: max() with 4 or more array arguments
|
|
let xs = [[i:i+4;] for i in 1:10]
|
|
for n in 2:10
|
|
@test max.(xs[1:n]...) == [n:n+4;]
|
|
end
|
|
end
|
|
|
|
# issue #19714
|
|
struct T19714 <: Integer end
|
|
Base.float(::T19714) = 19714.0
|
|
Base.:/(::T19714, ::T19714) = T19714()
|
|
Base.convert(::Type{T19714}, ::Int) = T19714()
|
|
Base.promote_rule(::Type{T19714}, ::Type{Int}) = T19714
|
|
@test T19714()/1 === 1/T19714() === T19714()
|
|
|
|
# pr #17155
|
|
@testset "function composition" begin
|
|
@test (uppercase∘hex)(239487) == "3A77F"
|
|
end
|
|
@testset "function negation" begin
|
|
str = randstring(20)
|
|
@test filter(!isupper, str) == replace(str, r"[A-Z]", "")
|
|
@test filter(!islower, str) == replace(str, r"[a-z]", "")
|
|
end
|
|
|
|
# issue #19891
|
|
@testset "chained comparison" begin
|
|
B = 0 .< [1 -1 5] .< 3
|
|
@test B == [true false false]
|
|
B = 3 .> [1 -1 5] .> 0
|
|
@test B == [true false false]
|
|
end
|