package marytts.signalproc.analysis;
import java.io.InputStreamReader;
import java.util.Arrays;
import marytts.util.data.text.XwavesLabelfileReader;
import marytts.util.io.FileUtils;
import org.junit.Test;
import static org.junit.Assert.*;
public class LabelsTest {
private Label[] createTestLabels() {
Label[] items = new Label[5];
for (int i = 0; i < items.length; i++) {
items[i] = new Label(0.01 * i, 0, "a" + i, 0);
}
return items;
}
@Test
public void canReadLabFile() throws Exception {
Labels l = new Labels(getClass().getResourceAsStream("pop001.lab"));
assertEquals(10, l.items.length);
}
@Test
public void labelArrayConstructor() {
Label[] items = createTestLabels();
Labels l = new Labels(items);
assertNotSame(l.items, items);
assertArrayEquals(l.items, items);
}
@Test
public void lineArrayConstructor() throws Exception {
String[] lines = FileUtils.getStreamAsString(getClass().getResourceAsStream("pop001.lab"), "ASCII").split("\n");
Labels l = new Labels(lines);
assertEquals(10, l.items.length);
}
@Test
public void copyConstructor() {
Labels l1 = new Labels(createTestLabels());
Labels l2 = new Labels(l1);
assertNotSame(l1.items, l2.items);
assertEquals(l1, l2);
}
@Test
public void indexFromTime() {
Labels l = new Labels(createTestLabels());
assertEquals(2, l.getLabelIndexAtTime(0.019));
}
@Test
public void canReadWithXwavesLabelfileReader() throws Exception {
Labels l = new Labels(getClass().getResourceAsStream("pop001.lab"));
XwavesLabelfileReader xr = new XwavesLabelfileReader(new InputStreamReader(getClass().getResourceAsStream("pop001.lab"),
"ASCII"));
Labels xl = xr.getLabels();
assertEquals(l.items.length, xl.items.length);
assertArrayEquals(l.items, xl.items);
assertEquals(l, xl);
assertArrayEquals(l.getLabelSymbols(), xl.getLabelSymbols());
}
}