From 2c7505659331e2b6e833e654e95939b5716ca473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlio=20Hoffimann?= Date: Wed, 10 Feb 2021 09:29:13 -0300 Subject: [PATCH] Add @test_reference_plot --- Project.toml | 5 ++++- src/ReferenceTests.jl | 3 +++ src/test_reference_plot.jl | 23 +++++++++++++++++++++++ test/references/heatmap.png | Bin 0 -> 12407 bytes test/references/scatter.png | Bin 0 -> 10427 bytes test/runtests.jl | 17 ++++++++++++++--- 6 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 src/test_reference_plot.jl create mode 100644 test/references/heatmap.png create mode 100644 test/references/scatter.png diff --git a/Project.toml b/Project.toml index 8ff8e07..0c97663 100644 --- a/Project.toml +++ b/Project.toml @@ -9,6 +9,7 @@ Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" ImageCore = "a09fc81d-aa75-5fe9-8630-4744c3626534" ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" +PNGFiles = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SHA = "ea8e919c-243c-51af-8825-aaa63cd721ce" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" @@ -23,6 +24,7 @@ ImageCore = "0.8.1" ImageInTerminal = "0.3, 0.4" ImageMagick = "0.7, 1" ImageTransformations = "0.8" +PNGFiles = "0.3" TestImages = "0.6, 1" julia = "1" @@ -31,7 +33,8 @@ CSVFiles = "5d742f6a-9f54-50ce-8119-2520741973ca" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" ImageMagick = "6218d12a-5da1-5696-b52f-db25d2ecc6d1" ImageTransformations = "02fcd773-0e25-5acc-982a-7f6622650795" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" TestImages = "5e47fb64-e119-507b-a336-dd2b206d9990" [targets] -test = ["CSVFiles", "DataFrames", "ImageMagick", "ImageTransformations", "TestImages"] +test = ["CSVFiles", "DataFrames", "ImageMagick", "ImageTransformations", "Plots", "TestImages"] diff --git a/src/ReferenceTests.jl b/src/ReferenceTests.jl index 9fda4d6..b681044 100644 --- a/src/ReferenceTests.jl +++ b/src/ReferenceTests.jl @@ -4,6 +4,7 @@ using Test using ImageCore using Distances using FileIO +using PNGFiles using ImageInTerminal using SHA using DeepDiffs @@ -13,10 +14,12 @@ export @withcolor, @io2str, @test_reference, + @test_reference_plot, psnr_equality include("utils.jl") include("test_reference.jl") +include("test_reference_plot.jl") include("fileio.jl") include("equality_metrics.jl") include("render.jl") diff --git a/src/test_reference_plot.jl b/src/test_reference_plot.jl new file mode 100644 index 0000000..b7ef817 --- /dev/null +++ b/src/test_reference_plot.jl @@ -0,0 +1,23 @@ +""" + @test_reference_plot filename plot [by] [kw...] + +Tests that the `plot` with reference `filename` using +equality test strategy `by`. The macro simply converts +the plot object to a PNG image and forwards it to the +[`@test_reference`](@ref) macro. +""" +macro test_reference_plot(reference, actual, kws...) + ref = esc(reference) + plt = esc(actual) + opt = esc(kws) + :(@test_reference $ref asimage($plt)) +end + +# helper function to convert a Plots.jl plot +# into an image for visual comparison +function asimage(plt) + io = IOBuffer() + show(io, "image/png", plt) + seekstart(io) + PNGFiles.load(io) +end diff --git a/test/references/heatmap.png b/test/references/heatmap.png new file mode 100644 index 0000000000000000000000000000000000000000..4264b442960ab2c0ab030fbc4aeae0ae9e41b668 GIT binary patch literal 12407 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 literal 0 HcmV?d00001 diff --git a/test/references/scatter.png b/test/references/scatter.png new file mode 100644 index 0000000000000000000000000000000000000000..173ac66761cbb17e2477dab4088e94a86bf0f9a9 GIT binary patch literal 10427 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 literal 0 HcmV?d00001 diff --git a/test/runtests.jl b/test/runtests.jl index f53377f..b209c69 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,6 +1,12 @@ -using Test -using ImageInTerminal, TestImages, ImageCore, ImageTransformations -using Random +using Test, Random +using TestImages +using ImageCore +using ImageInTerminal +using ImageTransformations +using Plots + +# workaround GR warnings +ENV["GKSwstype"] = "100" if isinteractive() @info ("In interactive use, one should respond \"n\" when the program" @@ -150,4 +156,9 @@ end rm(newfilename, force=true) end +@testset "Plots as PNG images" begin + @test_reference_plot "references/heatmap.png" heatmap([1 0; 0 1]) + @test_reference_plot "references/scatter.png" scatter([(0,0),(1,0),(0,1),(1,1)],ms=8) +end + end # top level testset