//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.annotators.patterns.data;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import uk.gov.dstl.baleen.types.language.WordToken;
import uk.gov.dstl.baleen.types.semantic.Entity;
@RunWith(MockitoJUnitRunner.Silent.class)
public class PatternExtractTest {
private PatternExtract pe;
@Mock
private Entity from;
@Mock
private Entity to;
@Mock
private WordToken token;
@Before
public void before() {
pe = new PatternExtract(from, to, 0, 10);
Mockito.when(token.getPartOfSpeech()).thenReturn("NN");
Mockito.when(token.getCoveredText()).thenReturn("token");
}
@Test
public void testFields() {
Assert.assertSame(from, pe.getFrom());
Assert.assertSame(to, pe.getTo());
Assert.assertSame(0, pe.getStart());
Assert.assertSame(10, pe.getEnd());
}
@Test
public void testFromNew() {
Assert.assertTrue(pe.isEmpty());
Assert.assertNull(pe.getWordTokens());
Assert.assertEquals("", pe.getText());
}
@Test
public void testSetWordTokens() {
final List<WordToken> list = new ArrayList<>();
pe.setWordTokens(list);
Assert.assertSame(list, pe.getWordTokens());
}
@Test
public void testContains() {
pe.setWordTokens(Collections.singletonList(token));
Assert.assertTrue(pe.contains("this is sample text", "is"));
Assert.assertFalse(pe.contains("this is sample text", "text"));
Assert.assertTrue(pe.contains("this is sample text", "text", "this"));
}
@Test
public void testGetText() {
pe.setWordTokens(Collections.singletonList(token));
Assert.assertEquals("token", pe.getText());
pe.setWordTokens(Arrays.asList(token, token));
Assert.assertEquals("token token", pe.getText());
}
@Test
public void testIsEmpty() {
pe.setWordTokens(Collections.singletonList(token));
Assert.assertFalse(pe.isEmpty());
pe.setWordTokens(Collections.emptyList());
Assert.assertTrue(pe.isEmpty());
}
}