/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.rf.ide.core.testdata.text.read; import static org.assertj.core.api.Assertions.assertThat; import java.io.BufferedReader; import java.io.StringReader; import java.util.List; import org.junit.Test; import org.rf.ide.core.testdata.model.FilePosition; import org.rf.ide.core.testdata.model.FileRegion; public class LineReaderTest { @Test public void test_differentLineEnds() { // prepare final StringReader textReader = new StringReader("test\rData\r\n"); final LineReader lineReader = new LineReader(textReader); flushAllDataToReader(lineReader); // execute final List<FileRegion> linesRegion = lineReader.getLinesRegion(); // verify assertThat(linesRegion).hasSize(3); final FileRegion fileRegion = linesRegion.get(0); assertThat(fileRegion.getStart().isSamePlace(new FilePosition(1, 0, 0))); assertThat(fileRegion.getEnd().isSamePlace(new FilePosition(1, 5, 5))); final FileRegion fileRegion2 = linesRegion.get(1); assertThat(fileRegion2.getStart().isSamePlace(new FilePosition(2, 0, 5))); assertThat(fileRegion2.getEnd().isSamePlace(new FilePosition(2, 6, 11))); final FileRegion fileRegion3 = linesRegion.get(1); assertThat(fileRegion3.getStart().isSamePlace(new FilePosition(3, 0, 11))); assertThat(fileRegion3.getEnd().isSamePlace(new FilePosition(3, 0, 11))); } @Test public void test_emptyLine_andAfterLineAndEOF() { // prepare final StringReader textReader = new StringReader("\r\nData"); final LineReader lineReader = new LineReader(textReader); flushAllDataToReader(lineReader); // execute final List<FileRegion> linesRegion = lineReader.getLinesRegion(); // verify assertThat(linesRegion).hasSize(2); final FileRegion fileRegion = linesRegion.get(0); assertThat(fileRegion.getStart().isSamePlace(new FilePosition(1, 0, 0))); assertThat(fileRegion.getEnd().isSamePlace(new FilePosition(1, 2, 2))); } @Test public void test_emptyLine() { // prepare final StringReader textReader = new StringReader(""); final LineReader lineReader = new LineReader(textReader); flushAllDataToReader(lineReader); // execute final List<FileRegion> linesRegion = lineReader.getLinesRegion(); // verify assertThat(linesRegion).hasSize(1); final FileRegion fileRegion = linesRegion.get(0); assertThat(fileRegion.getStart().isSamePlace(new FilePosition(1, 0, 0))); assertThat(fileRegion.getEnd().isSamePlace(new FilePosition(1, 0, 0))); } private void flushAllDataToReader(final LineReader lineReader) { try (BufferedReader br = new BufferedReader(lineReader)) { while (br.readLine() != null) { // do nothing } } catch (final Exception e) { // is not I/O } } }