Exemplo n.º 1
0
        public void Dependency()
        {
            var left   = new LeftBuilder(this.Session).Build();
            var middle = new MiddleBuilder(this.Session).Build();
            var right  = new RightBuilder(this.Session).Build();

            left.Middle  = middle;
            middle.Right = right;

            var derivation = new Derivation(this.Session, new DerivationConfig {
                ThrowExceptionOnCycleDetected = true
            });

            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(1, left.DerivationCount);
            Assert.Equal(1, middle.DerivationCount);
            Assert.Equal(1, right.DerivationCount);

            left.Counter   += 1;
            middle.Counter += 1;
            right.Counter  += 1;

            derivation = new Derivation(this.Session, new DerivationConfig {
                ThrowExceptionOnCycleDetected = true
            });
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(2, left.DerivationCount);
            Assert.Equal(2, middle.DerivationCount);
            Assert.Equal(2, right.DerivationCount);

            middle.Counter += 1;
            left.Counter   += 1;
            right.Counter  += 1;

            derivation = new Derivation(this.Session, new DerivationConfig {
                ThrowExceptionOnCycleDetected = true
            });
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(3, left.DerivationCount);
            Assert.Equal(3, middle.DerivationCount);
            Assert.Equal(3, right.DerivationCount);

            right.Counter  += 1;
            middle.Counter += 1;
            left.Counter   += 1;

            derivation = new Derivation(this.Session, new DerivationConfig {
                ThrowExceptionOnCycleDetected = true
            });
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(4, left.DerivationCount);
            Assert.Equal(4, middle.DerivationCount);
            Assert.Equal(4, right.DerivationCount);

            right.Counter  += 1;
            left.Counter   += 1;
            middle.Counter += 1;

            derivation = new Derivation(this.Session, new DerivationConfig {
                ThrowExceptionOnCycleDetected = true
            });
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(5, left.DerivationCount);
            Assert.Equal(5, middle.DerivationCount);
            Assert.Equal(5, right.DerivationCount);

            left.Counter   += 1;
            middle.Counter += 1;

            derivation = new Derivation(this.Session, new DerivationConfig {
                ThrowExceptionOnCycleDetected = true
            });
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(6, left.DerivationCount);
            Assert.Equal(6, middle.DerivationCount);
            Assert.Equal(6, right.DerivationCount);

            middle.Counter += 1;
            left.Counter   += 1;

            derivation = new Derivation(this.Session, new DerivationConfig {
                ThrowExceptionOnCycleDetected = true
            });
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(7, left.DerivationCount);
            Assert.Equal(7, middle.DerivationCount);
            Assert.Equal(7, right.DerivationCount);

            right.Counter  += 1;
            middle.Counter += 1;

            derivation = new Derivation(this.Session, new DerivationConfig {
                ThrowExceptionOnCycleDetected = true
            });
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(8, left.DerivationCount);
            Assert.Equal(8, middle.DerivationCount);
            Assert.Equal(8, right.DerivationCount);

            middle.Counter += 1;
            right.Counter  += 1;

            derivation = new Derivation(this.Session, new DerivationConfig {
                ThrowExceptionOnCycleDetected = true
            });
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(9, left.DerivationCount);
            Assert.Equal(9, middle.DerivationCount);
            Assert.Equal(9, right.DerivationCount);

            middle.Counter += 1;

            derivation = new Derivation(this.Session, new DerivationConfig {
                ThrowExceptionOnCycleDetected = true
            });
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(10, left.DerivationCount);
            Assert.Equal(10, middle.DerivationCount);
            Assert.Equal(10, right.DerivationCount);
        }
        public void Dependency()
        {
            var left   = new LeftBuilder(this.Session).Build();
            var middle = new MiddleBuilder(this.Session).Build();
            var right  = new RightBuilder(this.Session).Build();

            left.Middle  = middle;
            middle.Right = right;

            var derivation = this.DerivationService.CreateDerivation(this.Session);

            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(1, left.DerivationCount);
            Assert.Equal(1, middle.DerivationCount);
            Assert.Equal(1, right.DerivationCount);

            left.Counter   += 1;
            middle.Counter += 1;
            right.Counter  += 1;

            derivation = this.DerivationService.CreateDerivation(this.Session);
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(2, left.DerivationCount);
            Assert.Equal(2, middle.DerivationCount);
            Assert.Equal(2, right.DerivationCount);

            middle.Counter += 1;
            left.Counter   += 1;
            right.Counter  += 1;

            derivation = this.DerivationService.CreateDerivation(this.Session);
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(3, left.DerivationCount);
            Assert.Equal(3, middle.DerivationCount);
            Assert.Equal(3, right.DerivationCount);

            right.Counter  += 1;
            middle.Counter += 1;
            left.Counter   += 1;

            derivation = this.DerivationService.CreateDerivation(this.Session);
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(4, left.DerivationCount);
            Assert.Equal(4, middle.DerivationCount);
            Assert.Equal(4, right.DerivationCount);

            right.Counter  += 1;
            left.Counter   += 1;
            middle.Counter += 1;

            derivation = this.DerivationService.CreateDerivation(this.Session);
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(5, left.DerivationCount);
            Assert.Equal(5, middle.DerivationCount);
            Assert.Equal(5, right.DerivationCount);

            left.Counter   += 1;
            middle.Counter += 1;

            derivation = this.DerivationService.CreateDerivation(this.Session);
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(6, left.DerivationCount);
            Assert.Equal(6, middle.DerivationCount);
            Assert.Equal(6, right.DerivationCount);

            middle.Counter += 1;
            left.Counter   += 1;

            derivation = this.DerivationService.CreateDerivation(this.Session);
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(7, left.DerivationCount);
            Assert.Equal(7, middle.DerivationCount);
            Assert.Equal(7, right.DerivationCount);

            right.Counter  += 1;
            middle.Counter += 1;

            derivation = this.DerivationService.CreateDerivation(this.Session);
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(8, left.DerivationCount);
            Assert.Equal(8, middle.DerivationCount);
            Assert.Equal(8, right.DerivationCount);

            middle.Counter += 1;
            right.Counter  += 1;

            derivation = this.DerivationService.CreateDerivation(this.Session);
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(9, left.DerivationCount);
            Assert.Equal(9, middle.DerivationCount);
            Assert.Equal(9, right.DerivationCount);

            middle.Counter += 1;

            derivation = this.DerivationService.CreateDerivation(this.Session);
            derivation.Derive();
            this.Session.Commit();

            Assert.Equal(10, left.DerivationCount);
            Assert.Equal(10, middle.DerivationCount);
            Assert.Equal(10, right.DerivationCount);
        }