/* * 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.model; import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Test; import org.rf.ide.core.testdata.text.read.recognizer.RobotToken; /** * @author wypych */ public class FileRegionSplitterTest { @Test public void givenEmptyList_whenCallSplitter_thenShouldReturnUnsetFileRegion() { // given List<RobotToken> tokens = new ArrayList<>(0); // when List<FileRegion> splitContinouesRegions = new FileRegion.FileRegionSplitter().splitContinuousRegions(tokens); // then assertThat(splitContinouesRegions).hasSize(1); FileRegion fileRegion = splitContinouesRegions.get(0); assertThat(fileRegion.getStart().isSamePlace(FilePosition.createNotSet())).isTrue(); assertThat(fileRegion.getEnd().isSamePlace(FilePosition.createNotSet())).isTrue(); } @Test public void givenListWithNotSetElement_whenCallSplitter_thenShouldReturnUnsetFileRegion() { // given List<RobotToken> tokens = Arrays.asList(RobotToken.create("")); // when List<FileRegion> splitContinouesRegions = new FileRegion.FileRegionSplitter().splitContinuousRegions(tokens); // then assertThat(splitContinouesRegions).hasSize(1); FileRegion fileRegion = splitContinouesRegions.get(0); assertThat(fileRegion.getStart().isSamePlace(FilePosition.createNotSet())).isTrue(); assertThat(fileRegion.getEnd().isSamePlace(FilePosition.createNotSet())).isTrue(); } @Test public void givenListWithElementWithPosition_whenCallSplitter_thenShouldReturn_positionOfThisToken() { // given final RobotToken token = RobotToken.create("foobar"); token.setStartOffset(10); token.setLineNumber(11); token.setStartColumn(12); List<RobotToken> tokens = Arrays.asList(token); // when List<FileRegion> splitContinouesRegions = new FileRegion.FileRegionSplitter().splitContinuousRegions(tokens); // then assertThat(splitContinouesRegions).hasSize(1); FileRegion fileRegion = splitContinouesRegions.get(0); assertThat(fileRegion.getStart().isSamePlace(token.getFilePosition())).isTrue(); assertThat(fileRegion.getEnd() .isSamePlace(new FilePosition(token.getLineNumber(), token.getEndColumn(), token.getEndOffset()))) .isTrue(); } @Test public void givenListWithThreeElementsWithPositionInSameLine_whenCallSplitter_thenShouldReturn_positionOfFirst_andLastToken() { // given final RobotToken tokenOne = RobotToken.create("foobar"); tokenOne.setStartOffset(10); tokenOne.setLineNumber(11); tokenOne.setStartColumn(12); final RobotToken tokenTwo = RobotToken.create("foobar2"); tokenTwo.setStartOffset(tokenOne.getEndOffset() + 1); tokenTwo.setLineNumber(tokenOne.getLineNumber()); tokenTwo.setStartColumn(tokenOne.getEndColumn() + 1); final RobotToken tokenThree = RobotToken.create("foobar3"); tokenThree.setStartOffset(tokenTwo.getEndOffset() + 1); tokenThree.setLineNumber(tokenTwo.getLineNumber()); tokenThree.setStartColumn(tokenTwo.getEndColumn() + 1); List<RobotToken> tokens = Arrays.asList(tokenThree, tokenTwo, tokenOne); // when List<FileRegion> splitContinouesRegions = new FileRegion.FileRegionSplitter().splitContinuousRegions(tokens); // then assertThat(splitContinouesRegions).hasSize(1); FileRegion fileRegion = splitContinouesRegions.get(0); assertThat(fileRegion.getStart().isSamePlace(tokenOne.getFilePosition())).isTrue(); assertThat(fileRegion.getEnd().isSamePlace( new FilePosition(tokenThree.getLineNumber(), tokenThree.getEndColumn(), tokenThree.getEndOffset()))) .isTrue(); } @Test public void givenListWithThreeElementsWithPositions_andOneOnDifferentLine_whenCallSplitter_thenShouldReturn_threeRegions() { // given final RobotToken tokenOne = RobotToken.create("foobar"); tokenOne.setStartOffset(10); tokenOne.setLineNumber(11); tokenOne.setStartColumn(12); final RobotToken tokenTwo = RobotToken.create("foobar2"); tokenTwo.setStartOffset(tokenOne.getEndOffset() + 1); tokenTwo.setLineNumber(tokenOne.getLineNumber() + 1); tokenTwo.setStartColumn(tokenOne.getEndColumn() + 1); final RobotToken tokenThree = RobotToken.create("foobar3"); tokenThree.setStartOffset(tokenTwo.getEndOffset() + 1); tokenThree.setLineNumber(tokenTwo.getLineNumber() + 3); tokenThree.setStartColumn(tokenTwo.getEndColumn() + 1); List<RobotToken> tokens = Arrays.asList(tokenThree, tokenTwo, tokenOne); // when List<FileRegion> splitContinouesRegions = new FileRegion.FileRegionSplitter().splitContinuousRegions(tokens); // then assertThat(splitContinouesRegions).hasSize(2); FileRegion fileRegionOne = splitContinouesRegions.get(0); assertThat(fileRegionOne.getStart().isSamePlace(tokenOne.getFilePosition())).isTrue(); assertThat(fileRegionOne.getEnd().isSamePlace( new FilePosition(tokenTwo.getLineNumber(), tokenTwo.getEndColumn(), tokenTwo.getEndOffset()))).isTrue(); FileRegion fileRegionTwo = splitContinouesRegions.get(1); assertThat(fileRegionTwo.getStart().isSamePlace(tokenThree.getFilePosition())).isTrue(); assertThat(fileRegionTwo.getEnd().isSamePlace( new FilePosition(tokenThree.getLineNumber(), tokenThree.getEndColumn(), tokenThree.getEndOffset()))) .isTrue(); } }