/** * Licensed to Jasig under one or more contributor license * agreements. See the NOTICE file distributed with this work * for additional information regarding copyright ownership. * Jasig licenses this file to you 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 org.jasig.schedassist.model; import java.util.Date; import org.apache.commons.lang.time.DateUtils; import org.junit.Assert; import org.junit.Test; /** * Tests for {@link VisibleScheduleRequestConstraints}. * * @author Nicholas Blair, nblair@doit.wisc.edu * @version $Id: VisibleScheduleRequestTest.java $ */ public class VisibleScheduleRequestConstraintsTest { @Test public void testConstrainWeekStart() { VisibleWindow window = VisibleWindow.DEFAULT; Assert.assertEquals(0, VisibleScheduleRequestConstraints.constrainWeekStartToWindow(window, -100)); Assert.assertEquals(0, VisibleScheduleRequestConstraints.constrainWeekStartToWindow(window, -1)); Assert.assertEquals(0, VisibleScheduleRequestConstraints.constrainWeekStartToWindow(window, 0)); Assert.assertEquals(1, VisibleScheduleRequestConstraints.constrainWeekStartToWindow(window, 1)); Assert.assertEquals(3, VisibleScheduleRequestConstraints.constrainWeekStartToWindow(window, 3)); Assert.assertEquals(3, VisibleScheduleRequestConstraints.constrainWeekStartToWindow(window, 4)); Assert.assertEquals(3, VisibleScheduleRequestConstraints.constrainWeekStartToWindow(window, 10)); } @Test public void testResolveStartDate() { Date referencePoint = new Date(); Assert.assertEquals(referencePoint, VisibleScheduleRequestConstraints.resolveStartDate(referencePoint, 0)); Assert.assertEquals(referencePoint, VisibleScheduleRequestConstraints.resolveStartDate(referencePoint, -1)); Assert.assertEquals(referencePoint, VisibleScheduleRequestConstraints.resolveStartDate(referencePoint, -100)); Date upcomingSunday = DateUtils.addDays(referencePoint, CommonDateOperations.numberOfDaysUntilSunday(referencePoint)); Assert.assertEquals(upcomingSunday, VisibleScheduleRequestConstraints.resolveStartDate(referencePoint, 1)); Assert.assertEquals(DateUtils.addWeeks(upcomingSunday, 1), VisibleScheduleRequestConstraints.resolveStartDate(referencePoint, 2)); } @Test public void testResolveEndDate() { Date referencePoint = new Date(); Assert.assertEquals(DateUtils.addWeeks(referencePoint, 1), VisibleScheduleRequestConstraints.resolveEndDate(VisibleWindow.fromKey("1,1"), referencePoint)); Assert.assertEquals(DateUtils.addWeeks(referencePoint, 2), VisibleScheduleRequestConstraints.resolveEndDate(VisibleWindow.fromKey("1,2"), referencePoint)); Assert.assertEquals(DateUtils.addWeeks(referencePoint, 3), VisibleScheduleRequestConstraints.resolveEndDate(VisibleWindow.DEFAULT, referencePoint)); Assert.assertEquals(DateUtils.addWeeks(referencePoint, 4), VisibleScheduleRequestConstraints.resolveEndDate(VisibleWindow.fromKey("1,4"), referencePoint)); Assert.assertEquals(DateUtils.addWeeks(referencePoint, 4), VisibleScheduleRequestConstraints.resolveEndDate(VisibleWindow.fromKey("1,5"), referencePoint)); Assert.assertEquals(DateUtils.addWeeks(referencePoint, 4), VisibleScheduleRequestConstraints.resolveEndDate(VisibleWindow.fromKey("1,8"), referencePoint)); Assert.assertEquals(DateUtils.addWeeks(referencePoint, 4), VisibleScheduleRequestConstraints.resolveEndDate(VisibleWindow.fromKey("1,26"), referencePoint)); } @Test public void testCalculateNextWeekIndexDefaultWindow() { Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(VisibleWindow.DEFAULT, 0)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(VisibleWindow.DEFAULT, -1)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(VisibleWindow.DEFAULT, 1)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(VisibleWindow.DEFAULT, 2)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(VisibleWindow.DEFAULT, 3)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(VisibleWindow.DEFAULT, 10)); } @Test public void testCalculatePrevWeekIndexDefaultWindow() { Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(VisibleWindow.DEFAULT, 0)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(VisibleWindow.DEFAULT, -1)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(VisibleWindow.DEFAULT, 1)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(VisibleWindow.DEFAULT, 2)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(VisibleWindow.DEFAULT, 3)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(VisibleWindow.DEFAULT, 10)); } @Test public void testCalculateNextWeekIndex4Weeks() { VisibleWindow window = VisibleWindow.fromKey("1,4"); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 0)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, -1)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 1)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 2)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 3)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 4)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 10)); } @Test public void testCalculatePrevWeekIndex4Weeks() { VisibleWindow window = VisibleWindow.fromKey("1,4"); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 0)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, -1)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 1)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 2)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 3)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 4)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 10)); } @Test public void testCalculateNextWeekIndex5Weeks() { VisibleWindow window = VisibleWindow.fromKey("1,5"); Assert.assertEquals(new Integer(4),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 0)); Assert.assertEquals(new Integer(4),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, -1)); Assert.assertEquals(new Integer(5),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 1)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 2)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 3)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 4)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 10)); } @Test public void testCalculatePrevWeekIndex5Weeks() { VisibleWindow window = VisibleWindow.fromKey("1,5"); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 0)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, -1)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 1)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 2)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 3)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 4)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 10)); } @Test public void testCalculateNextWeekIndex8Weeks() { VisibleWindow window = VisibleWindow.fromKey("1,8"); Assert.assertEquals(new Integer(4),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 0)); Assert.assertEquals(new Integer(4),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, -1)); Assert.assertEquals(new Integer(5),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 1)); Assert.assertEquals(new Integer(6),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 2)); Assert.assertEquals(new Integer(7),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 3)); Assert.assertEquals(new Integer(8),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 4)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 10)); } @Test public void testCalculatePrevWeekIndex8Weeks() { VisibleWindow window = VisibleWindow.fromKey("1,8"); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 0)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, -1)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 1)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 2)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 3)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 4)); Assert.assertEquals(new Integer(1),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 5)); Assert.assertEquals(new Integer(2),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 6)); Assert.assertEquals(new Integer(3),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 7)); Assert.assertEquals(new Integer(4),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 8)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 10)); } @Test public void testCalculateNextWeekIndex26Weeks() { VisibleWindow window = VisibleWindow.fromKey("1,26"); Assert.assertEquals(new Integer(4),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, -1)); for(int i = 0; i <= 22; i++) { Assert.assertEquals(new Integer(i+VisibleScheduleRequestConstraints.WEEKS_PER_PAGE),VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, i)); } Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 23)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 24)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 25)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 26)); Assert.assertNull(VisibleScheduleRequestConstraints.calculateNextWeekIndex(window, 27)); } @Test public void testCalculatePrevWeekIndex26Weeks() { VisibleWindow window = VisibleWindow.fromKey("1,26"); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 0)); Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, -1)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 1)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 2)); Assert.assertEquals(new Integer(0),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 3)); for(int i = 4; i <= 26; i++) { Assert.assertEquals(new Integer(i-VisibleScheduleRequestConstraints.WEEKS_PER_PAGE),VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, i)); } Assert.assertNull(VisibleScheduleRequestConstraints.calculatePrevWeekIndex(window, 27)); } }