package eu.project.ttc.test.termino.export;
import java.io.StringWriter;
import java.util.Collection;
import java.util.Locale;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import eu.project.ttc.api.TsvOptions;
import eu.project.ttc.models.Term;
import eu.project.ttc.models.TermIndex;
import eu.project.ttc.models.TermVariation;
import eu.project.ttc.termino.export.TsvExporter;
import eu.project.ttc.test.TermSuiteAssertions;
import eu.project.ttc.test.unit.TermFactory;
public class TsvExporterSpec {
TermIndex termIndex;
Collection<Term> terms;
Term term1, term2, term3;
StringWriter writer;
@Before
public void setup() {
termIndex = Mockito.mock(TermIndex.class);
term1 = TermFactory.termMock("t1", 1, 3, 0.8);
term2 = TermFactory.termMock("t2", 2, 1, 0.8);
term3 = TermFactory.termMock("t3", 3, 2, 1);
TermVariation tv = Mockito.mock(TermVariation.class);
Mockito.when(tv.getVariant()).thenReturn(term1);
Mockito.when(term3.getVariations()).thenReturn(Sets.newHashSet(tv));
terms = Lists.newArrayList(
term1,
term2,
term3
);
Mockito.when(termIndex.getTerms()).thenReturn(terms);
writer = new StringWriter();
defaultLocale = Locale.getDefault();
Locale.setDefault(Locale.ENGLISH);
}
Locale defaultLocale;
@After
public void tearDown() {
Locale.setDefault(defaultLocale);
}
@Test
public void testTsvExportNoScore() {
TsvExporter.export(termIndex, writer);
TermSuiteAssertions.assertThat(writer.toString())
.hasLineCount(5)
.tsvLineEquals(1, "#","type", "gkey", "f")
.tsvLineEquals(2, 1, "T", "t2", 2)
.tsvLineEquals(3, 2, "T", "t3", 3)
.tsvLineEquals(4, 2, "V", "t1", 1)
.tsvLineEquals(5, 3, "T", "t1", 1)
;
}
@Test
public void testTsvExportWithScores() {
TsvExporter.export(termIndex, writer, new TsvOptions().showScores(true));
TermSuiteAssertions.assertThat(writer.toString())
.hasLineCount(5)
.tsvLineEquals(1, "#","type", "gkey", "f")
.tsvLineEquals(2, 1, "T[]", "t2", 2)
.tsvLineEquals(3, 2, "T[]", "t3", 3)
.tsvLineEquals(4, 2, "V[0.00]", "t1", 1)
.tsvLineEquals(5, 3, "T[]", "t1", 1)
;
}
@Test
public void testTsvExportNoHeaders() {
TsvExporter.export(termIndex, writer, new TsvOptions().showHeaders(false));
TermSuiteAssertions.assertThat(writer.toString())
.hasLineCount(4)
.tsvLineEquals(1, 1, "T", "t2", 2)
.tsvLineEquals(2, 2, "T", "t3", 3)
.tsvLineEquals(3, 2, "V", "t1", 1)
.tsvLineEquals(4, 3, "T", "t1", 1)
;
}
@Test
public void testTsvExportNoVariant() {
TsvExporter.export(termIndex, writer, new TsvOptions().setShowVariants(false));
TermSuiteAssertions.assertThat(writer.toString())
.hasLineCount(4)
.tsvLineEquals(1, "#","type", "gkey", "f")
.tsvLineEquals(2, 1, "T", "t2", 2)
.tsvLineEquals(3, 2, "T", "t3", 3)
.tsvLineEquals(4, 3, "T", "t1", 1)
;
}
}