package hu.sztaki.ilab.longneck.process.task; import java.util.ArrayList; import java.util.List; import java.util.Properties; import hu.sztaki.ilab.longneck.Field; import hu.sztaki.ilab.longneck.RecordImplForTest; import hu.sztaki.ilab.longneck.TestCase; import hu.sztaki.ilab.longneck.bootstrap.CompactProcess; import hu.sztaki.ilab.longneck.bootstrap.Repository; import hu.sztaki.ilab.longneck.process.FrameAddressResolver; import hu.sztaki.ilab.longneck.process.LongneckProcess; import hu.sztaki.ilab.longneck.process.block.Block; import hu.sztaki.ilab.longneck.process.block.CloneRecord; import hu.sztaki.ilab.longneck.process.block.SetNull; import org.junit.*; import static org.junit.Assert.*; /** * * @author Geszler Döme <gdome@ilab.sztaki.hu> */ public class ProcessTesterTest { @Test public void testTesterBySetNullExample() { // Init process FrameAddressResolver frameAddressResolver = new FrameAddressResolver(); Properties runtimeProperties = new Properties(); Repository repository = new Repository(); LongneckProcess process = new LongneckProcess(); // Init blocks SetNull snBlock = new SetNull(); List<String> fieldNames = new ArrayList<String>(); fieldNames.add("id"); snBlock.setApplyTo(fieldNames); List<Block> blocks = new ArrayList<Block>(); blocks.add(snBlock); process.setBlocks(blocks); // Set test cases TestCase testCase = new TestCase(); RecordImplForTest sourceRecord = new RecordImplForTest(); sourceRecord.setRole("source"); sourceRecord.add(new Field("id", "42")); testCase.addRecord(sourceRecord); RecordImplForTest targetRecord = new RecordImplForTest(); targetRecord.setRole("target"); targetRecord.add(new Field("id", null)); testCase.addRecord(targetRecord); List<TestCase> testCases = new ArrayList<TestCase>(); testCases.add(testCase); process.setTestCases(testCases); CompactProcess cProcess = new CompactProcess(process, repository, frameAddressResolver, runtimeProperties); ProcessTester tester = new ProcessTester(cProcess, true); assertTrue(tester.testAll()); // Add a test that fails TestCase testCase2 = new TestCase(); RecordImplForTest sourceRecord2 = new RecordImplForTest(); sourceRecord2.setRole("source"); sourceRecord2.add(new Field("id", "42")); testCase2.addRecord(sourceRecord2); RecordImplForTest targetRecord2 = new RecordImplForTest(); targetRecord2.setRole("target"); targetRecord2.add(new Field("id", "42")); testCase2.addRecord(targetRecord2); testCases.add(testCase2); assertFalse(tester.testAll()); } @Test public void testTesterByClone() { // Init process FrameAddressResolver frameAddressResolver = new FrameAddressResolver(); Properties runtimeProperties = new Properties(); Repository repository = new Repository(); LongneckProcess process = new LongneckProcess(); // Init blocks CloneRecord clBlock = new CloneRecord(); List<Block> blocks = new ArrayList<Block>(); blocks.add(clBlock); process.setBlocks(blocks); // Set test cases TestCase testCase = new TestCase(); RecordImplForTest sourceRecord = new RecordImplForTest(); sourceRecord.setRole("source"); sourceRecord.add(new Field("id", "42")); testCase.addRecord(sourceRecord); RecordImplForTest targetRecord = new RecordImplForTest(); targetRecord.setRole("target"); targetRecord.add(new Field("id", "42")); testCase.addRecord(targetRecord); RecordImplForTest targetRecord2 = new RecordImplForTest(); targetRecord2.setRole("target"); targetRecord2.add(new Field("id", "42")); testCase.addRecord(targetRecord2); List<TestCase> testCases = new ArrayList<TestCase>(); testCases.add(testCase); process.setTestCases(testCases); CompactProcess cProcess = new CompactProcess(process, repository, frameAddressResolver, runtimeProperties); ProcessTester tester = new ProcessTester(cProcess, true); assertTrue(tester.testAll()); // Add a test that fails TestCase testCase2 = new TestCase(); testCase2.addRecord(sourceRecord); testCase2.addRecord(targetRecord); assertFalse(tester.testAll()); } @Test public void testTesterByClone2() { // Init process FrameAddressResolver frameAddressResolver = new FrameAddressResolver(); Properties runtimeProperties = new Properties(); Repository repository = new Repository(); LongneckProcess process = new LongneckProcess(); // Init blocks CloneRecord clBlock = new CloneRecord(); List<Block> blocks = new ArrayList<Block>(); blocks.add(clBlock); process.setBlocks(blocks); // Set test cases TestCase testCase = new TestCase(); RecordImplForTest sourceRecord = new RecordImplForTest(); sourceRecord.setRole("source"); sourceRecord.add(new Field("id", "42")); testCase.addRecord(sourceRecord); RecordImplForTest targetRecord = new RecordImplForTest(); targetRecord.setRole("target"); targetRecord.add(new Field("id", "42")); testCase.addRecord(targetRecord); RecordImplForTest targetRecord2 = new RecordImplForTest(); targetRecord2.setRole("target"); targetRecord2.add(new Field("id", "41")); testCase.addRecord(targetRecord2); List<TestCase> testCases = new ArrayList<TestCase>(); testCases.add(testCase); process.setTestCases(testCases); CompactProcess cProcess = new CompactProcess(process, repository, frameAddressResolver, runtimeProperties); ProcessTester tester = new ProcessTester(cProcess, true); /* The process test fails, because there is no perfect * matching in the observed-expected target record graph. */ assertFalse(tester.testAll()); } }