package org.xbib.io.compress.bzip2;
import static org.junit.Assert.*;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.junit.Test;
/**
* Tests BZip2DivSufSort
*/
public class BZip2DivSufSortTests {
/**
* Tests a bug whereby trIntroSort() doesn't terminate
* @throws java.io.IOException
*/
@Test(timeout=2000)
public void testBug1() throws IOException {
String expectedData =
"dddddddddeeeeeeeeesssssssssyyyyyyyyy,,,,,,,,,eeeeeeeeeaaaaaaaaassssssssseeeeeeeeesss" +
"ssssssbbbbbbbbbwwwwwwwww hhhhhhhhhlllllllllMMMMMMMMM wwwwwwwwwmmmmmm" +
"mmmeeeeeeeeeaaaaaaaaatttttttttlllllllllccccccccceeeeeeeeelllllllll " +
"wwwwwwwwwhhhhhhhhh lllllllll tttttttttfffffffff aaaaaaaaasss" +
"ssssssnnnnnnnnnaaaaaaaaatttttttttaaaaaaaaaaaaaaaaaa iiiiiiiiitttttttttiiiiii" +
"iiiiiiiiiiiiooooooooo rrrrrrrrr ";
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
for (int i = 0; i < 9; i++) {
outputStream.write ("Mary had a little lamb, its fleece was white as snow".getBytes());
}
outputStream.write(0);
byte[] input = outputStream.toByteArray();
input[input.length - 1] = input[0];
int[] output = new int[input.length];
new BZip2DivSufSort(input, output, input.length - 1).bwt();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < output.length; i++) {
sb.append ((char)output[i]);
}
assertEquals (expectedData, sb.toString());
}
}