blob: 9541187311595ec05d97ac9dd3c678c506e95e68 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2012 Wind River Systems, Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Martin Oberhuber (Wind River) - initial API and implementation for [105554]
*******************************************************************************/
package org.eclipse.core.tests.internal.localstore;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.internal.localstore.PrefixPool;
import org.eclipse.core.tests.harness.CoreTest;
public class PrefixPoolTest extends CoreTest {
public static Test suite() {
return new TestSuite(PrefixPoolTest.class);
}
public PrefixPoolTest(String name) {
super(name);
}
public void testIllegalCapacity() {
boolean exceptionOK=true;
try {
new PrefixPool(0);
exceptionOK=false;
} catch(IllegalArgumentException e) {
/*ignore, exception is expected*/
}
assertTrue(exceptionOK);
try {
new PrefixPool(-1);
exceptionOK=false;
} catch(IllegalArgumentException e) {
/*ignore, exception is expected*/
}
assertTrue(exceptionOK);
}
public void testPrefixPool() {
PrefixPool p = new PrefixPool(1);
assertFalse(p.containsAsPrefix(""));
assertFalse(p.containsAsPrefix("/a"));
assertFalse(p.hasPrefixOf("/a"));
boolean rv=p.insertShorter("/a/");
assertFalse(rv);
p.insertLonger("/a/b/"); //overrides /a/
assertEquals(1, p.size());
p.insertLonger("/A/");
assertEquals(2, p.size());
p.insertLonger("/"); //shorter than /A/ --> no-op
assertEquals(2, p.size());
assertFalse(p.hasPrefixOf("/c"));
rv=p.insertShorter("/a/b/c/"); //longer than /a/b/ --> no-op
assertFalse(rv);
assertEquals(2, p.size());
p.insertLonger("/a/B/c/"); //no override
assertEquals(3, p.size());
p.insertShorter("/a/B/"); //overrides
assertEquals(3, p.size());
//we now have: /a/b/, /A/, /a/B/
assertTrue(p.hasPrefixOf("/a/B/"));
assertTrue(p.hasPrefixOf("/a/b/c/d/"));
assertFalse(p.hasPrefixOf("/"));
assertTrue(p.containsAsPrefix("/a/B"));
assertTrue(p.containsAsPrefix("/a/b/"));
assertTrue(p.containsAsPrefix(""));
assertFalse(p.containsAsPrefix("/a/b//"));
assertFalse(p.containsAsPrefix("/A/B/"));
assertEquals(3, p.size());
p.clear();
assertEquals(0, p.size());
assertFalse(p.hasPrefixOf(""));
assertFalse(p.containsAsPrefix(""));
}
}