package org.dcache.tests.util; import org.junit.Before; import org.junit.Test; import diskCacheV111.util.FsPath; import org.dcache.util.PrefixMap; import static org.junit.Assert.assertEquals; public class PrefixMapTest { private PrefixMap<Integer> _map; @Before public void setup() { _map = new PrefixMap<>(); _map.put(FsPath.create("/a"), 1); _map.put(FsPath.create("/a//b"), 2); _map.put(FsPath.create("/aa"), 3); _map.put(FsPath.create("/b/"), 4); } @Test public void lookup() { assertEquals(1, (int) _map.get(FsPath.create("/a"))); assertEquals(1, (int) _map.get(FsPath.create("/a/"))); assertEquals(1, (int) _map.get(FsPath.create("/a/bb"))); assertEquals(1, (int) _map.get(FsPath.create("/a//c"))); assertEquals(1, (int) _map.get(FsPath.create("/a/c/"))); assertEquals(1, (int) _map.get(FsPath.create("/a/c/d"))); assertEquals(2, (int) _map.get(FsPath.create("/a/b"))); assertEquals(2, (int) _map.get(FsPath.create("/a/b/"))); assertEquals(2, (int) _map.get(FsPath.create("/a/b/c"))); assertEquals(3, (int) _map.get(FsPath.create("/aa"))); assertEquals(3, (int) _map.get(FsPath.create("/aa//"))); assertEquals(3, (int) _map.get(FsPath.create("/aa/b"))); assertEquals(4, (int) _map.get(FsPath.create("/b"))); assertEquals(4, (int) _map.get(FsPath.create("/b/"))); assertEquals(4, (int) _map.get(FsPath.create("/b/a"))); assertEquals(null, _map.get(FsPath.create("/aaa"))); assertEquals(null, _map.get(FsPath.create("/"))); assertEquals(null, _map.get(FsPath.create("/c"))); assertEquals(null, _map.get(FsPath.create("/bb"))); } @Test public void allowRedundant() { _map.put(FsPath.create("/a/foo"), 1); } @Test public void replaceDuplicate() { _map.put(FsPath.create("/a/"), 5); assertEquals(5, (int) _map.get(FsPath.create("/a/foo"))); } @Test public void lookupEmptyMap() { PrefixMap<Object> map = new PrefixMap<>(); assertEquals(null, map.get(FsPath.create("/foo"))); } @Test(expected=IllegalArgumentException.class) public void failNullGet() { _map.get(null); } @Test(expected=IllegalArgumentException.class) public void failNullPut() { _map.put(null, 1); } @Test(expected=IllegalArgumentException.class) public void failNullValue() { _map.put(FsPath.create("/"), null); } @Test public void normalizeDot() { assertEquals(2, (int) _map.get(FsPath.create("/a/./b/"))); } @Test public void normalizeDotDot() { assertEquals(4, (int) _map.get(FsPath.create("/a/../b/c"))); } }