From 8fbcc3a5fb4e9071719bbc2296abec5e8c20080f Mon Sep 17 00:00:00 2001 From: icweaver Date: Tue, 1 Apr 2025 21:56:09 -0700 Subject: [PATCH] err msgs + tests --- src/ccd2rgb.jl | 6 +++++- test/runtests.jl | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ccd2rgb.jl b/src/ccd2rgb.jl index 773ea3a5..135d485e 100644 --- a/src/ccd2rgb.jl +++ b/src/ccd2rgb.jl @@ -56,9 +56,12 @@ function composecolors( if length(images) == 3 && isnothing(cmap) cmap = ["red", "green", "blue"] end - if length(cmap) < length(images) + if _cmap_len(cmap) < length(images) error("Please provide a color channel for each image") end + if _cmap_len(cmap) > length(images) + error("Please provide an image for each color channel") + end # Use imview to render each channel to RGBA images_rendered = broadcast(images, cmap, clims, stretch, contrast, bias) do image, cmap, clims, stretch, contrast, bias @@ -77,4 +80,5 @@ function composecolors( end return combined end +_cmap_len(cmap) = isnothing(cmap) ? 0 : length(cmap) export composechannels diff --git a/test/runtests.jl b/test/runtests.jl index 8d4a40ef..1c8a2ea2 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -378,3 +378,16 @@ end # include("plots.jl") # include("ccd2rgb.jl") +# TODO: Put this into ccd2rgb.jl later? +@testset "ccd2rgb" begin + img1, img2, img3 = eachslice(rand(3, 4, 3); dims=3) + img4 = rand(3, 5) + @test_throws ErrorException("At least one image is required.") composecolors([], ["red", "blue", "green"]) + @test_throws ErrorException("Images must have the same dimensions to compose them.") composecolors([img1, img2, img4], ["red", "blue", "green"]) + @test_throws ErrorException("Please provide a color channel for each image") composecolors([img1, img2, img3], ["red", "blue"]) + @test_throws ErrorException("Please provide a color channel for each image") composecolors([img1, img2], ["red"]) + @test_throws ErrorException("Please provide a color channel for each image") composecolors([img1, img2]) + @test_throws ErrorException("Please provide an image for each color channel") composecolors([img1, img2, img3], ["red", "blue", "green", "maroon"]) + @test_throws ErrorException("Please provide an image for each color channel") composecolors([img1, img2], ["red", "blue", "green"]) + @test_throws ErrorException("Please provide an image for each color channel") composecolors([img1], ["red", "blue"]) +end