// Copyright © 2011-2013, Esko Luontola <www.orfjackal.net>
// This software is released under the Apache License 2.0.
// The license text is at http://www.apache.org/licenses/LICENSE-2.0
package fi.jumi.core.ipc.buffer;
import org.junit.*;
import org.junit.rules.ExpectedException;
import java.nio.file.Paths;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
public class FileSegmenterTest {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Test
public void segment_path() {
FileSegmenter segmenter = new FileSegmenter(Paths.get("base"), 1, 1);
assertThat("segment 0", segmenter.pathOf(0), is(Paths.get("base")));
assertThat("segment 1", segmenter.pathOf(1), is(Paths.get("base.001")));
assertThat("segment 2", segmenter.pathOf(2), is(Paths.get("base.002")));
assertThat("segment 1000", segmenter.pathOf(1000), is(Paths.get("base.1000")));
}
@Test
public void segment_size() {
FileSegmenter segmenter = new FileSegmenter(Paths.get("base"), 10, 100);
assertThat("starts at initial size", segmenter.sizeOf(0), is(10));
assertThat("doubles for next segment", segmenter.sizeOf(1), is(20));
assertThat("doubles for next segment", segmenter.sizeOf(2), is(40));
assertThat("never goes over max size", segmenter.sizeOf(10), is(100));
}
@Test
public void max_size_must_be_equal_or_greater_than_initial_size() {
new FileSegmenter(Paths.get("base"), 10, 10); // OK
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("max size 9 was less than initial size 10");
new FileSegmenter(Paths.get("base"), 10, 9);
}
}