// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.dialogs.validator;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;
import org.junit.Rule;
import org.junit.Test;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
import org.openstreetmap.josm.data.validation.Severity;
import org.openstreetmap.josm.data.validation.TestError;
import org.openstreetmap.josm.testutils.JOSMTestRules;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
/**
* Unit tests of {@link ValidatorTreePanel} class.
*/
public class ValidatorTreePanelTest {
/**
* Setup tests
*/
@Rule
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
public JOSMTestRules test = new JOSMTestRules().preferences();
/**
* Unit test of {@link ValidatorTreePanel#ValidatorTreePanel}.
*/
@Test
public void testValidatorTreePanel() {
assertNotNull(new ValidatorTreePanel());
ValidatorTreePanel vtp = new ValidatorTreePanel(new ArrayList<>(Arrays.asList(
TestError.builder(null, Severity.ERROR, 0)
.message("err")
.primitives(new Node(1))
.build(),
TestError.builder(null, Severity.WARNING, 0)
.message("warn", "foo")
.primitives(new Node(2))
.build(),
TestError.builder(null, Severity.WARNING, 0)
.message("warn", "bar")
.primitives(new Node(2))
.build())));
assertNotNull(vtp);
final Enumeration<?> nodes = vtp.getRoot().breadthFirstEnumeration();
assertEquals("", nodes.nextElement().toString());
assertEquals("Errors (1)", nodes.nextElement().toString());
assertEquals("Warnings (2)", nodes.nextElement().toString());
assertEquals("err (1)", nodes.nextElement().toString());
assertEquals("warn (2)", nodes.nextElement().toString());
nodes.nextElement();
assertEquals("bar (1)", nodes.nextElement().toString());
assertEquals("foo (1)", nodes.nextElement().toString());
vtp.setVisible(true);
vtp.setVisible(false);
Node n = new Node(10);
vtp.setErrors(Arrays.asList(TestError.builder(null, Severity.ERROR, 0)
.message("")
.primitives(n)
.build()));
assertEquals(1, vtp.getErrors().size());
vtp.selectRelatedErrors(Collections.<OsmPrimitive>singleton(n));
vtp.expandAll();
assertNotNull(vtp.getRoot());
vtp.resetErrors();
Set<? extends OsmPrimitive> filter = new HashSet<>(Arrays.asList(n));
vtp.setFilter(filter);
assertEquals(filter, vtp.getFilter());
vtp.setFilter(new HashSet<OsmPrimitive>());
assertNull(vtp.getFilter());
vtp.setFilter(null);
assertNull(vtp.getFilter());
vtp.destroy();
}
}