package hu.sztaki.ilab.longneck.process.block; import hu.sztaki.ilab.longneck.Field; import hu.sztaki.ilab.longneck.Record; import hu.sztaki.ilab.longneck.RecordImpl; import hu.sztaki.ilab.longneck.process.CheckError; import hu.sztaki.ilab.longneck.process.VariableSpace; import java.util.AbstractMap; import java.util.HashMap; import java.util.Map; 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 org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; /** * Test for Translate block. * @author Lukacs Gabor <lukacsg@sztaki.mta.hu> */ @ContextConfiguration(locations = {"classpath:/test-beans.xml" }) public class TranslateTest extends AbstractJUnit4SpringContextTests { public TranslateTest() { } @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { } @After public void tearDown() { } /** * Test Translate with ExternalDictionary. */ @Test public void testExternalDictionary() throws CheckError { Record record = new RecordImpl(); record.add(new Field("to", "")); record.add(new Field("from", "testkey2")); record.add(new Field("from2", "testkey3")); Translate translate = new Translate(); translate.setDictionary((Dictionary) applicationContext.getBean("external-dictionary")); // pozitive test translate.setApplyTo("to"); translate.setFrom("from"); translate.apply(record, null); assertEquals("Dictionary error, didn't translate field", "value2", record.get("to").getValue()); // negativ test translate.setFrom("from2"); try { translate.apply(record, null); fail("It should throw an CheckError."); } catch (CheckError e) { // expected behavior. } } /** * Test Translate with InlineDictionary. */ @Test public void testInlineDictionary() throws CheckError { Record record = new RecordImpl(); record.add(new Field("to", "")); record.add(new Field("from", "testkey2")); record.add(new Field("from2", "testkey3")); Translate translate = new Translate(); InlineDictionary inline = new InlineDictionary(); inline.addItem(new DictItem(new KeyType(".*(testkey[134]).*", true), "$1")); inline.addItem(new DictItem(new KeyType("testkey2", false), "value2")); translate.setDictionary(inline); // pozitive test translate.setApplyTo("to"); translate.setFrom("from"); translate.apply(record, null); assertEquals("Dictionary error, didn't translate field", "value2", record.get("to").getValue()); // negativ test translate.setFrom("from2"); try { translate.apply(record, null); fail("It should throw an CheckError."); } catch (CheckError e) { // expected behavior. } } /** * Test Translate with RegexpDictionary and ExternalDictionary. */ @Test public void testExternalRegexpDictionary() throws CheckError { Record record = new RecordImpl(); record.add(new Field("to", "")); record.add(new Field("from", "testkey2")); record.add(new Field("from2", "testkey3")); Translate translate = new Translate(); translate.setDictionary((Dictionary) applicationContext.getBean("regexp-dictionary")); // pozitive test translate.setApplyTo("to"); translate.setFrom("from"); translate.apply(record, null); assertEquals("Dictionary error, didn't translate field", "value2", record.get("to").getValue()); // regexp test translate.setFrom("from2"); translate.apply(record, null); assertEquals("Dictionary error, didn't translate field", "testkey3", record.get("to").getValue()); } /** * Test Translate with RegexpDictionary and InlineDictionary. */ @Test public void testInlineRegexpDictionary() throws CheckError { Record record = new RecordImpl(); record.add(new Field("to", "")); record.add(new Field("from", "testkey2")); record.add(new Field("from2", "testkey3")); Translate translate = new Translate(); InlineDictionary inline = new InlineDictionary(); inline.addItem(new DictItem(new KeyType(".*(testkey[134]).*", true), "$1")); inline.addItem(new DictItem(new KeyType("testkey2", false), "value2")); RegexpDictionary regexp = new RegexpDictionary(); regexp.setDictionary(inline); translate.setDictionary(regexp); // pozitive test translate.setApplyTo("to"); translate.setFrom("from"); translate.apply(record, null); assertEquals("Dictionary error, didn't translate field", "value2", record.get("to").getValue()); // regexp test translate.setFrom("from2"); translate.apply(record, null); assertEquals("Dictionary error, didn't translate field", "testkey3", record.get("to").getValue()); } }