package wikokit.base.wikt.multi.ru;
import wikokit.base.wikt.multi.ru.WTranslationEntryRu;
import wikokit.base.wikt.util.WikiText;
import wikokit.base.wikt.util.WikiWord;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import wikokit.base.wikt.word.WTranslationEntry;
public class WTranslationEntryRuTest {
public WTranslationEntryRuTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
// // translation box with empty spaces
/* samolyot_with_spaces = "=== Перевод ===\n" +
"{{перев-блок||\n" +
"| en = [[airplane]]\n" + // 0
"}}";
*/
/* samolyot_with_spaces
* "| en = [[airplane]]" instead of
"|en=[[airplane]]""
*/
@Test
public void testParse_parameters_with_spaces() {
System.out.println("parameters_with_spaces");
String page_title = "самолёт";
String text = " en = [[airplane]]";
WTranslationEntry result = WTranslationEntryRu.parse(page_title, text);
assertEquals(1, result.getWikiPhrases().length);
WikiText[] phrases = result.getWikiPhrases();
assertTrue(phrases[0].getVisibleText().equalsIgnoreCase( "airplane" ) );
WikiWord[] ww0 = phrases[0].getWikiWords();
assertEquals(1, ww0.length);
assertTrue(ww0[0].getWordVisible().equalsIgnoreCase( "airplane" ) );
assertTrue(ww0[0].getWordLink(). equalsIgnoreCase( "airplane" ) );
}
@Test
public void testParse_comma() {
System.out.println("parse_comma");
String page_title = "колокольчик";
String text = "en=[[little]] [[bell]], [[handbell]], [[doorbell]]";
WTranslationEntry result = WTranslationEntryRu.parse(page_title, text);
assertEquals(3, result.getWikiPhrases().length);
WikiText[] phrases = result.getWikiPhrases();
assertTrue(phrases[0].getVisibleText().equalsIgnoreCase( "little bell" ) );
WikiWord[] ww0 = phrases[0].getWikiWords();
assertEquals(2, ww0.length);
assertTrue(ww0[0].getWordVisible().equalsIgnoreCase( "little" ) );
assertTrue(ww0[0].getWordLink(). equalsIgnoreCase( "little" ) );
assertTrue(phrases[1].getVisibleText().equalsIgnoreCase( "handbell" ) );
assertTrue(phrases[2].getVisibleText().equalsIgnoreCase( "doorbell" ) );
text = "en=";
result = WTranslationEntryRu.parse(page_title, text);
assertNull(result);
text = "en= ";
result = WTranslationEntryRu.parse(page_title, text);
assertNull(result);
// without any warning, since there is no any translations after=
text = "unknown language=";
result = WTranslationEntryRu.parse(page_title, text);
assertEquals(null, result);
}
// Warning test: two unknown language codes, but only one Warning message
// should be printed!
@Test
public void testParse_two_unknown_language_codes() {
System.out.println("parse_two_unknown_language_codes: Attention! Should be only one warning about unknown language code!");
String page_title = "колокольчик";
String text = "en=[[little]] [[bell]], [[handbell]], [[doorbell]]";
// unknown language code "unknown"
text = "unknown=some text";
WTranslationEntry result = WTranslationEntryRu.parse(page_title, text);
assertEquals(null, result);
result = WTranslationEntryRu.parse(page_title, text);
assertNull(result);
}
}