package org.infinispan.lucene; import java.util.Arrays; import org.testng.AssertJUnit; import org.testng.annotations.Test; /** * Tests basic functionality of LuceneKey2StringMapper * @see LuceneKey2StringMapper * * @author Sanne Grinovero * @since 4.1 */ @Test(groups = "functional", testName = "lucene.Key2StringMapperTest") public class Key2StringMapperTest { final LuceneKey2StringMapper mapper = new LuceneKey2StringMapper(); @Test public void testRegex() { String[] split = LuceneKey2StringMapper.singlePipePattern.split("hello|world"); AssertJUnit.assertTrue(Arrays.deepEquals(new String[]{"hello", "world"}, split)); } @Test public void loadChunkCacheKey() { AssertJUnit.assertEquals(new ChunkCacheKey("my addressbook", "sgments0.gen", 34, 16000000, -1), mapper.getKeyMapping("C|sgments0.gen|34|16000000|my addressbook|-1")); } @Test public void loadFileCacheKey() { AssertJUnit.assertEquals(new FileCacheKey("poems and songs, 3000AC-2000DC", "filename.extension", -1), mapper.getKeyMapping("M|filename.extension|poems and songs, 3000AC-2000DC|-1")); } @Test public void loadFileListCacheKey() { AssertJUnit.assertEquals(new FileListCacheKey("", -1), mapper.getKeyMapping("*||-1")); AssertJUnit.assertEquals(new FileListCacheKey("the leaves of Amazonia", -1), mapper.getKeyMapping("*|the leaves of Amazonia|-1")); } @Test public void loadReadLockKey() { AssertJUnit.assertEquals(new FileReadLockKey("poems and songs, 3000AC-2000DC", "brushed steel lock", -1), mapper.getKeyMapping("RL|brushed steel lock|poems and songs, 3000AC-2000DC|-1")); } @Test(expectedExceptions=IllegalArgumentException.class) public void failureForIllegalKeys() { mapper.getKeyMapping("|*|the leaves of Amazonia"); } @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "Not supporting null keys") public void failureForNullKey() { mapper.getKeyMapping(null); } @Test(expectedExceptions = IllegalArgumentException.class) public void failureForNotFullKey() { mapper.getKeyMapping("sgments0.gen|34"); } @Test(expectedExceptions = IllegalArgumentException.class) public void failureForWrongFileCacheKey() { mapper.getKeyMapping("filename|M|5|indexname"); } @Test(expectedExceptions = IllegalArgumentException.class) public void failureForWrongChunkCacheKey() { mapper.getKeyMapping("filename|5a|5|indexname"); } @Test(expectedExceptions = IllegalArgumentException.class) public void failureForWrongFileReadLockKey() { mapper.getKeyMapping("filename|RL|5|indexname"); } @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "filename must not be null") public void testChunkCacheKeyInitWithNllFileName() { new ChunkCacheKey("index-A", null, 0, 1024, -1); } @Test public void testChunkCacheKeyComparison() { AssertJUnit.assertFalse("The object should not be equals to null.", new ChunkCacheKey("index-A", "fileName", 0, 1024, -1).equals(null)); AssertJUnit.assertFalse("The ChunkCacheKey objects should not be equal due to different file names.", new ChunkCacheKey("index-A", "fileName", 0, 1024, -1).equals(new ChunkCacheKey("index-A", "fileName1", 0, 1024, -1))); AssertJUnit.assertEquals("The ChunkCacheKey objects should be equal.", new ChunkCacheKey("index-A", "fileName", 0, 1024, -1), new ChunkCacheKey("index-A", "fileName", 0, 1024, -1)); } public void testIsSupportedType() { assert !mapper.isSupportedType(this.getClass()); assert mapper.isSupportedType(ChunkCacheKey.class); assert mapper.isSupportedType(FileCacheKey.class); assert mapper.isSupportedType(FileListCacheKey.class); assert mapper.isSupportedType(FileReadLockKey.class); } @Test(expectedExceptions=IllegalArgumentException.class) public void testReadLockKeyIndexNameNull() { FileReadLockKey key = new FileReadLockKey(null, "brushed steel lock", -1); } @Test(expectedExceptions = IllegalArgumentException.class) public void testReadLockKeyFileNameNull() { FileReadLockKey key = new FileReadLockKey("poems and songs, 3000AC-2000DC", null, -1); } public void testReadLockEqualsWithNullOrNotEqualObj() { FileReadLockKey key = new FileReadLockKey("poems and songs, 3000AC-2000DC", "brushed steel lock", -1); AssertJUnit.assertNotNull(key); AssertJUnit.assertFalse(new FileReadLockKey("poems and songs, 3000AC-2000DC", "brushed lock", -1) .equals(mapper.getKeyMapping("RL|brushed steel lock|poems and songs, 3000AC-2000DC|-1"))); } @Test public void testFileListCacheKeyComparison() { AssertJUnit.assertFalse("The instance of FileListCacheKey should not be equal to null.", new FileListCacheKey("index-A", -1).equals(null)); AssertJUnit.assertFalse("The instance of FileListCacheKey should not be equal to FileCacheKey instance.", new FileListCacheKey("index-A", -1).equals(new FileCacheKey("index-A", "test.txt", -1))); } @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "filename must not be null") public void testFileCacheKeyInit() { new FileCacheKey("poems and songs, 3000AC-2000DC", null, -1); } @Test public void testFileCacheKeyCompWithNull() { AssertJUnit.assertFalse("The Instance of FileCacheKey should not be equal to null.", new FileCacheKey("poems and songs, 3000AC-2000DC", "fileName.txt", -1).equals(null)); } }