/*
* This file is part of the Illarion project.
*
* Copyright © 2014 - Illarion e.V.
*
* Illarion is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Illarion 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 General Public License for more details.
*/
package illarion.mapedit.data;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.Collection;
import java.util.HashMap;
/**
* @author Volker Jung
*/
public class MapSelectionTest {
private MapSelection mapSelection;
private MapTile tile;
@BeforeMethod
public void before() {
mapSelection = new MapSelection();
tile = createTile();
}
@Test
public void testInitialState() {
Collection<MapPosition> selectedPositions = mapSelection.getSelectedPositions();
Assert.assertNotNull(selectedPositions, "Collection of selected positions must not be null");
Assert.assertEquals(selectedPositions.size(), 0, "No position should be selected");
Assert.assertEquals(mapSelection.getOffsetX(), Integer.MAX_VALUE, "Expected offset equal to max. integer value");
Assert.assertEquals(mapSelection.getOffsetY(), Integer.MAX_VALUE, "Expected offset equal to max. integer value");
}
@Test
public void testAddSelectedTile() {
int horizontalPosition = 5;
int verticalPosition = 7;
addSelectedTileAt(horizontalPosition, verticalPosition);
Assert.assertEquals(mapSelection.getSelectedPositions().size(), 1);
Assert.assertEquals(mapSelection.getOffsetX(), horizontalPosition);
Assert.assertEquals(mapSelection.getOffsetY(), verticalPosition);
}
@Test
public void testSelectionVerticalOffsetAdjustment() {
addSelectedTileAt(5, 7);
addSelectedTileAt(6, 4);
Assert.assertEquals(mapSelection.getOffsetX(), 5);
Assert.assertEquals(mapSelection.getOffsetY(), 4);
Assert.assertEquals(mapSelection.getSelectedPositions().size(), 2);
}
@Test
public void testSelectionHorizontalOffsetAdjustment() {
addSelectedTileAt(7, 5);
addSelectedTileAt(4, 6);
Assert.assertEquals(mapSelection.getOffsetX(), 4);
Assert.assertEquals(mapSelection.getOffsetY(), 5);
Assert.assertEquals(mapSelection.getSelectedPositions().size(), 2);
}
@Test
public void testSelectionFullOffsetAdjustment() {
addSelectedTileAt(7, 5);
addSelectedTileAt(4, 6);
addSelectedTileAt(8, 3);
Assert.assertEquals(mapSelection.getOffsetX(), 4);
Assert.assertEquals(mapSelection.getOffsetY(), 3);
Assert.assertEquals(mapSelection.getSelectedPositions().size(), 3);
}
private MapTile createTile() {
return new MapTile(0, 0, 0, 0, null, null);
}
private void addSelectedTileAt(int x, int y) {
mapSelection.addSelectedTile(new MapPosition(x, y), tile);
}
}