blob: 3419bcbebbb914dad88d154d439df0e29552cc77 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2017 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Alexander Kurtakov <akurtako@redhat.com> - Bug 459343
*******************************************************************************/
package org.eclipse.core.tests.resources;
import java.util.Arrays;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.internal.resources.*;
import org.eclipse.core.resources.IMarker;
public class MarkerSetTest extends ResourceTest {
/**
* Need a zero argument constructor to satisfy the test harness.
* This constructor should not do any real work nor should it be
* called by user code.
*/
public MarkerSetTest() {
super();
}
/**
* Creates a new markers test.
*/
public MarkerSetTest(String name) {
super(name);
}
public void assertEquals(String message, IMarkerSetElement[] array1, IMarkerSetElement[] array2) {
assertNotNull(message, array1);
assertNotNull(message, array2);
assertEquals(message, array1.length, array2.length);
IMarkerSetElement[] m1 = new IMarkerSetElement[array1.length];
System.arraycopy(array1, 0, m1, 0, array1.length);
IMarkerSetElement[] m2 = new IMarkerSetElement[array2.length];
System.arraycopy(array2, 0, m2, 0, array2.length);
java.util.Comparator<IMarkerSetElement> compare = (e1, e2) -> {
long id1 = e1.getId();
long id2 = e2.getId();
if (id1 == id2) {
return 0;
}
return id1 < id2 ? -1 : 1;
};
Arrays.sort(m1, compare);
Arrays.sort(m2, compare);
for (int i = 0; i < m1.length; i++) {
assertEquals(message, m1[i].getId(), m2[i].getId());
}
}
/**
* Configures the markers test suite.
*/
public static Test suite() {
return new TestSuite(MarkerSetTest.class);
//TestSuite suite = new TestSuite();
//suite.addTest(new MarkerSetTest("_testPR"));
//return suite;
}
public void testAdd() {
// create the objects to insert into the set
MarkerSet set = new MarkerSet();
int max = 100;
MarkerInfo info = null;
MarkerInfo[] infos = new MarkerInfo[max];
for (int i = 0; i < max; i++) {
info = new MarkerInfo();
info.setId(i);
info.setType(IMarker.PROBLEM);
info.setAttribute(IMarker.MESSAGE, getRandomString(), true);
infos[i] = info;
}
// add each info to the set
for (int i = 0; i < infos.length; i++) {
info = infos[i];
set.add(info);
assertTrue("2.0." + i, set.contains(info.getId()));
assertEquals("2.1." + i, i + 1, set.size());
}
// make sure they are all still there
assertEquals("3.0", max, set.size());
for (int i = 0; i < infos.length; i++) {
info = infos[i];
assertTrue("3.1." + i, set.contains(info.getId()));
assertNotNull("3.2." + i, set.get(info.getId()));
}
}
public void testElements() {
// populate the set
MarkerSet set = new MarkerSet();
int max = 100;
MarkerInfo info = null;
MarkerInfo[] infos = new MarkerInfo[max];
for (int i = 0; i < max; i++) {
info = new MarkerInfo();
info.setId(i);
info.setType(IMarker.PROBLEM);
info.setAttribute(IMarker.MESSAGE, getRandomString(), true);
infos[i] = info;
}
set.addAll(infos);
assertEquals("1.0", max, set.size());
// remove each element
assertEquals("2.0", set.elements(), infos);
}
public void testRemove() {
// populate the set
MarkerSet set = new MarkerSet();
int max = 100;
MarkerInfo info = null;
MarkerInfo[] infos = new MarkerInfo[max];
for (int i = 0; i < max; i++) {
info = new MarkerInfo();
info.setId(i);
info.setType(IMarker.PROBLEM);
info.setAttribute(IMarker.MESSAGE, getRandomString(), true);
infos[i] = info;
}
set.addAll(infos);
assertEquals("1.0", max, set.size());
// remove each element
for (int i = max - 1; i >= 0; i--) {
info = infos[i];
set.remove(info);
assertTrue("2.0." + i, !set.contains(info.getId()));
assertEquals("2.1," + i, i, set.size());
// check that the others still exist
for (int j = 0; j < i; j++) {
assertTrue("2.2." + j, set.contains(infos[j].getId()));
}
}
// all gone?
assertEquals("3.0", 0, set.size());
}
}