Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 70 additions & 56 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -45,79 +45,93 @@ h = Graphs.wheel_graph(10)
test_layout(g::AbstractGraph; kws...) = spring_layout(g, 2017, kws...)

# plot and save function for visual regression tests
function plot_and_save(fname, g; gplot_kwargs...)
draw(PNG(fname, 8inch, 8inch), gplot(g; layout=test_layout, gplot_kwargs...))
# TODO visual regression tests are currently broken for higher Julia versions
@static if VERSION < v"1.7"
function plot_and_save(fname, g; gplot_kwargs...)
draw(PNG(fname, 8inch, 8inch), gplot(g; layout=test_layout, gplot_kwargs...))
end

function save_comparison(result::VisualTestResult)
grid = hcat(result.refImage, result.testImage)
path = joinpath(datadir, string(basename(result.refFilename)[1:end-length(".png")], "-comparison.png"))
ImageMagick.save(path, grid)
return result
end
end

function save_comparison(result::VisualTestResult)
grid = hcat(result.refImage, result.testImage)
path = joinpath(datadir, string(basename(result.refFilename)[1:end-length(".png")], "-comparison.png"))
ImageMagick.save(path, grid)
return result
end

@testset "Karate Net" begin
# auxiliary variables
nodelabel = collect(1:nv(g))
nodesize = outdegree(g) .* 1.0
@static if VERSION < v"1.7"
@testset "Karate Net" begin
# auxiliary variables
nodelabel = collect(1:nv(g))
nodesize = outdegree(g) .* 1.0

# test nodesize
plot_and_save1(fname) = plot_and_save(fname, g, nodesize=nodesize.^0.3, nodelabel=nodelabel, nodelabelsize=nodesize.^0.3)
refimg1 = joinpath(datadir, "karate_different_nodesize.png")
@test test_images(VisualTest(plot_and_save1, refimg1), popup=!istravis) |> save_comparison |> success

# test directed graph
plot_and_save2(fname) = plot_and_save(fname, g, arrowlengthfrac=0.05, nodelabel=nodelabel, font_family="Sans")
refimg2 = joinpath(datadir, "karate_straight_directed.png")
@test test_images(VisualTest(plot_and_save2, refimg2), popup=!istravis) |> save_comparison |> success

# test node membership
membership = [1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,2,1,1,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2]
nodecolor = [colorant"lightseagreen", colorant"orange"]
nodefillc = nodecolor[membership]
plot_and_save3(fname) = plot_and_save(fname, g, nodelabel=nodelabel, nodefillc=nodefillc)
refimg3 = joinpath(datadir, "karate_groups.png")
@test test_images(VisualTest(plot_and_save3, refimg3), popup=!istravis) |> save_comparison |> success
plot_and_save1(fname) = plot_and_save(fname, g, nodesize=nodesize.^0.3, nodelabel=nodelabel, nodelabelsize=nodesize.^0.3)
refimg1 = joinpath(datadir, "karate_different_nodesize.png")
@test test_images(VisualTest(plot_and_save1, refimg1), popup=!istravis) |> save_comparison |> success


# test directed graph
plot_and_save2(fname) = plot_and_save(fname, g, arrowlengthfrac=0.05, nodelabel=nodelabel, font_family="Sans")
refimg2 = joinpath(datadir, "karate_straight_directed.png")
@test test_images(VisualTest(plot_and_save2, refimg2), popup=!istravis) |> save_comparison |> success

# test node membership
membership = [1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,2,1,1,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2]
nodecolor = [colorant"lightseagreen", colorant"orange"]
nodefillc = nodecolor[membership]

plot_and_save3(fname) = plot_and_save(fname, g, nodelabel=nodelabel, nodefillc=nodefillc)
refimg3 = joinpath(datadir, "karate_groups.png")
@test test_images(VisualTest(plot_and_save3, refimg3), popup=!istravis) |> save_comparison |> success

# test background color
plot_and_save4(fname) = plot_and_save(fname, g, background_color=colorant"lightyellow")
refimg4 = joinpath(datadir, "karate_background_color.png")
@test test_images(VisualTest(plot_and_save4, refimg4), popup=!istravis) |> save_comparison |> success
plot_and_save4(fname) = plot_and_save(fname, g, background_color=colorant"lightyellow")
refimg4 = joinpath(datadir, "karate_background_color.png")
@test test_images(VisualTest(plot_and_save4, refimg4), popup=!istravis) |> save_comparison |> success
end
end

@testset "WheelGraph" begin
# default options
plot_and_save1(fname) = plot_and_save(fname, h)
refimg1 = joinpath(datadir, "wheel10.png")
@test test_images(VisualTest(plot_and_save1, refimg1), popup=!istravis) |> save_comparison |> success
@static if VERSION < v"1.7"
@testset "WheelGraph" begin
# default options
plot_and_save1(fname) = plot_and_save(fname, h)
refimg1 = joinpath(datadir, "wheel10.png")
@test test_images(VisualTest(plot_and_save1, refimg1), popup=!istravis) |> save_comparison |> success
end
end

@testset "Curves" begin
@static if VERSION < v"1.7"
@testset "Curves" begin

g2 = DiGraph(2)
add_edge!(g2, 1,2)
add_edge!(g2, 2,1)
g2 = DiGraph(2)
add_edge!(g2, 1,2)
add_edge!(g2, 2,1)

plot_and_save1(fname) = plot_and_save(fname, g2, linetype="curve", arrowlengthfrac=0.2, pad=5mm)
refimg1 = joinpath(datadir, "curve.png")
@test test_images(VisualTest(plot_and_save1, refimg1), popup=!istravis) |> save_comparison |> success
plot_and_save1(fname) = plot_and_save(fname, g2, linetype="curve", arrowlengthfrac=0.2, pad=5mm)
refimg1 = joinpath(datadir, "curve.png")
@test test_images(VisualTest(plot_and_save1, refimg1), popup=!istravis) |> save_comparison |> success

g3 = DiGraph(2)
add_edge!(g3, 1,1)
add_edge!(g3, 1,2)
add_edge!(g3, 2,1)

plot_and_save2(fname) = plot_and_save(fname, g3, linetype="curve", arrowlengthfrac=0.2, leftpad=20mm, toppad=3mm, bottompad=3mm)
refimg2 = joinpath(datadir, "self_directed.png")
@test test_images(VisualTest(plot_and_save2, refimg2), popup=!istravis) |> save_comparison |> success
g3 = DiGraph(2)
add_edge!(g3, 1,1)
add_edge!(g3, 1,2)
add_edge!(g3, 2,1)

plot_and_save2(fname) = plot_and_save(fname, g3, linetype="curve", arrowlengthfrac=0.2, leftpad=20mm, toppad=3mm, bottompad=3mm)
refimg2 = joinpath(datadir, "self_directed.png")
@test test_images(VisualTest(plot_and_save2, refimg2), popup=!istravis) |> save_comparison |> success
end
end

@testset "Spring Layout" begin
g1 = path_digraph(3)
x1, y1 = spring_layout(g1, 0; C = 1)
@test all(isapprox.(x1, [1.0, -0.014799825222963192, -1.0]))
@test all(isapprox.(y1, [-1.0, 0.014799825222963303, 1.0]))
x1, y1 = spring_layout(g1, 0; C = 1)
# TODO spring_layout uses random values which have changed on higher Julia versions
# we should therefore use StableRNGs.jl for these layouts
@static if VERSION < v"1.7"
@test all(isapprox.(x1, [1.0, -0.014799825222963192, -1.0]))
@test all(isapprox.(y1, [-1.0, 0.014799825222963303, 1.0]))
end
end

@testset "Circular Layout" begin
Expand All @@ -143,4 +157,4 @@ end
x2,y2 = shell_layout(g,[[1,3,5],[2,4,6]])
@test all(isapprox.(x2, [1.0, 2.0, -0.4999999999999998, -0.9999999999999996, -0.5000000000000004, -1.0000000000000009]))
@test all(isapprox.(y2, [0.0, 0.0, 0.8660254037844387, 1.7320508075688774, -0.8660254037844385, -1.732050807568877]))
end
end
Loading