package org.mp4parser.muxer;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.Channels;
public class MultiFileDataSourceImplTest {
File a;
File b;
File c;
@Before
public void setUp() throws Exception {
a = File.createTempFile("MultiFileDataSourceImplTest", "aaa");
write(a, "aaaaaaaaaa");
b = File.createTempFile("MultiFileDataSourceImplTest", "bbb");
write(b, "bbbbbbbbbb");
c = File.createTempFile("MultiFileDataSourceImplTest", "ccc");
write(c, "cccccccccc");
}
@Test
public void testWithIn() throws Exception {
DataSource ds = new MultiFileDataSourceImpl(a, b, c);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Assert.assertEquals("a", check(ds, 0, 1));
Assert.assertEquals("aa", check(ds, 0, 2));
Assert.assertEquals("a", check(ds, 1, 1));
Assert.assertEquals("aa", check(ds, 1, 2));
Assert.assertEquals("aaaaaaaaaa", check(ds, 0, 10));
Assert.assertEquals("aaaaaaaaaab", check(ds, 0, 11));
Assert.assertEquals("aaaaaaab", check(ds, 3, 8));
Assert.assertEquals("aaaaabbbbbbbbbbccccc", check(ds, 5, 20));
}
public String check(DataSource ds, int a, int b) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ds.transferTo(a, b, Channels.newChannel(baos));
String result = new String(baos.toByteArray());
System.err.println(result);
return result;
}
@After
public void tearDown() throws Exception {
a.deleteOnExit();
b.deleteOnExit();
c.deleteOnExit();
}
private void write(File f, String text) throws IOException {
FileOutputStream fos = new FileOutputStream(f);
fos.write(text.getBytes());
fos.close();
}
}