Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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
            });
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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
            });
        }