/**
* License Agreement.
*
* Rich Faces - Natural Ajax for Java Server Faces (JSF)
*
* Copyright (C) 2007 Exadel, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package org.richfaces.component;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.StringTokenizer;
import org.jboss.test.faces.AbstractFacesTest;
import org.junit.Ignore;
/**
* Unit test for simple Component.
*/
@Ignore
public class JSFComponentTest
extends AbstractFacesTest {
@Override
public void setUp() throws Exception {
super.setUp();
}
@Override
public void tearDown() throws Exception {
super.tearDown();
}
/**
* Checks if component properly calculates date ranges of displayed days
* in order to provide initial events.
*
* @throws IOException if file with test data cannot be read
* @see JSFComponentTest#doTestDisplayedDays(java.lang.String, java.lang.String)
*/
public void testDisplayedDaysForMonthViewCalculation() throws IOException {
doTestDisplayedDays("displayedDaysForMonthViewCalculationTestData", AbstractSchedule.VIEW_MONTH);
}
/**
* Checks if component properly calculates date ranges of displayed days
* in order to provide initial events.
*
* @throws IOException if file with test data cannot be read
* @see JSFComponentTest#doTestDisplayedDays(java.lang.String, java.lang.String)
*/
public void testDisplayedDaysForWeekViewCalculation() throws IOException {
doTestDisplayedDays("displayedDaysForWeekViewCalculationTestData", AbstractSchedule.VIEW_AGENDA_WEEK);
doTestDisplayedDays("displayedDaysForWeekViewCalculationTestData", AbstractSchedule.VIEW_BASIC_WEEK);
}
/**
* Checks if component properly calculates date ranges of displayed days
* in order to provide initial events.
*
* @throws IOException if file with test data cannot be read
* @see JSFComponentTest#doTestDisplayedDays(java.lang.String, java.lang.String)
*/
public void testDisplayedDaysForDayViewCalculation() throws IOException {
doTestDisplayedDays("displayedDaysForDayViewCalculationTestData", AbstractSchedule.VIEW_AGENDA_DAY);
doTestDisplayedDays("displayedDaysForDayViewCalculationTestData", AbstractSchedule.VIEW_BASIC_DAY);
}
/**
* Checks if component properly calculates date ranges of displayed days
* in order to provide initial events.
*
* @param fileNameProperty name of file with test data
* @param view view name for which calculation should be tested
* @throws IOException if file with test data cannot be read
*/
private void doTestDisplayedDays(String fileNameProperty, String view) throws IOException {
Calendar calendar = Calendar.getInstance();
AbstractSchedule schedule = (AbstractSchedule) application.createComponent(AbstractSchedule.COMPONENT_TYPE);
Calendar expectedFirstDisplayedDay, expectedLastDisplayedDay;
final String fileName = System.getProperty(fileNameProperty);
System.out.println("filename:" + fileName);
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line;
int lineNr = 0;
int firstDay;
boolean showWeekends;
StringTokenizer tokenizer;
try {
while ((line = reader.readLine()) != null) {
lineNr++;
System.out.print("line " + lineNr + ": " + line);
try {
tokenizer = new StringTokenizer(line, ",");
firstDay = Integer.parseInt(tokenizer.nextToken());
showWeekends = Integer.parseInt(tokenizer.nextToken()) == 1;
calendar.set(Calendar.YEAR, Integer.parseInt(tokenizer.nextToken()));
calendar.set(Calendar.MONTH, Integer.parseInt(tokenizer.nextToken()));
calendar.set(Calendar.DATE, Integer.parseInt(tokenizer.nextToken()));
Date initialDate = calendar.getTime();
calendar.set(Calendar.YEAR, Integer.parseInt(tokenizer.nextToken()));
calendar.set(Calendar.MONTH, Integer.parseInt(tokenizer.nextToken()));
calendar.set(Calendar.DATE, Integer.parseInt(tokenizer.nextToken()));
expectedFirstDisplayedDay = (Calendar) calendar.clone();
calendar.set(Calendar.YEAR, Integer.parseInt(tokenizer.nextToken()));
calendar.set(Calendar.MONTH, Integer.parseInt(tokenizer.nextToken()));
calendar.set(Calendar.DATE, Integer.parseInt(tokenizer.nextToken()));
expectedLastDisplayedDay = (Calendar) calendar.clone();
schedule.setShowWeekends(showWeekends);
schedule.setFirstDay(firstDay);
schedule.setDate(initialDate);
schedule.setView(view);
calendar.setTime(AbstractSchedule.getFirstDisplayedDay(schedule));
System.out.print(" result: " + calendar.get(Calendar.YEAR) + "," + calendar.get(Calendar.MONTH) + "," + calendar.get(Calendar.DATE));
assert expectedFirstDisplayedDay.get(Calendar.YEAR) == calendar.get(Calendar.YEAR);
assert expectedFirstDisplayedDay.get(Calendar.MONTH) == calendar.get(Calendar.MONTH);
assert expectedFirstDisplayedDay.get(Calendar.DATE) == calendar.get(Calendar.DATE);
calendar.setTime(AbstractSchedule.getLastDisplayedDate(schedule));
System.out.print("," + calendar.get(Calendar.YEAR) + "," + calendar.get(Calendar.MONTH) + "," + calendar.get(Calendar.DATE));
assert expectedLastDisplayedDay.get(Calendar.YEAR) == calendar.get(Calendar.YEAR);
assert expectedLastDisplayedDay.get(Calendar.MONTH) == calendar.get(Calendar.MONTH);
assert expectedLastDisplayedDay.get(Calendar.DATE) == calendar.get(Calendar.DATE);
} catch (Exception e) {
throw new RuntimeException("Exception during processing of line " + lineNr + " of test data. Line: " + line, e);
} finally {
System.out.println("");
}
}
} finally {
reader.close();
}
}
}