package org.krakenapps.util.directoryfile.test;
import static org.junit.Assert.*;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.junit.Test;
import org.krakenapps.util.directoryfile.DirectoryFileArchive;
import org.krakenapps.util.directoryfile.SplitDirectoryFileOutputStream;
public class SingletonTest {
@Test
public void test1() throws IOException {
String testDir = "SingletonTest/test1";
new File("SingletonTest").deleteOnExit();
new File("SingletonTest/test1").deleteOnExit();
DirectoryFileArchive dfa = DirectoryFileArchive.open(testDir);
SplitDirectoryFileOutputStream os = new SplitDirectoryFileOutputStream(1024, dfa, new File(testDir, "/segment"));
Random r = new Random();
ArrayList<Integer> numbers = new ArrayList<Integer>();
writeRandomNumbers(573, numbers, os);
dfa.close();
os.close();
os = null;
dfa = null;
for(int i = 0; i < 10; ++i) {
System.gc();
}
new File("SingletonTest/test1/test1.jdi").deleteOnExit();
boolean deleted = new File(testDir, "/test1.jdf").delete();
if (!deleted) {
assertTrue(false);
}
}
private void writeRandomNumbers(int count, List<Integer> numbers, SplitDirectoryFileOutputStream sfos) throws IOException {
Random r = new Random();
ByteBuffer buf = ByteBuffer.allocate(1024);
for (int i = 0; i < count; ++i) {
int rn = r.nextInt();
if (numbers != null)
numbers.add(rn);
if (buf.remaining() < 4) {
sfos.write(buf.array(), 0, buf.position());
buf.clear();
}
buf.putInt(rn);
}
sfos.write(buf.array(), 0, buf.position());
}
}