From 167b35d17c8906d3a532e2db9ca58efd26556cea Mon Sep 17 00:00:00 2001 From: yashrajgupta Date: Sun, 10 Mar 2019 14:31:48 +0530 Subject: [PATCH 1/4] Add overlap function --- src/IntervalArithmetic.jl | 5 +++++ src/overlap.jl | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/overlap.jl diff --git a/src/IntervalArithmetic.jl b/src/IntervalArithmetic.jl index e35faeea0..46fe48e7e 100644 --- a/src/IntervalArithmetic.jl +++ b/src/IntervalArithmetic.jl @@ -98,6 +98,9 @@ export export Region +## Overlap function +export + overlap,overlap_dec function __init__() @@ -124,6 +127,8 @@ include("plot_recipes/plot_recipes.jl") include("deprecated.jl") +include("overlap.jl") + """ Region{T} = Union{Interval{T}, IntervalBox{T}} """ diff --git a/src/overlap.jl b/src/overlap.jl new file mode 100644 index 000000000..199db7e64 --- /dev/null +++ b/src/overlap.jl @@ -0,0 +1,23 @@ +function overlap(a::Interval, b::Interval) + isempty(a) && isempty(b) && return "bothEmpty" + isempty(a) && !isempty(b) && return "firstEmpty" + !isempty(a) && isempty(b) && return "secondEmpty" + a.hi < b.lo && return "before" + a.lo < a.hi && a.hi == b.lo && b.lo < b.hi && return "meets" + a.lo < b.lo && b.lo < a.hi && a.hi < b.hi && return "overlaps" + a.lo == b.lo && a.hi < b.hi && return "starts" + b.lo < a.lo && a.hi < b.hi && return "containedBy" + b.lo < a.lo && a.hi == b.hi && return "finishes" + a.lo == b.lo && a.hi == b.hi && return "equals" + a.lo < b.lo && b.hi == a.hi && return "finishedBy" + a.lo < b.lo && b.hi < a.hi && return "contains" + b.lo == a.lo && b.hi < a.hi && return "startedBy" + b.lo < a.lo && a.lo < b.hi && b.hi < a.hi && return "overlappedBy" + b.lo < b.hi && b.hi == a.lo && a.lo < a.hi && return "metBy" + b.hi < a.lo && return "after" +end + +function overlap_dec(xx::DecoratedInterval , yy::DecoratedInterval) + ==(xx ,yy) && return "equals" + return overlap(interval_part(xx) , interval_part(yy)) +end From 1f9eb3fd2ba5a253a9bcf9bf100e87feff4abb9d Mon Sep 17 00:00:00 2001 From: yashrajgupta Date: Sun, 10 Mar 2019 17:06:35 +0530 Subject: [PATCH 2/4] Fixing a bug and Adding test cases --- src/overlap.jl | 1 - .../libieeep1788_tests_overlap.jl | 100 ++++++++++++++++++ 2 files changed, 100 insertions(+), 1 deletion(-) diff --git a/src/overlap.jl b/src/overlap.jl index 199db7e64..2c17b1575 100644 --- a/src/overlap.jl +++ b/src/overlap.jl @@ -18,6 +18,5 @@ function overlap(a::Interval, b::Interval) end function overlap_dec(xx::DecoratedInterval , yy::DecoratedInterval) - ==(xx ,yy) && return "equals" return overlap(interval_part(xx) , interval_part(yy)) end diff --git a/test/ITF1788_tests/libieeep1788_tests_overlap.jl b/test/ITF1788_tests/libieeep1788_tests_overlap.jl index e7f2faa4f..82beadd68 100644 --- a/test/ITF1788_tests/libieeep1788_tests_overlap.jl +++ b/test/ITF1788_tests/libieeep1788_tests_overlap.jl @@ -33,10 +33,110 @@ setrounding(Interval, :tight) @format full @testset "minimal_overlap_test" begin + @test overlap(∅, ∅) == "bothEmpty" + @test overlap(∅, Interval(1.0,2.0)) == "firstEmpty" + @test overlap(Interval(1.0,2.0),∅) == "secondEmpty" + @test overlap(Interval(-Inf,2.0), Interval(3.0,Inf)) == "before" + @test overlap(Interval(-Inf,2.0), Interval(3.0,4.0)) == "before" + @test overlap(Interval(2.0,2.0), Interval(3.0,4.0)) == "before" + @test overlap(Interval(1.0,2.0), Interval(3.0,4.0)) == "before" + @test overlap(Interval(1.0,2.0), Interval(3.0,3.0)) == "before" + @test overlap(Interval(2.0,2.0), Interval(3.0,3.0)) == "before" + @test overlap(Interval(2.0,2.0), Interval(3.0,Inf)) == "before" + + @test overlap(Interval(-Inf,2.0), Interval(2.0,3.0)) == "meets" + @test overlap(Interval(1.0,2.0), Interval(2.0,3.0)) == "meets" + @test overlap(Interval(1.0,2.0), Interval(2.0,Inf)) == "meets" + + @test overlap(Interval(1.0,2.0), Interval(1.5,2.5)) == "overlaps" + + @test overlap(Interval(1.0,2.0), Interval(1.0,Inf)) == "starts" + @test overlap(Interval(1.0,2.0), Interval(1.0,3.0)) == "starts" + @test overlap(Interval(1.0,1.0), Interval(1.0,3.0)) == "starts" + + @test overlap(Interval(1.0,2.0), Interval(-Inf,Inf)) == "containedBy" + @test overlap(Interval(1.0,2.0), Interval(-Inf,3.0)) == "containedBy" + @test overlap(Interval(1.0,2.0), Interval(0.0,3.0)) == "containedBy" + @test overlap(Interval(2.0,2.0), Interval(0.0,3.0)) == "containedBy" + @test overlap(Interval(2.0,2.0), Interval(0.0,Inf)) == "containedBy" + + @test overlap(Interval(1.0,2.0), Interval(-Inf,2.0)) == "finishes" + @test overlap(Interval(1.0,2.0), Interval(0.0,2.0)) == "finishes" + @test overlap(Interval(2.0,2.0), Interval(0.0,2.0)) == "finishes" + + @test overlap(Interval(1.0,2.0), Interval(1.0,2.0)) == "equals" + @test overlap(Interval(1.0,1.0), Interval(1.0,1.0)) == "equals" + @test overlap(Interval(-Inf,1.0), Interval(-Inf,1.0)) == "equals" + @test overlap(Interval(-Inf,Inf), Interval(-Inf,Inf)) == "equals" + + @test overlap(Interval(3.0,4.0), Interval(2.0,2.0)) == "after" + @test overlap(Interval(3.0,4.0), Interval(1.0,2.0)) == "after" + @test overlap(Interval(3.0,3.0), Interval(1.0,2.0)) == "after" + @test overlap(Interval(3.0,3.0), Interval(2.0,2.0)) == "after" + @test overlap(Interval(3.0,Inf), Interval(2.0,2.0)) == "after" + + @test overlap(Interval(2.0,3.0), Interval(1.0,2.0)) == "metBy" + @test overlap(Interval(2.0,3.0), Interval(-Inf,2.0)) == "metBy" + + @test overlap(Interval(1.5,2.5), Interval(1.0,2.0)) == "overlappedBy" + @test overlap(Interval(1.5,2.5), Interval(-Inf,2.0)) == "overlappedBy" + + @test overlap(Interval(1.0,Inf), Interval(1.0,2.0)) == "startedBy" + @test overlap(Interval(1.0,3.0), Interval(1.0,2.0)) == "startedBy" + @test overlap(Interval(1.0,3.0), Interval(1.0,1.0)) == "startedBy" + + @test overlap(Interval(-Inf,3.0), Interval(1.0,2.0)) == "contains" + @test overlap(Interval(-Inf,Inf), Interval(1.0,2.0)) == "contains" + @test overlap(Interval(0.0,3.0), Interval(1.0,2.0)) == "contains" + @test overlap(Interval(0.0,3.0), Interval(2.0,2.0)) == "contains" + + @test overlap(Interval(-Inf,2.0), Interval(1.0,2.0))== "finishedBy" + @test overlap(Interval(0.0,2.0), Interval(1.0,2.0)) == "finishedBy" + @test overlap(Interval(0.0,2.0), Interval(2.0,2.0)) == "finishedBy" end @testset "minimal_overlap_dec_test" begin + @test overlap_dec(DecoratedInterval(∅,trv),DecoratedInterval(∅,trv)) == "bothEmpty" + @test overlap_dec(DecoratedInterval(∅,trv),DecoratedInterval(Interval(1.0,2.0),com)) == "firstEmpty" + @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),def),DecoratedInterval(∅,trv)) == "secondEmpty" + + @test overlap_dec(DecoratedInterval(Interval(2.0,2.0),def),DecoratedInterval(Interval(3.0,4.0),def)) == "before" + @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),dac),DecoratedInterval(Interval(3.0,4.0),com)) == "before" + @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),com),DecoratedInterval(Interval(3.0,3.0),trv)) == "before" + @test overlap_dec(DecoratedInterval(Interval(2.0,2.0),trv),DecoratedInterval(Interval(3.0,3.0),def)) == "before" + + @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),def),DecoratedInterval(Interval(2.0,3.0),def)) == "meets" + + @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),dac),DecoratedInterval(Interval(1.5,2.5),def)) == "overlaps" + + @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),def),DecoratedInterval(Interval(1.0,3.0),com)) == "starts" + @test overlap_dec(DecoratedInterval(Interval(1.0,1.0),trv),DecoratedInterval(Interval(1.0,3.0),def)) == "starts" + + @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),def),DecoratedInterval(Interval(0.0,3.0),dac)) == "containedBy" + @test overlap_dec(DecoratedInterval(Interval(2.0,2.0),trv),DecoratedInterval(Interval(0.0,3.0),def)) == "containedBy" + + @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),trv),DecoratedInterval(Interval(0.0,2.0),com)) == "finishes" + @test overlap_dec(DecoratedInterval(Interval(2.0,2.0),def),DecoratedInterval(Interval(0.0,2.0),dac)) == "finishes" + + @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),def),DecoratedInterval(Interval(1.0,2.0),def)) == "equals" + @test overlap_dec(DecoratedInterval(Interval(1.0,1.0),dac),DecoratedInterval(Interval(1.0,1.0),dac)) == "equals" + + @test overlap_dec(DecoratedInterval(Interval(3.0,4.0),trv),DecoratedInterval(Interval(2.0,2.0),trv)) == "after" + @test overlap_dec(DecoratedInterval(Interval(3.0,4.0),def),DecoratedInterval(Interval(1.0,2.0),def)) == "after" + @test overlap_dec(DecoratedInterval(Interval(3.0,3.0),com),DecoratedInterval(Interval(1.0,2.0),dac)) == "after" + @test overlap_dec(DecoratedInterval(Interval(3.0,3.0),def),DecoratedInterval(Interval(2.0,2.0),trv)) == "after" + + @test overlap_dec(DecoratedInterval(Interval(2.0,3.0),def),DecoratedInterval(Interval(1.0,2.0),trv)) == "metBy" + @test overlap_dec(DecoratedInterval(Interval(1.5,2.5),com),DecoratedInterval(Interval(1.0,2.0),com)) == "overlappedBy" + + @test overlap_dec(DecoratedInterval(Interval(1.0,3.0),dac),DecoratedInterval(Interval(1.0,2.0),def)) == "startedBy" + @test overlap_dec(DecoratedInterval(Interval(1.0,3.0),com),DecoratedInterval(Interval(1.0,1.0),dac)) == "startedBy" + + @test overlap_dec(DecoratedInterval(Interval(0.0,3.0),com),DecoratedInterval(Interval(1.0,2.0),dac)) == "contains" + @test overlap_dec(DecoratedInterval(Interval(0.0,3.0),com),DecoratedInterval(Interval(2.0,2.0),def)) == "contains" + @test overlap_dec(DecoratedInterval(Interval(0.0,2.0),def),DecoratedInterval(Interval(1.0,2.0),trv)) == "finishedBy" + @test overlap_dec(DecoratedInterval(Interval(0.0,2.0),dac),DecoratedInterval(Interval(2.0,2.0),def)) == "finishedBy" end # FactCheck.exitstatus() From 5653ca3fe51cca2cfe69cbe27abe7eca9294e207 Mon Sep 17 00:00:00 2001 From: yashrajgupta Date: Tue, 20 Aug 2019 00:02:01 +0530 Subject: [PATCH 3/4] add ITF1788 tests --- src/IntervalArithmetic.jl | 2 +- src/overlap.jl | 2 +- .../libieeep1788_tests_overlap.jl | 188 ++++++++---------- 3 files changed, 85 insertions(+), 107 deletions(-) diff --git a/src/IntervalArithmetic.jl b/src/IntervalArithmetic.jl index 46fe48e7e..d64ee260d 100644 --- a/src/IntervalArithmetic.jl +++ b/src/IntervalArithmetic.jl @@ -100,7 +100,7 @@ export ## Overlap function export - overlap,overlap_dec + overlap function __init__() diff --git a/src/overlap.jl b/src/overlap.jl index 2c17b1575..e0d3a9b4e 100644 --- a/src/overlap.jl +++ b/src/overlap.jl @@ -17,6 +17,6 @@ function overlap(a::Interval, b::Interval) b.hi < a.lo && return "after" end -function overlap_dec(xx::DecoratedInterval , yy::DecoratedInterval) +function overlap(xx::DecoratedInterval, yy::DecoratedInterval) where T return overlap(interval_part(xx) , interval_part(yy)) end diff --git a/test/ITF1788_tests/libieeep1788_tests_overlap.jl b/test/ITF1788_tests/libieeep1788_tests_overlap.jl index 82beadd68..8ec8997bb 100644 --- a/test/ITF1788_tests/libieeep1788_tests_overlap.jl +++ b/test/ITF1788_tests/libieeep1788_tests_overlap.jl @@ -1,9 +1,11 @@ #= - Copyright 2013 - 2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) - Copyright 2015 Oliver Heimlich (oheim@posteo.de) - Original author: Marco Nehmeier (unit tests in libieeep1788) - Converted into portable ITL format by Oliver Heimlich with minor corrections. + Unit tests from libieeep1788 for the interval overlap operation + (Original author: Marco Nehmeier) + converted into portable ITL format by Oliver Heimlich. + + Copyright 2013-2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) + Copyright 2015-2017 Oliver Heimlich (oheim@posteo.de) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,6 +18,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + =# #Language imports @@ -34,109 +37,84 @@ setrounding(Interval, :tight) @testset "minimal_overlap_test" begin @test overlap(∅, ∅) == "bothEmpty" - @test overlap(∅, Interval(1.0,2.0)) == "firstEmpty" - @test overlap(Interval(1.0,2.0),∅) == "secondEmpty" - - @test overlap(Interval(-Inf,2.0), Interval(3.0,Inf)) == "before" - @test overlap(Interval(-Inf,2.0), Interval(3.0,4.0)) == "before" - @test overlap(Interval(2.0,2.0), Interval(3.0,4.0)) == "before" - @test overlap(Interval(1.0,2.0), Interval(3.0,4.0)) == "before" - @test overlap(Interval(1.0,2.0), Interval(3.0,3.0)) == "before" - @test overlap(Interval(2.0,2.0), Interval(3.0,3.0)) == "before" - @test overlap(Interval(2.0,2.0), Interval(3.0,Inf)) == "before" - - @test overlap(Interval(-Inf,2.0), Interval(2.0,3.0)) == "meets" - @test overlap(Interval(1.0,2.0), Interval(2.0,3.0)) == "meets" - @test overlap(Interval(1.0,2.0), Interval(2.0,Inf)) == "meets" - - @test overlap(Interval(1.0,2.0), Interval(1.5,2.5)) == "overlaps" - - @test overlap(Interval(1.0,2.0), Interval(1.0,Inf)) == "starts" - @test overlap(Interval(1.0,2.0), Interval(1.0,3.0)) == "starts" - @test overlap(Interval(1.0,1.0), Interval(1.0,3.0)) == "starts" - - @test overlap(Interval(1.0,2.0), Interval(-Inf,Inf)) == "containedBy" - @test overlap(Interval(1.0,2.0), Interval(-Inf,3.0)) == "containedBy" - @test overlap(Interval(1.0,2.0), Interval(0.0,3.0)) == "containedBy" - @test overlap(Interval(2.0,2.0), Interval(0.0,3.0)) == "containedBy" - @test overlap(Interval(2.0,2.0), Interval(0.0,Inf)) == "containedBy" - - @test overlap(Interval(1.0,2.0), Interval(-Inf,2.0)) == "finishes" - @test overlap(Interval(1.0,2.0), Interval(0.0,2.0)) == "finishes" - @test overlap(Interval(2.0,2.0), Interval(0.0,2.0)) == "finishes" - - @test overlap(Interval(1.0,2.0), Interval(1.0,2.0)) == "equals" - @test overlap(Interval(1.0,1.0), Interval(1.0,1.0)) == "equals" - @test overlap(Interval(-Inf,1.0), Interval(-Inf,1.0)) == "equals" - @test overlap(Interval(-Inf,Inf), Interval(-Inf,Inf)) == "equals" - - @test overlap(Interval(3.0,4.0), Interval(2.0,2.0)) == "after" - @test overlap(Interval(3.0,4.0), Interval(1.0,2.0)) == "after" - @test overlap(Interval(3.0,3.0), Interval(1.0,2.0)) == "after" - @test overlap(Interval(3.0,3.0), Interval(2.0,2.0)) == "after" - @test overlap(Interval(3.0,Inf), Interval(2.0,2.0)) == "after" - - @test overlap(Interval(2.0,3.0), Interval(1.0,2.0)) == "metBy" - @test overlap(Interval(2.0,3.0), Interval(-Inf,2.0)) == "metBy" - - @test overlap(Interval(1.5,2.5), Interval(1.0,2.0)) == "overlappedBy" - @test overlap(Interval(1.5,2.5), Interval(-Inf,2.0)) == "overlappedBy" - - @test overlap(Interval(1.0,Inf), Interval(1.0,2.0)) == "startedBy" - @test overlap(Interval(1.0,3.0), Interval(1.0,2.0)) == "startedBy" - @test overlap(Interval(1.0,3.0), Interval(1.0,1.0)) == "startedBy" - - @test overlap(Interval(-Inf,3.0), Interval(1.0,2.0)) == "contains" - @test overlap(Interval(-Inf,Inf), Interval(1.0,2.0)) == "contains" - @test overlap(Interval(0.0,3.0), Interval(1.0,2.0)) == "contains" - @test overlap(Interval(0.0,3.0), Interval(2.0,2.0)) == "contains" - - @test overlap(Interval(-Inf,2.0), Interval(1.0,2.0))== "finishedBy" - @test overlap(Interval(0.0,2.0), Interval(1.0,2.0)) == "finishedBy" - @test overlap(Interval(0.0,2.0), Interval(2.0,2.0)) == "finishedBy" + @test overlap(∅, Interval(1.0, 2.0)) == "firstEmpty" + @test overlap(Interval(1.0, 2.0), ∅) == "secondEmpty" + @test overlap(Interval(-Inf, 2.0), Interval(3.0, Inf)) == "before" + @test overlap(Interval(-Inf, 2.0), Interval(3.0, 4.0)) == "before" + @test overlap(Interval(2.0, 2.0), Interval(3.0, 4.0)) == "before" + @test overlap(Interval(1.0, 2.0), Interval(3.0, 4.0)) == "before" + @test overlap(Interval(1.0, 2.0), Interval(3.0, 3.0)) == "before" + @test overlap(Interval(2.0, 2.0), Interval(3.0, 3.0)) == "before" + @test overlap(Interval(2.0, 2.0), Interval(3.0, Inf)) == "before" + @test overlap(Interval(-Inf, 2.0), Interval(2.0, 3.0)) == "meets" + @test overlap(Interval(1.0, 2.0), Interval(2.0, 3.0)) == "meets" + @test overlap(Interval(1.0, 2.0), Interval(2.0, Inf)) == "meets" + @test overlap(Interval(1.0, 2.0), Interval(1.5, 2.5)) == "overlaps" + @test overlap(Interval(1.0, 2.0), Interval(1.0, Inf)) == "starts" + @test overlap(Interval(1.0, 2.0), Interval(1.0, 3.0)) == "starts" + @test overlap(Interval(1.0, 1.0), Interval(1.0, 3.0)) == "starts" + @test overlap(Interval(1.0, 2.0), entireinterval(Float64)) == "containedBy" + @test overlap(Interval(1.0, 2.0), Interval(-Inf, 3.0)) == "containedBy" + @test overlap(Interval(1.0, 2.0), Interval(0.0, 3.0)) == "containedBy" + @test overlap(Interval(2.0, 2.0), Interval(0.0, 3.0)) == "containedBy" + @test overlap(Interval(2.0, 2.0), Interval(0.0, Inf)) == "containedBy" + @test overlap(Interval(1.0, 2.0), Interval(-Inf, 2.0)) == "finishes" + @test overlap(Interval(1.0, 2.0), Interval(0.0, 2.0)) == "finishes" + @test overlap(Interval(2.0, 2.0), Interval(0.0, 2.0)) == "finishes" + @test overlap(Interval(1.0, 2.0), Interval(1.0, 2.0)) == "equals" + @test overlap(Interval(1.0, 1.0), Interval(1.0, 1.0)) == "equals" + @test overlap(Interval(-Inf, 1.0), Interval(-Inf, 1.0)) == "equals" + @test overlap(entireinterval(Float64), entireinterval(Float64)) == "equals" + @test overlap(Interval(3.0, 4.0), Interval(2.0, 2.0)) == "after" + @test overlap(Interval(3.0, 4.0), Interval(1.0, 2.0)) == "after" + @test overlap(Interval(3.0, 3.0), Interval(1.0, 2.0)) == "after" + @test overlap(Interval(3.0, 3.0), Interval(2.0, 2.0)) == "after" + @test overlap(Interval(3.0, Inf), Interval(2.0, 2.0)) == "after" + @test overlap(Interval(2.0, 3.0), Interval(1.0, 2.0)) == "metBy" + @test overlap(Interval(2.0, 3.0), Interval(-Inf, 2.0)) == "metBy" + @test overlap(Interval(1.5, 2.5), Interval(1.0, 2.0)) == "overlappedBy" + @test overlap(Interval(1.5, 2.5), Interval(-Inf, 2.0)) == "overlappedBy" + @test overlap(Interval(1.0, Inf), Interval(1.0, 2.0)) == "startedBy" + @test overlap(Interval(1.0, 3.0), Interval(1.0, 2.0)) == "startedBy" + @test overlap(Interval(1.0, 3.0), Interval(1.0, 1.0)) == "startedBy" + @test overlap(Interval(-Inf, 3.0), Interval(1.0, 2.0)) == "contains" + @test overlap(entireinterval(Float64), Interval(1.0, 2.0)) == "contains" + @test overlap(Interval(0.0, 3.0), Interval(1.0, 2.0)) == "contains" + @test overlap(Interval(0.0, 3.0), Interval(2.0, 2.0)) == "contains" + @test overlap(Interval(-Inf, 2.0), Interval(1.0, 2.0)) == "finishedBy" + @test overlap(Interval(0.0, 2.0), Interval(1.0, 2.0)) == "finishedBy" + @test overlap(Interval(0.0, 2.0), Interval(2.0, 2.0)) == "finishedBy" end @testset "minimal_overlap_dec_test" begin - @test overlap_dec(DecoratedInterval(∅,trv),DecoratedInterval(∅,trv)) == "bothEmpty" - @test overlap_dec(DecoratedInterval(∅,trv),DecoratedInterval(Interval(1.0,2.0),com)) == "firstEmpty" - @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),def),DecoratedInterval(∅,trv)) == "secondEmpty" - - @test overlap_dec(DecoratedInterval(Interval(2.0,2.0),def),DecoratedInterval(Interval(3.0,4.0),def)) == "before" - @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),dac),DecoratedInterval(Interval(3.0,4.0),com)) == "before" - @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),com),DecoratedInterval(Interval(3.0,3.0),trv)) == "before" - @test overlap_dec(DecoratedInterval(Interval(2.0,2.0),trv),DecoratedInterval(Interval(3.0,3.0),def)) == "before" - - @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),def),DecoratedInterval(Interval(2.0,3.0),def)) == "meets" - - @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),dac),DecoratedInterval(Interval(1.5,2.5),def)) == "overlaps" - - @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),def),DecoratedInterval(Interval(1.0,3.0),com)) == "starts" - @test overlap_dec(DecoratedInterval(Interval(1.0,1.0),trv),DecoratedInterval(Interval(1.0,3.0),def)) == "starts" - - @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),def),DecoratedInterval(Interval(0.0,3.0),dac)) == "containedBy" - @test overlap_dec(DecoratedInterval(Interval(2.0,2.0),trv),DecoratedInterval(Interval(0.0,3.0),def)) == "containedBy" - - @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),trv),DecoratedInterval(Interval(0.0,2.0),com)) == "finishes" - @test overlap_dec(DecoratedInterval(Interval(2.0,2.0),def),DecoratedInterval(Interval(0.0,2.0),dac)) == "finishes" - - @test overlap_dec(DecoratedInterval(Interval(1.0,2.0),def),DecoratedInterval(Interval(1.0,2.0),def)) == "equals" - @test overlap_dec(DecoratedInterval(Interval(1.0,1.0),dac),DecoratedInterval(Interval(1.0,1.0),dac)) == "equals" - - @test overlap_dec(DecoratedInterval(Interval(3.0,4.0),trv),DecoratedInterval(Interval(2.0,2.0),trv)) == "after" - @test overlap_dec(DecoratedInterval(Interval(3.0,4.0),def),DecoratedInterval(Interval(1.0,2.0),def)) == "after" - @test overlap_dec(DecoratedInterval(Interval(3.0,3.0),com),DecoratedInterval(Interval(1.0,2.0),dac)) == "after" - @test overlap_dec(DecoratedInterval(Interval(3.0,3.0),def),DecoratedInterval(Interval(2.0,2.0),trv)) == "after" - - @test overlap_dec(DecoratedInterval(Interval(2.0,3.0),def),DecoratedInterval(Interval(1.0,2.0),trv)) == "metBy" - @test overlap_dec(DecoratedInterval(Interval(1.5,2.5),com),DecoratedInterval(Interval(1.0,2.0),com)) == "overlappedBy" - - @test overlap_dec(DecoratedInterval(Interval(1.0,3.0),dac),DecoratedInterval(Interval(1.0,2.0),def)) == "startedBy" - @test overlap_dec(DecoratedInterval(Interval(1.0,3.0),com),DecoratedInterval(Interval(1.0,1.0),dac)) == "startedBy" - - @test overlap_dec(DecoratedInterval(Interval(0.0,3.0),com),DecoratedInterval(Interval(1.0,2.0),dac)) == "contains" - @test overlap_dec(DecoratedInterval(Interval(0.0,3.0),com),DecoratedInterval(Interval(2.0,2.0),def)) == "contains" - - @test overlap_dec(DecoratedInterval(Interval(0.0,2.0),def),DecoratedInterval(Interval(1.0,2.0),trv)) == "finishedBy" - @test overlap_dec(DecoratedInterval(Interval(0.0,2.0),dac),DecoratedInterval(Interval(2.0,2.0),def)) == "finishedBy" + @test overlap(DecoratedInterval(∅, trv), DecoratedInterval(∅, trv)) == "bothEmpty" + @test overlap(DecoratedInterval(∅, trv), DecoratedInterval(Interval(1.0, 2.0), com)) == "firstEmpty" + @test overlap(DecoratedInterval(Interval(1.0, 2.0), def), DecoratedInterval(∅, trv)) == "secondEmpty" + @test overlap(DecoratedInterval(Interval(2.0, 2.0), def), DecoratedInterval(Interval(3.0, 4.0), def)) == "before" + @test overlap(DecoratedInterval(Interval(1.0, 2.0), dac), DecoratedInterval(Interval(3.0, 4.0), com)) == "before" + @test overlap(DecoratedInterval(Interval(1.0, 2.0), com), DecoratedInterval(Interval(3.0, 3.0), trv)) == "before" + @test overlap(DecoratedInterval(Interval(2.0, 2.0), trv), DecoratedInterval(Interval(3.0, 3.0), def)) == "before" + @test overlap(DecoratedInterval(Interval(1.0, 2.0), def), DecoratedInterval(Interval(2.0, 3.0), def)) == "meets" + @test overlap(DecoratedInterval(Interval(1.0, 2.0), dac), DecoratedInterval(Interval(1.5, 2.5), def)) == "overlaps" + @test overlap(DecoratedInterval(Interval(1.0, 2.0), def), DecoratedInterval(Interval(1.0, 3.0), com)) == "starts" + @test overlap(DecoratedInterval(Interval(1.0, 1.0), trv), DecoratedInterval(Interval(1.0, 3.0), def)) == "starts" + @test overlap(DecoratedInterval(Interval(1.0, 2.0), def), DecoratedInterval(Interval(0.0, 3.0), dac)) == "containedBy" + @test overlap(DecoratedInterval(Interval(2.0, 2.0), trv), DecoratedInterval(Interval(0.0, 3.0), def)) == "containedBy" + @test overlap(DecoratedInterval(Interval(1.0, 2.0), trv), DecoratedInterval(Interval(0.0, 2.0), com)) == "finishes" + @test overlap(DecoratedInterval(Interval(2.0, 2.0), def), DecoratedInterval(Interval(0.0, 2.0), dac)) == "finishes" + @test overlap(DecoratedInterval(Interval(1.0, 2.0), def), DecoratedInterval(Interval(1.0, 2.0), def)) == "equals" + @test overlap(DecoratedInterval(Interval(1.0, 1.0), dac), DecoratedInterval(Interval(1.0, 1.0), dac)) == "equals" + @test overlap(DecoratedInterval(Interval(3.0, 4.0), trv), DecoratedInterval(Interval(2.0, 2.0), trv)) == "after" + @test overlap(DecoratedInterval(Interval(3.0, 4.0), def), DecoratedInterval(Interval(1.0, 2.0), def)) == "after" + @test overlap(DecoratedInterval(Interval(3.0, 3.0), com), DecoratedInterval(Interval(1.0, 2.0), dac)) == "after" + @test overlap(DecoratedInterval(Interval(3.0, 3.0), def), DecoratedInterval(Interval(2.0, 2.0), trv)) == "after" + @test overlap(DecoratedInterval(Interval(2.0, 3.0), def), DecoratedInterval(Interval(1.0, 2.0), trv)) == "metBy" + @test overlap(DecoratedInterval(Interval(1.5, 2.5), com), DecoratedInterval(Interval(1.0, 2.0), com)) == "overlappedBy" + @test overlap(DecoratedInterval(Interval(1.0, 3.0), dac), DecoratedInterval(Interval(1.0, 2.0), def)) == "startedBy" + @test overlap(DecoratedInterval(Interval(1.0, 3.0), com), DecoratedInterval(Interval(1.0, 1.0), dac)) == "startedBy" + @test overlap(DecoratedInterval(Interval(0.0, 3.0), com), DecoratedInterval(Interval(1.0, 2.0), dac)) == "contains" + @test overlap(DecoratedInterval(Interval(0.0, 3.0), com), DecoratedInterval(Interval(2.0, 2.0), def)) == "contains" + @test overlap(DecoratedInterval(Interval(0.0, 2.0), def), DecoratedInterval(Interval(1.0, 2.0), trv)) == "finishedBy" + @test overlap(DecoratedInterval(Interval(0.0, 2.0), dac), DecoratedInterval(Interval(2.0, 2.0), def)) == "finishedBy" end # FactCheck.exitstatus() From 1d8813387b554008b8b7ae64943d69ad14100359 Mon Sep 17 00:00:00 2001 From: Krish Agarwal Date: Mon, 3 Aug 2020 16:08:35 +0530 Subject: [PATCH 4/4] Remove new file and increase code coverage --- src/IntervalArithmetic.jl | 1 - src/decorations/functions.jl | 4 ++++ src/intervals/functions.jl | 19 +++++++++++++++++++ src/overlap.jl | 22 ---------------------- test/ITF1788_tests/ITF1788_tests.jl | 1 + 5 files changed, 24 insertions(+), 23 deletions(-) delete mode 100644 src/overlap.jl diff --git a/src/IntervalArithmetic.jl b/src/IntervalArithmetic.jl index d64ee260d..72a4234ed 100644 --- a/src/IntervalArithmetic.jl +++ b/src/IntervalArithmetic.jl @@ -127,7 +127,6 @@ include("plot_recipes/plot_recipes.jl") include("deprecated.jl") -include("overlap.jl") """ Region{T} = Union{Interval{T}, IntervalBox{T}} diff --git a/src/decorations/functions.jl b/src/decorations/functions.jl index b45cbf15b..a10bd1dd2 100644 --- a/src/decorations/functions.jl +++ b/src/decorations/functions.jl @@ -365,3 +365,7 @@ for (f, domain) in restricted_functions2 DecoratedInterval(r, trv) end end + +function overlap(xx::DecoratedInterval, yy::DecoratedInterval) where T + return overlap(interval_part(xx) , interval_part(yy)) +end \ No newline at end of file diff --git a/src/intervals/functions.jl b/src/intervals/functions.jl index 5fdf6f0fa..2fa021580 100644 --- a/src/intervals/functions.jl +++ b/src/intervals/functions.jl @@ -327,3 +327,22 @@ end hypot(a::Interval{BigFloat}, b::Interval{BigFloat}) = sqrt(a^2 + b^2) hypot(a::Interval{T}, b::Interval{T}) where T= atomic(Interval{T}, hypot(big53(a), big53(b))) + +function overlap(a::Interval, b::Interval) + isempty(a) && isempty(b) && return "bothEmpty" + isempty(a) && !isempty(b) && return "firstEmpty" + !isempty(a) && isempty(b) && return "secondEmpty" + a.hi < b.lo && return "before" + a.lo < a.hi && a.hi == b.lo && b.lo < b.hi && return "meets" + a.lo < b.lo && b.lo < a.hi && a.hi < b.hi && return "overlaps" + a.lo == b.lo && a.hi < b.hi && return "starts" + b.lo < a.lo && a.hi < b.hi && return "containedBy" + b.lo < a.lo && a.hi == b.hi && return "finishes" + a.lo == b.lo && a.hi == b.hi && return "equals" + a.lo < b.lo && b.hi == a.hi && return "finishedBy" + a.lo < b.lo && b.hi < a.hi && return "contains" + b.lo == a.lo && b.hi < a.hi && return "startedBy" + b.lo < a.lo && a.lo < b.hi && b.hi < a.hi && return "overlappedBy" + b.lo < b.hi && b.hi == a.lo && a.lo < a.hi && return "metBy" + b.hi < a.lo && return "after" +end \ No newline at end of file diff --git a/src/overlap.jl b/src/overlap.jl deleted file mode 100644 index e0d3a9b4e..000000000 --- a/src/overlap.jl +++ /dev/null @@ -1,22 +0,0 @@ -function overlap(a::Interval, b::Interval) - isempty(a) && isempty(b) && return "bothEmpty" - isempty(a) && !isempty(b) && return "firstEmpty" - !isempty(a) && isempty(b) && return "secondEmpty" - a.hi < b.lo && return "before" - a.lo < a.hi && a.hi == b.lo && b.lo < b.hi && return "meets" - a.lo < b.lo && b.lo < a.hi && a.hi < b.hi && return "overlaps" - a.lo == b.lo && a.hi < b.hi && return "starts" - b.lo < a.lo && a.hi < b.hi && return "containedBy" - b.lo < a.lo && a.hi == b.hi && return "finishes" - a.lo == b.lo && a.hi == b.hi && return "equals" - a.lo < b.lo && b.hi == a.hi && return "finishedBy" - a.lo < b.lo && b.hi < a.hi && return "contains" - b.lo == a.lo && b.hi < a.hi && return "startedBy" - b.lo < a.lo && a.lo < b.hi && b.hi < a.hi && return "overlappedBy" - b.lo < b.hi && b.hi == a.lo && a.lo < a.hi && return "metBy" - b.hi < a.lo && return "after" -end - -function overlap(xx::DecoratedInterval, yy::DecoratedInterval) where T - return overlap(interval_part(xx) , interval_part(yy)) -end diff --git a/test/ITF1788_tests/ITF1788_tests.jl b/test/ITF1788_tests/ITF1788_tests.jl index 9dc6c64d4..41b223a19 100644 --- a/test/ITF1788_tests/ITF1788_tests.jl +++ b/test/ITF1788_tests/ITF1788_tests.jl @@ -10,3 +10,4 @@ include("libieeep1788_tests_rev.jl") include("libieeep1788_tests_set.jl") include("mpfi.jl") include("fi_lib.jl") +include("libieeep1788_tests_overlap.jl")