From 31526123b971e0d24da4adfcd4109648d225abb8 Mon Sep 17 00:00:00 2001 From: Iblis Lin Date: Thu, 21 Jan 2021 19:49:40 +0800 Subject: [PATCH] Fix parameter `colnames` of `merge` (#478) * combine: fix merge colnames param fix #475 * typo --- src/combine.jl | 5 +++-- test/combine.jl | 19 +++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/combine.jl b/src/combine.jl index c03baead..e055f677 100644 --- a/src/combine.jl +++ b/src/combine.jl @@ -75,8 +75,9 @@ function merge(ta1::TimeArray{T,N,D}, ta2::TimeArray{T,M,D}; end -merge(x::TimeArray{T}, y::TimeArray{T}, z::TimeArray{T}, a::TimeArray{T}...; kw...) where {T} = - merge(merge(x, y; kw...), z, a...; kw...) +merge(x::TimeArray{T}, y::TimeArray{T}, z::TimeArray{T}, a::TimeArray{T}...; + colnames::Vector = Symbol[], kw...) where {T} = + rename!(merge(merge(x, y; kw...), z, a...; kw...), colnames) # hcat ########################## diff --git a/test/combine.jl b/test/combine.jl index 3e6e9602..c134c1af 100644 --- a/test/combine.jl +++ b/test/combine.jl @@ -57,17 +57,20 @@ end ba = tail(BA) @testset "takes colnames kwarg correctly" begin - @test colnames(merge(cl, ohlc[:High, :Low], colnames=[:a, :b, :c])) == [:a, :b, :c] - @test colnames(merge(cl, op, colnames=[:a, :b])) == [:a, :b] - @test_throws ArgumentError merge(cl, op, colnames=[:a]) - @test_throws ArgumentError merge(cl, op, colnames=[:a, :b, :c]) + @test colnames(merge(cl, ohlc[:High, :Low], colnames = [:a, :b, :c])) == [:a, :b, :c] + @test colnames(merge(cl, op, colnames = [:a, :b])) == [:a, :b] + @test_throws ArgumentError merge(cl, op, colnames = [:a]) + @test_throws ArgumentError merge(cl, op, colnames = [:a, :b, :c]) for mode ∈ [:inner, :left, :right, :outer] - @test colnames(merge(cl, ohlc[:High, :Low], method = mode, colnames=[:a, :b, :c])) == [:a, :b, :c] - @test colnames(merge(cl, op, method = mode, colnames=[:a, :b])) == [:a, :b] - @test_throws ArgumentError merge(cl, op, method = mode, colnames=[:a]) - @test_throws ArgumentError merge(cl, op, method = mode, colnames=[:a, :b, :c]) + @test colnames(merge(cl, ohlc[:High, :Low], method = mode, colnames = [:a, :b, :c])) == [:a, :b, :c] + @test colnames(merge(cl, op, method = mode, colnames = [:a, :b])) == [:a, :b] + @test_throws ArgumentError merge(cl, op, method = mode, colnames = [:a]) + @test_throws ArgumentError merge(cl, op, method = mode, colnames = [:a, :b, :c]) end + + # issue #475 + @test colnames(merge(cl, cl, cl, colnames = [:a, :b, :c])) == [:a, :b, :c] end @testset "returns correct alignment with Dates and values" begin