package ru.hflabs.rcd.accessor; import org.testng.annotations.Test; import ru.hflabs.rcd.model.document.Dictionary; import ru.hflabs.rcd.model.document.Field; import ru.hflabs.rcd.model.document.Group; import ru.hflabs.rcd.model.document.MetaField; import ru.hflabs.rcd.model.rule.RecodeRule; import ru.hflabs.rcd.model.rule.RecodeRuleSet; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static ru.hflabs.rcd.accessor.Accessors.*; import static ru.hflabs.rcd.model.MockFactory.*; import static ru.hflabs.rcd.model.ModelUtils.createFieldNamedPath; import static ru.hflabs.rcd.model.ModelUtils.createMetaFieldNamedPath; @Test public class AccessorsTest { public void test_IDENTITY() { Group firstGroup = createMockGroup(); Group secondGroup = createMockGroup(); Group actual = Accessors.<Group>identity().inject(firstGroup, secondGroup); assertEquals(actual, secondGroup); } public void test_RULE_SET_INJECTOR() { Group fromGroup = createMockGroup(); Dictionary fromDictionary = createMockDictionary(fromGroup); MetaField fromMetaField = createMockMetaField(fromDictionary); Group toGroup = createMockGroup(); Dictionary toDictionary = createMockDictionary(toGroup); MetaField toMetaField = createMockMetaField(toDictionary); RecodeRuleSet ruleSet = createMockRecodeRuleSet(fromMetaField, toMetaField, null); // NamedPath assertEquals(FROM_SET_INJECTOR.applyNamedPath(ruleSet), createMetaFieldNamedPath(fromMetaField)); assertEquals(TO_SET_INJECTOR.applyNamedPath(ruleSet), createMetaFieldNamedPath(toMetaField)); // FieldID assertEquals(FROM_SET_INJECTOR.applyRelativeId(ruleSet), ruleSet.getFromFieldId()); assertEquals(TO_SET_INJECTOR.applyRelativeId(ruleSet), ruleSet.getToFieldId()); // Field assertEquals(FROM_SET_INJECTOR.apply(ruleSet), fromMetaField); assertEquals(TO_SET_INJECTOR.apply(ruleSet), toMetaField); } public void test_RULE_INJECTOR() { Group fromGroup = createMockGroup(); Dictionary fromDictionary = createMockDictionary(fromGroup); MetaField fromMetaField = createMockMetaField(fromDictionary); Field fromField = createMockField(fromMetaField); Group toGroup = createMockGroup(); Dictionary toDictionary = createMockDictionary(toGroup); MetaField toMetaField = createMockMetaField(toDictionary); Field toField = createMockField(toMetaField); RecodeRuleSet ruleSet = createMockRecodeRuleSet(fromMetaField, toMetaField, null); RecodeRule rule = createMockRecodeRule(ruleSet, fromField, toField); // NamedPath assertEquals(FROM_RULE_INJECTOR.applyNamedPath(rule), createFieldNamedPath(fromField)); assertEquals(TO_RULE_INJECTOR.applyNamedPath(rule), createFieldNamedPath(toField)); // FieldID assertEquals(FROM_RULE_INJECTOR.applyRelativeId(rule), rule.getFromFieldId()); assertEquals(TO_RULE_INJECTOR.applyRelativeId(rule), rule.getToFieldId()); // Field assertEquals(FROM_RULE_INJECTOR.apply(rule), fromField); assertEquals(TO_RULE_INJECTOR.apply(rule), toField); } public void test_GROUP_BY_DICTIONARY_INJECTOR() { Group group = createMockGroup(); Dictionary dictionary = createMockDictionary(null); Dictionary actual = GROUP_TO_DICTIONARY_INJECTOR.inject(dictionary, group); assertNotNull(actual); assertEquals(GROUP_TO_DICTIONARY_INJECTOR.apply(actual), group); } public void test_DICTIONARY_BY_META_FIELD_INJECTOR() { Dictionary dictionary = createMockDictionary(createMockGroup()); MetaField metaField = createMockMetaField(null); MetaField actual = DICTIONARY_TO_META_FIELD_INJECTOR.inject(metaField, dictionary); assertNotNull(actual); assertEquals(DICTIONARY_TO_META_FIELD_INJECTOR.apply(actual), dictionary); } public void test_GROUP_BY_META_FIELD_INJECTOR() { Group group = createMockGroup(); MetaField metaField = createMockMetaField(createMockDictionary(createMockGroup())); MetaField actual = GROUP_TO_META_FIELD_INJECTOR.inject(metaField, group); assertNotNull(actual); assertEquals(GROUP_TO_META_FIELD_INJECTOR.apply(actual), group); } }