/*
* Copyright 2013 Robert von Burg <eitch@eitchnet.ch>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* 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.
*/
package li.strolch.utils.collections;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.Date;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import li.strolch.utils.collections.DateRange;
import li.strolch.utils.dbc.DBC.DbcException;
public class DateRangeTest {
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testFrom() {
Date now = new Date();
DateRange dateRange = new DateRange();
dateRange.from(now, true);
assertEquals(now, dateRange.getFromDate());
assertNull(dateRange.getToDate());
assertFalse(dateRange.isUnbounded());
assertFalse(dateRange.isBounded());
}
/**
* Test method for {@link li.strolch.utils.collections.DateRange#to(java.util.Date, boolean)}.
*/
@Test
public void testTo() {
Date now = new Date();
DateRange dateRange = new DateRange();
dateRange.to(now, true);
assertEquals(now, dateRange.getToDate());
assertNull(dateRange.getFromDate());
assertFalse(dateRange.isUnbounded());
assertFalse(dateRange.isBounded());
}
/**
* Test method for {@link li.strolch.utils.collections.DateRange#to(java.util.Date,boolean)}.
*/
@Test
public void testFromTo() {
Date from = new Date();
Date to = new Date();
DateRange dateRange = new DateRange();
dateRange.from(from, true).to(to, true);
assertEquals(from, dateRange.getFromDate());
assertEquals(to, dateRange.getToDate());
assertFalse(dateRange.isUnbounded());
assertTrue(dateRange.isBounded());
}
@Test
public void shouldNotOverlap() {
this.exception.expect(DbcException.class);
Date from = new Date(10);
Date to = new Date(20);
DateRange dateRange = new DateRange();
dateRange.from(to, true).to(from, true);
}
/**
* Test method for {@link li.strolch.utils.collections.DateRange#isDate()}.
*/
@Test
public void testIsDate() {
Date from = new Date(10);
Date to = new Date(20);
DateRange dateRange = new DateRange();
dateRange.from(from, false).to(to, false);
assertFalse(dateRange.isDate());
dateRange = new DateRange();
dateRange.from(from, false).to(from, false);
assertTrue(dateRange.isDate());
}
/**
* Test method for {@link li.strolch.utils.collections.DateRange#contains(java.util.Date)}.
*/
@Test
public void testContains() {
Date from = new Date(10);
Date to = new Date(20);
DateRange dateRange = new DateRange();
dateRange.from(from, false).to(to, false);
Date earlier = new Date(5);
Date later = new Date(25);
Date contained = new Date(15);
assertFalse(dateRange.contains(earlier));
assertFalse(dateRange.contains(later));
assertTrue(dateRange.contains(contained));
assertFalse(dateRange.contains(from));
assertFalse(dateRange.contains(to));
dateRange = new DateRange();
dateRange.from(from, true).to(to, true);
assertTrue(dateRange.contains(from));
assertTrue(dateRange.contains(to));
dateRange = new DateRange();
dateRange.from(from, false).to(to, true);
assertFalse(dateRange.contains(from));
assertTrue(dateRange.contains(to));
dateRange = new DateRange();
dateRange.from(from, true).to(to, false);
assertTrue(dateRange.contains(from));
assertFalse(dateRange.contains(to));
}
}