From 9b24460f281a49700dbc29b583f54c619f35b433 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 5 Jun 2012 09:01:38 +0000 Subject: [PATCH] SP-46, BIS-37: bug fixed SVN: 25559 --- .../basic/AlternativesStringFilter.java | 8 +- .../basic/AlternativesStringFilterTest.java | 158 +++++++++++++++--- 2 files changed, 142 insertions(+), 24 deletions(-) diff --git a/common/source/java/ch/systemsx/cisd/common/shared/basic/AlternativesStringFilter.java b/common/source/java/ch/systemsx/cisd/common/shared/basic/AlternativesStringFilter.java index d091648ae61..66f326d3fe1 100644 --- a/common/source/java/ch/systemsx/cisd/common/shared/basic/AlternativesStringFilter.java +++ b/common/source/java/ch/systemsx/cisd/common/shared/basic/AlternativesStringFilter.java @@ -218,10 +218,16 @@ public class AlternativesStringFilter private ComparisonKind comparisonKind; + private String filterForGreater; + DateMatcher(String filter, ComparisonKind comparison) { this.filter = filter; this.comparisonKind = comparison; + String[] splitted = filter.split("-"); + filterForGreater = + splitted[0] + "-" + (splitted.length > 1 ? splitted[1] : "12") + "-" + + (splitted.length > 2 ? splitted[2] : "31") + " 23:59:59"; } @Override @@ -244,7 +250,7 @@ public class AlternativesStringFilter case LE: return value.compareTo(this.filter) < 0 || value.startsWith(filter); case GT: - return value.compareTo(this.filter) > 0; + return value.compareTo(filterForGreater) > 0; case GE: return value.compareTo(this.filter) > 0 || value.startsWith(filter); default: diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/shared/basic/AlternativesStringFilterTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/shared/basic/AlternativesStringFilterTest.java index db421e361dd..ab1440343af 100644 --- a/common/sourceTest/java/ch/systemsx/cisd/common/shared/basic/AlternativesStringFilterTest.java +++ b/common/sourceTest/java/ch/systemsx/cisd/common/shared/basic/AlternativesStringFilterTest.java @@ -43,14 +43,57 @@ public class AlternativesStringFilterTest return filter; } + @Test + public void testYearMatching() + { + AlternativesStringFilter filter = prepareDateFilter("=2011"); + assertTrue(filter.passes("2011-12-31 23:59:59")); + assertTrue(filter.passes("2011-07-21 10:22:33")); + assertTrue(filter.passes("2011-01-01 00:00:00")); + assertFalse(filter.passes("2012-01-01 00:00:00")); + assertFalse(filter.passes("2010-12-31 23:59:59")); + } + + @Test + public void testMonthMatching() + { + AlternativesStringFilter filter = prepareDateFilter("=2011-07"); + assertTrue(filter.passes("2011-07-31 23:59:59")); + assertTrue(filter.passes("2011-07-21 10:22:33")); + assertTrue(filter.passes("2011-07-01 00:00:00")); + assertFalse(filter.passes("2011-08-01 00:00:00")); + assertFalse(filter.passes("2011-06-30 23:59:59")); + } + @Test public void testDateMatching() { AlternativesStringFilter filter = prepareDateFilter("=2011-07-21"); assertTrue(filter.passes("2011-07-21 10:22:33")); - assertTrue(filter.passes("2011-07-21")); - assertFalse(filter.passes("2011-07-20")); - assertFalse(filter.passes("2010-07-21")); + assertFalse(filter.passes("2011-07-20 10:22:33")); + assertFalse(filter.passes("2010-07-21 10:22:33")); + } + + @Test + public void testYearMatchingBefore() + { + AlternativesStringFilter filter = prepareDateFilter("<2011"); + assertTrue(filter.passes("2010-12-31 23:59:59")); + assertTrue(filter.passes("2010-07-21 11:22:33")); + assertFalse(filter.passes("2011-01-01 00:00:00")); + assertFalse(filter.passes("2011-07-22 10:22:33")); + assertFalse(filter.passes("2012-01-22 10:22:33")); + } + + @Test + public void testMonthMatchingBefore() + { + AlternativesStringFilter filter = prepareDateFilter("<2011-07"); + assertTrue(filter.passes("2011-06-30 23:59:59")); + assertTrue(filter.passes("2010-07-21 11:22:33")); + assertFalse(filter.passes("2011-07-01 00:00:00")); + assertFalse(filter.passes("2011-07-22 10:22:33")); + assertFalse(filter.passes("2011-08-22 10:22:33")); } @Test @@ -58,52 +101,122 @@ public class AlternativesStringFilterTest { AlternativesStringFilter filter = prepareDateFilter("<2011-07-21"); assertTrue(filter.passes("2011-07-20 10:22:33")); - assertTrue(filter.passes("2011-07")); - assertFalse(filter.passes("2011-07-21")); - assertFalse(filter.passes("2011-07-22")); + assertTrue(filter.passes("2011-07-19 23:22:33")); + assertFalse(filter.passes("2011-07-21 10:22:33")); + assertFalse(filter.passes("2011-07-22 10:22:33")); + } + + @Test + public void testYearMatchingBeforeAndEqual() + { + AlternativesStringFilter filter = prepareDateFilter("<=2011"); + assertTrue(filter.passes("2011-12-31 23:59:59")); + assertTrue(filter.passes("2011-07-21 10:22:33")); + assertTrue(filter.passes("2010-06-01 00:22:33")); + assertFalse(filter.passes("2012-01-01 00:00:00")); + assertFalse(filter.passes("2012-09-23 10:22:33")); + assertFalse(filter.passes("2014-06-23 10:22:33")); + } + + @Test + public void testMonthMatchingBeforeAndEqual() + { + AlternativesStringFilter filter = prepareDateFilter("<=2011-07"); + assertTrue(filter.passes("2011-07-31 23:59:59")); + assertTrue(filter.passes("2011-07-21 10:22:33")); + assertTrue(filter.passes("2011-06-01 00:22:33")); + assertTrue(filter.passes("2010-06-01 00:22:33")); + assertFalse(filter.passes("2011-08-01 00:00:00")); + assertFalse(filter.passes("2011-09-23 10:22:33")); + assertFalse(filter.passes("2012-06-23 10:22:33")); } @Test public void testDateMatchingBeforeAndEqual() { AlternativesStringFilter filter = prepareDateFilter("<=2011-07-21"); - assertTrue(filter.passes("2011-07-20")); + assertTrue(filter.passes("2011-07-20 10:22:33")); assertTrue(filter.passes("2011-07-21 10:22:33")); - assertTrue(filter.passes("2011-07-21")); - assertFalse(filter.passes("2011-07-22")); - assertFalse(filter.passes("2011-07-23")); + assertTrue(filter.passes("2011-07-21 00:22:33")); + assertFalse(filter.passes("2011-07-22 10:22:33")); + assertFalse(filter.passes("2011-07-23 10:22:33")); + } + + @Test + public void testYearMatchingAfter() + { + AlternativesStringFilter filter = prepareDateFilter(">2011"); + assertTrue(filter.passes("2013-07-23 10:22:33")); + assertTrue(filter.passes("2012-01-01 00:00:00")); + assertFalse(filter.passes("2011-12-31 23:59:59")); + assertFalse(filter.passes("2010-04-20 10:22:33")); + } + + @Test + public void testMonthMatchingAfter() + { + AlternativesStringFilter filter = prepareDateFilter(">2011-07"); + assertTrue(filter.passes("2012-07-23 10:22:33")); + assertTrue(filter.passes("2011-08-01 00:00:00")); + assertFalse(filter.passes("2011-07-31 23:59:59")); + assertFalse(filter.passes("2011-04-20 10:22:33")); } @Test public void testDateMatchingAfter() { AlternativesStringFilter filter = prepareDateFilter(">2011-07-21"); + assertTrue(filter.passes("2011-07-23 10:22:33")); assertTrue(filter.passes("2011-07-22 10:22:33")); - assertTrue(filter.passes("2011-07-22")); - assertFalse(filter.passes("2011-07-21")); - assertFalse(filter.passes("2011-07-20")); + assertFalse(filter.passes("2011-07-21 10:22:33")); + assertFalse(filter.passes("2011-07-20 10:22:33")); + } + + @Test + public void testYearMatchingAfterAndEqual() + { + AlternativesStringFilter filter = prepareDateFilter(">=2011"); + assertTrue(filter.passes("2012-04-22 10:22:33")); + assertTrue(filter.passes("2011-08-22 10:22:33")); + assertTrue(filter.passes("2011-07-21 10:22:33")); + assertTrue(filter.passes("2011-01-01 00:00:00")); + assertFalse(filter.passes("2010-12-31 23:59:59")); + assertFalse(filter.passes("2009-07-19 10:22:33")); + } + + @Test + public void testMonthMatchingAfterAndEqual() + { + AlternativesStringFilter filter = prepareDateFilter(">=2011-07"); + assertTrue(filter.passes("2012-04-22 10:22:33")); + assertTrue(filter.passes("2011-08-22 10:22:33")); + assertTrue(filter.passes("2011-07-21 10:22:33")); + assertTrue(filter.passes("2011-07-01 00:00:00")); + assertFalse(filter.passes("2011-06-30 23:59:59")); + assertFalse(filter.passes("2010-07-19 10:22:33")); } @Test public void testDateMatchingAfterAndEqual() { AlternativesStringFilter filter = prepareDateFilter(">=2011-07-21"); - assertTrue(filter.passes("2011-07-22")); + assertTrue(filter.passes("2012-06-12 10:22:33")); + assertTrue(filter.passes("2011-07-22 10:22:33")); assertTrue(filter.passes("2011-07-21 10:22:33")); - assertTrue(filter.passes("2011-07-21")); - assertFalse(filter.passes("2011-07-20")); - assertFalse(filter.passes("2011-07-19")); + assertTrue(filter.passes("2011-07-21 00:22:33")); + assertFalse(filter.passes("2011-07-20 10:22:33")); + assertFalse(filter.passes("2011-07-19 10:22:33")); } @Test public void testDateMatchingRange() { - AlternativesStringFilter filter = prepareDateFilter(">2011 & <2011-07"); + AlternativesStringFilter filter = prepareDateFilter(">2010 & <2011-07"); assertTrue(filter.passes("2011-06-03 10:22:33")); - assertTrue(filter.passes("2011-06-03")); - assertFalse(filter.passes("2011-07-01")); + assertTrue(filter.passes("2011-06-13 10:22:33")); + assertFalse(filter.passes("2011-07-01 10:22:33")); assertFalse(filter.passes("2011-07-01 00:00:01")); - assertFalse(filter.passes("2010-12-31")); + assertFalse(filter.passes("2010-12-31 10:22:33")); assertFalse(filter.passes("2010-12-31 23:59:59")); } @@ -112,7 +225,6 @@ public class AlternativesStringFilterTest { AlternativesStringFilter filter = prepareDateFilter(""); assertTrue(filter.passes("2011-06-03 10:22:33")); - assertTrue(filter.passes("2011-06-03")); assertTrue(filter.passes("2011-07-01 12:13:14")); } @@ -121,7 +233,7 @@ public class AlternativesStringFilterTest { AlternativesStringFilter filter = prepareDateFilter("2011"); assertTrue(filter.passes("2011-06-03 10:22:33")); - assertTrue(filter.passes("2011-06-03")); + assertTrue(filter.passes("2011-11-22 10:22:33")); assertFalse(filter.passes("2010-12-31 23:59:59")); assertFalse(filter.passes("2012-11-06 13:14:15")); } -- GitLab