package jfxtras.icalendarfx.calendar;
import static org.junit.Assert.assertEquals;
import java.io.BufferedReader;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.Test;
import jfxtras.icalendarfx.VCalendar;
import jfxtras.icalendarfx.content.UnfoldingStringIterator;
public class ReadICSFileTest
{
@Test
public void canReadICSFile1() throws IOException
{
String fileName = "Yahoo_Sample_Calendar.ics";
URL url = getClass().getResource(fileName);
Path icsFilePath = Paths.get(url.getFile());
// BufferedReader br = Files.newBufferedReader(icsFilePath);
// UnfoldingStringIterator unfoldedLineIterator = new UnfoldingStringIterator(br.lines().iterator());
// List<String> expectedLines = new ArrayList<>();
// unfoldedLineIterator.forEachRemaining(line -> expectedLines.add(line));
// String expectedUnfoldedContent = expectedLines.stream().collect(Collectors.joining(System.lineSeparator()));
// br.close();
// System.out.println(expectedUnfoldedContent);
boolean useResourceStatus = false;
VCalendar vCalendar = VCalendar.parseICalendarFile(icsFilePath, useResourceStatus);
// System.out.println(vCalendar);
assertEquals(7554, vCalendar.toString().length());
assertEquals(7, vCalendar.getVEvents().size());
assertEquals(1, vCalendar.getVTimeZones().size());
int subcomponents = vCalendar.getVTimeZones().get(0).getStandardOrDaylight().size();
assertEquals(9, subcomponents);
}
@Test
public void canReadICSFile2() throws IOException, InterruptedException
{
String fileName = "mathBirthdays.ics";
URL url = getClass().getResource(fileName);
Path icsFilePath = Paths.get(url.getFile());
BufferedReader br = Files.newBufferedReader(icsFilePath);
UnfoldingStringIterator unfoldedLineIterator = new UnfoldingStringIterator(br.lines().iterator());
List<String> expectedLines = new ArrayList<>();
unfoldedLineIterator.forEachRemaining(line -> expectedLines.add(line));
String expectedUnfoldedContent = expectedLines.stream().collect(Collectors.joining(System.lineSeparator()));
br.close();
long t1 = System.currentTimeMillis();
VCalendar vCalendar = VCalendar.parse(icsFilePath);
long t2 = System.currentTimeMillis();
// System.out.println(t2-t1);
long t3 = System.currentTimeMillis();
Iterator<String> contentIterator = Arrays.stream(vCalendar.toString().split(System.lineSeparator())).iterator();
UnfoldingStringIterator unfoldedContentLineIterator = new UnfoldingStringIterator(contentIterator);
List<String> contentLines = new ArrayList<>();
unfoldedContentLineIterator.forEachRemaining(line -> contentLines.add(line));
String unfoldedContent = contentLines.stream().collect(Collectors.joining(System.lineSeparator()));
long t4 = System.currentTimeMillis();
// System.out.println(t4-t3);
assertEquals(expectedUnfoldedContent, unfoldedContent);
assertEquals(13217, expectedLines.size());
}
}