Skip to content

Commit 69df03c

Browse files
committed
add test for dom read/write
1 parent 79f8f36 commit 69df03c

File tree

2 files changed

+76
-42
lines changed

2 files changed

+76
-42
lines changed

src/extendablegrid.jl

Lines changed: 68 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -614,55 +614,83 @@ Keyword args:
614614
- :low : Point numbers etc are the same
615615
- :full : all arrays are equal (besides the coordinate array, the arrays only have to be equal up to permutations)
616616
"""
617-
function seemingly_equal(grid1::ExtendableGrid, grid2::ExtendableGrid; sort = false, confidence = :full)
618-
if !sort
619-
for key in keys(grid1)
620-
if !haskey(grid2, key)
621-
return false
622-
end
623-
if !seemingly_equal(grid1[key], grid2[key])
624-
return false
625-
end
626-
end
627-
return true
617+
function seemingly_equal(grid1::ExtendableGrid, grid2::ExtendableGrid; sort = false, confidence = :full, skipkeys = [], trimgrids = true, keep = [])
618+
if trimgrids
619+
grid1 = trim(grid1; keep)
620+
grid2 = trim(grid2; keep)
628621
end
629-
630622
if confidence == :full
631-
for key in keys(grid1)
632-
if !haskey(grid2, key)
633-
return false
634-
end
635-
if !isa(grid1[key], AbstractArray)
636-
!seemingly_equal(grid1[key], grid2[key]) && return false
637-
continue
623+
if !sort
624+
for key in keys(grid1)
625+
if key in skipkeys
626+
continue
627+
end
628+
if !haskey(grid2, key)
629+
@warn "missing key $(key) in grid2"
630+
return false
631+
end
632+
if !seemingly_equal(grid1[key], grid2[key])
633+
@warn "grid1[$(key)] and grid2[$(key)] differ"
634+
return false
635+
end
638636
end
639-
640-
s1 = size(grid1[key])
641-
s2 = size(grid2[key])
642-
643-
if length(s1) == 0
644-
if length(s1) == 1
645-
if eltype(grid1[key]) <: Number
646-
ind1 = sortperm(grid1[key])
647-
ind2 = sortperm(grid2[key])
648-
sa1 = grid1[key][ind1]
649-
sa2 = grid2[key][ind2]
650-
!seemingly_equal(sa1, sa2) && return false
651-
else
652-
!seemingly_equal(grid1[key], grid2[key]) && return false
637+
return true
638+
else
639+
for key in keys(grid1)
640+
if key in skipkeys
641+
continue
642+
end
643+
if !haskey(grid2, key)
644+
@warn "missing key $(key) in grid2"
645+
return false
646+
end
647+
if !isa(grid1[key], AbstractArray)
648+
if !seemingly_equal(grid1[key], grid2[key])
649+
@warn "grid1[$(key)] and grid2[$(key)] differ"
650+
return false
653651
end
654-
else
655-
if eltype(grid1[key]) <: Number && key != Coordinates
656-
sa1 = multidimsort(sort(grid1[key]; dims = 1))
657-
sa2 = multidimsort(sort(grid2[key]; dims = 1))
658-
!seemingly_equal(sa1, sa2) && return false
652+
continue
653+
end
654+
655+
s1 = size(grid1[key])
656+
s2 = size(grid2[key])
657+
658+
if length(s1) == 0
659+
if length(s1) == 1
660+
if eltype(grid1[key]) <: Number
661+
ind1 = sortperm(grid1[key])
662+
ind2 = sortperm(grid2[key])
663+
sa1 = grid1[key][ind1]
664+
sa2 = grid2[key][ind2]
665+
if !seemingly_equal(sa1, sa2)
666+
@warn "grid1[$(key)] and grid2[$(key)] differ"
667+
return false
668+
end
669+
else
670+
if !seemingly_equal(grid1[key], grid2[key])
671+
@warn "grid1[$(key)] and grid2[$(key)] differ"
672+
return false
673+
end
674+
end
659675
else
660-
!seemingly_equal(grid1[key], grid2[key]) && return false
676+
if eltype(grid1[key]) <: Number && key != Coordinates
677+
sa1 = multidimsort(sort(grid1[key]; dims = 1))
678+
sa2 = multidimsort(sort(grid2[key]; dims = 1))
679+
if !seemingly_equal(sa1, sa2)
680+
@warn "grid1[$(key)] and grid2[$(key)] differ"
681+
return false
682+
end
683+
else
684+
if !seemingly_equal(grid1[key], grid2[key])
685+
@warn "grid1[$(key)] and grid2[$(key)] differ"
686+
return false
687+
end
688+
end
661689
end
662690
end
663691
end
692+
return true
664693
end
665-
return true
666694
elseif confidence == :low
667695
grid1_data = (num_nodes(grid1), num_cells(grid1), num_bfaces(grid1))
668696
grid2_data = (num_nodes(grid2), num_cells(grid2), num_bfaces(grid2))

test/runtests.jl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,12 +222,12 @@ end
222222
@test map(vfxyz, gxyz) == map(vfv, gxyz)
223223
end
224224

225-
function testrw(grid, format; confidence = :full, kwargs...)
225+
function testrw(grid, format; compare_kwargs=(confidence=:full,), kwargs...)
226226
#@warn format
227227
ftmp = tempname() * "." * format
228228
write(ftmp, grid; kwargs...)
229229
grid1 = simplexgrid(ftmp)
230-
return seemingly_equal(grid1, grid; confidence = confidence)
230+
return seemingly_equal(grid1, grid; compare_kwargs...)
231231
end
232232

233233
@testset "Read/Write sg" begin
@@ -239,6 +239,12 @@ end
239239
end
240240
end
241241

242+
@testset "Read/Write dom" begin
243+
X = collect(0:0.05:1)
244+
@test testrw(simplexgrid(X, X), "dom"; compare_kwargs=(sort=true, skipkeys=[XCoordinates, YCoordinates, BRegionDomCode]))
245+
end
246+
247+
242248
@testset "rectnd" begin
243249
function rect1d()
244250
X = collect(0:0.1:1)

0 commit comments

Comments
 (0)