public async Task ExecuteRuleNextDepartmentId() { //Arrange var bypassSheet = BypassSheetTestHelper.GetInitializedBypassSheet(3, 1, 5); var ruleAdd = new DefaultDepartmentRule(2); //Act var nextId = await ruleAdd.ExecuteRuleAsync(bypassSheet).ConfigureAwait(false); //Assert Assert.Equal(2, nextId); }
public async Task ExecuteRuleNotExistRemove() { //Arrange var bypassSheet = BypassSheetTestHelper.GetInitializedBypassSheet(1, 5); var expectedStamps = BypassSheetTestHelper.GetInitializedBypassSheet(1, 5).Stamps; var ruleAdd = new DefaultDepartmentRule(2, removedStampId: 3); //Act await ruleAdd.ExecuteRuleAsync(bypassSheet).ConfigureAwait(false); //Assert Assert.True(expectedStamps.SetEquals(bypassSheet.Stamps)); }
private static List <IDepartmentRule> InitDefaultDepartmentsRules() { var rule1 = new DefaultDepartmentRule(new DefaultDepartmentRuleConfig { NextDepartmentId = 2, AddedStampId = 6, RemovedStampId = 3 }); var rule2 = new ConditionDepartmentRule(new ConditionDepartmentRuleConfig { ConditionStampId = 7, OnConditionNextDepartmentId = 3, OnConditionAddedStampId = 9, ElseConditionNextDepartmentId = 5, ElseConditionAddedStampId = 8 }); var rule3 = new DefaultDepartmentRule(new DefaultDepartmentRuleConfig { NextDepartmentId = 4, AddedStampId = 3 }); var rule4 = new DefaultDepartmentRule(new DefaultDepartmentRuleConfig { NextDepartmentId = 2, AddedStampId = 4 }); var rule5 = new ConditionDepartmentRule(new ConditionDepartmentRuleConfig { ConditionStampId = 8, OnConditionNextDepartmentId = 4, OnConditionAddedStampId = 7, ElseConditionNextDepartmentId = 1, ElseConditionAddedStampId = 2 }); return(new List <IDepartmentRule> { rule1, rule2, rule3, rule4, rule5 }); }
public async Task CheckInfinityCycle() { //Arrange var bypassSheet = BypassSheetTestHelper.GetInitializedBypassSheet(3, 1, 5); var history = new StampsHistoryElement { NextDepartmentId = 2, Stamps = new HashSet <int> { 3, 2, 1, 5 } }; var ruleAdd = new DefaultDepartmentRule(2, 2); var department = new Department(2, ruleAdd); department.StampsHistory.Add(history); //Assert IsCycle - false Assert.False(department.IsCycle); //Act execute check cycle step await department.ExecuteDepartmentRuleAsync(bypassSheet).ConfigureAwait(false); //Assert IsCycle - true Assert.True(department.IsCycle); //Arrange old history var oldHistoryElementCount = department.StampsHistory.Count; //Act repeat rule after finding cycle await department.ExecuteDepartmentRuleAsync(bypassSheet).ConfigureAwait(false); //Assert history don't changed Assert.Equal(oldHistoryElementCount, department.StampsHistory.Count); }
public async Task CheckEquivalenceConstructors() { //Arrange var bypassSheetDefault = BypassSheetTestHelper.GetInitializedBypassSheet(3, 1, 5); var bypassSheetConfig = BypassSheetTestHelper.GetInitializedBypassSheet(3, 1, 5); var ruleAddDefault = new DefaultDepartmentRule(2, 2, 5); var ruleAddConfig = new DefaultDepartmentRule(new DefaultDepartmentRuleConfig { NextDepartmentId = 2, AddedStampId = 2, RemovedStampId = 5 }); //Act var next1 = await ruleAddDefault.ExecuteRuleAsync(bypassSheetDefault).ConfigureAwait(false); var next2 = await ruleAddConfig.ExecuteRuleAsync(bypassSheetConfig).ConfigureAwait(false); //Assert Assert.Equal(next1, next2); Assert.True(bypassSheetDefault.Stamps.SetEquals(bypassSheetConfig.Stamps)); }
private static List <IDepartmentRule> InitNotCycleDepartmentsRules() { var rule1 = new ConditionDepartmentRule(new ConditionDepartmentRuleConfig { ConditionStampId = 2, OnConditionNextDepartmentId = 3, ElseConditionNextDepartmentId = 2, ElseConditionAddedStampId = 2 }); var rule2 = new DefaultDepartmentRule(new DefaultDepartmentRuleConfig { NextDepartmentId = 1 }); var rule3 = new DefaultDepartmentRule(new DefaultDepartmentRuleConfig { NextDepartmentId = 2 }); return(new List <IDepartmentRule> { rule1, rule2, rule3 }); }