package org.limewire.swarm.file; import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; import junit.framework.Assert; import junit.framework.Test; import org.limewire.util.BaseTestCase; import org.limewire.util.FileUtils; import org.limewire.util.StringUtils; public class SwarmFileSystemImplTest extends BaseTestCase { private final File TEST_DIR; public SwarmFileSystemImplTest(String name) { super(name); this.TEST_DIR = new File(System.getProperty("java.io.tmpdir") + "/limetests/"); } public static Test suite() { return buildTestSuite(SwarmFileSystemImplTest.class); } @Override protected void tearDown() throws Exception { FileUtils.deleteRecursive(TEST_DIR); } public void testGetCompleteSize() throws Exception { SwarmFileSystemImpl swarmFileSystem = new SwarmFileSystemImpl(); File file1 = createFile("testGetCompleteSize.1.txt"); swarmFileSystem.addSwarmFile(new SwarmFileImpl(file1, 1024)); Assert.assertEquals(1024, swarmFileSystem.getCompleteSize()); File file2 = createFile("testGetCompleteSize.2.txt"); swarmFileSystem.addSwarmFile(new SwarmFileImpl(file2, 1023)); swarmFileSystem.close(); Assert.assertEquals(2047, swarmFileSystem.getCompleteSize()); } private File createFile(String fileName) { TEST_DIR.mkdirs(); File file = new File(TEST_DIR.getAbsolutePath() + "/" + fileName); file.delete(); file.deleteOnExit(); return file; } public void testWrite1() throws IOException { SwarmFileSystemImpl swarmFileSystem = new SwarmFileSystemImpl(); File file1 = createFile("testWrite.1.txt"); swarmFileSystem.addSwarmFile(new SwarmFileImpl(file1, 1024)); String testWrite1 = "testWrite File 1"; ByteBuffer byteBuffer = ByteBuffer.allocate(testWrite1.length()); byteBuffer.put(StringUtils.toAsciiBytes(testWrite1)); byteBuffer.flip(); swarmFileSystem.write(byteBuffer, 0); swarmFileSystem.close(); Assert.assertTrue(file1.exists()); Assert.assertEquals(testWrite1.length(), file1.length()); Assert.assertEquals(testWrite1, StringUtils.getASCIIString(FileUtils.readFileFully(file1))); } public void testRead1() throws IOException { SwarmFileSystemImpl swarmFileSystem = new SwarmFileSystemImpl(); File fileWrite1 = createFile("testWrite.1.txt"); swarmFileSystem.addSwarmFile(new SwarmFileImpl(fileWrite1, 1024)); String testWrite1 = "testWrite File 1"; ByteBuffer byteBuffer = ByteBuffer.allocate(testWrite1.length()); byteBuffer.put(StringUtils.toAsciiBytes(testWrite1)); byteBuffer.flip(); swarmFileSystem.write(byteBuffer, 0); swarmFileSystem.close(); SwarmFileSystemImpl swarmFileSystem2 = new SwarmFileSystemImpl(); swarmFileSystem2.addSwarmFile(new SwarmFileImpl(fileWrite1, 1024)); byteBuffer.flip(); swarmFileSystem2.read(byteBuffer, 0); swarmFileSystem2.close(); Assert.assertTrue(fileWrite1.exists()); Assert.assertEquals(testWrite1.length(), byteBuffer.position()); Assert.assertEquals(testWrite1, StringUtils.getASCIIString(byteBuffer.array())); } public void testWriteMulti() throws IOException { SwarmFileSystemImpl swarmFileSystem = new SwarmFileSystemImpl(); File file1 = createFile("testWriteMulti.1.txt"); swarmFileSystem.addSwarmFile(new SwarmFileImpl(file1, 10)); File file2 = createFile("testWriteMulti.2.txt"); swarmFileSystem.addSwarmFile(new SwarmFileImpl(file2, 6)); String testWrite1 = "testWrite File 1"; ByteBuffer byteBuffer = ByteBuffer.allocate(testWrite1.length()); byteBuffer.put(StringUtils.toAsciiBytes(testWrite1)); byteBuffer.flip(); swarmFileSystem.write(byteBuffer, 0); swarmFileSystem.close(); Assert.assertTrue(file1.exists()); Assert.assertEquals(10, file1.length()); Assert .assertEquals(testWrite1.substring(0, 10), StringUtils.getASCIIString(FileUtils .readFileFully(file1))); Assert.assertTrue(file2.exists()); Assert.assertEquals(6, file2.length()); Assert.assertEquals(testWrite1.substring(10, 16), StringUtils.getASCIIString(FileUtils.readFileFully(file2))); } public void testWriteMultiPartial() throws IOException { SwarmFileSystemImpl swarmFileSystem = new SwarmFileSystemImpl(); File file1 = createFile("testWriteMultiPartial.1.txt"); swarmFileSystem.addSwarmFile(new SwarmFileImpl(file1, 10)); File file2 = createFile("testWriteMultiPartial.2.txt"); swarmFileSystem.addSwarmFile(new SwarmFileImpl(file2, 6)); String testWrite1 = "File 1"; ByteBuffer byteBuffer = ByteBuffer.allocate(testWrite1.length()); byteBuffer.put(StringUtils.toAsciiBytes(testWrite1)); byteBuffer.flip(); swarmFileSystem.write(byteBuffer, 10); swarmFileSystem.close(); Assert.assertFalse(file1.exists()); Assert.assertEquals(0, file1.length()); Assert.assertTrue(file2.exists()); Assert.assertEquals(6, file2.length()); Assert.assertEquals(testWrite1, StringUtils.getASCIIString(FileUtils.readFileFully(file2))); } }