/* * $Id: CalendarBuilderTest.java [Apr 5, 2004] * * Copyright (c) 2004 Ben Fortuna */ package net.fortuna.ical4j.data; import junit.framework.AssertionFailedError; import junit.framework.TestCase; import net.fortuna.ical4j.FileOnlyFilter; import net.fortuna.ical4j.model.Calendar; import net.fortuna.ical4j.model.ValidationException; import net.fortuna.ical4j.util.CompatibilityHints; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Test case for CalendarBuilder. * * @author benf */ public class CalendarEqualsTest extends TestCase { /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ protected final void setUp() throws Exception { CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_UNFOLDING, true); } /* (non-Javadoc) * @see junit.framework.TestCase#tearDown() */ protected final void tearDown() throws Exception { CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_UNFOLDING, false); } public final void testValidFiles() throws Exception { List testFiles = new ArrayList(Arrays.asList(new File("etc/samples/valid").listFiles(new FileOnlyFilter()))); for (int i = 0; i < testFiles.size(); i++) { doTestCalendarEquals((File) testFiles.get(i), true); } } /** * * @param file * @param valid true if file is supposed to be valid * @throws Exception */ private void doTestCalendarEquals(File file, boolean valid) throws Exception { FileInputStream fin = new FileInputStream(file); CalendarBuilder builder = new CalendarBuilder(); Calendar calendar = null; boolean errorOccurred = false; Exception exception = null; try { calendar = builder.build(fin); } catch (IOException e) { exception = e; errorOccurred = true; } catch (ParserException e) { exception = e; errorOccurred = true; } if (errorOccurred) { if (valid) { throw new AssertionFailedError("Calendar file " + file.toString() + " isn't valid:\n" + exception.getMessage()); } } if (calendar != null) { try { calendar.validate(); } catch (ValidationException e) { exception = e; errorOccurred = true; } if (errorOccurred) { if (valid) { throw new AssertionFailedError("Calendar file " + file.toString() + " isn't valid:\n" + exception.getMessage()); } } else { if (! valid) { throw new AssertionFailedError("Calendar file " + file.toString() + " isn't valid and shouldn't validate."); } } fin = new FileInputStream(file); Calendar reparsedCalendar = null; try { reparsedCalendar = builder.build(fin); } catch (IOException e) { exception = e; errorOccurred = true; } catch (ParserException e) { exception = e; errorOccurred = true; } assertTrue("Parsed calendar isn't equal to itself! : " + file.toString(), calendar.equals(reparsedCalendar)); } } }