public IEnumerable <Turn> Materialize(Random Random, IEnumerable <Army> Armies)
        {
            var armies      = Armies.ToArray();
            var deployOrder = DeploymentOrder.Get(Random, 1).Select(i => armies[i]);

            foreach (var army in deployOrder)
            {
                yield return(new Turn(0, new TurnInfo(army, TurnComponent.DEPLOYMENT)));
            }
            foreach (var army in deployOrder)
            {
                yield return(new Turn(0, new TurnInfo(army, TurnComponent.RESET)));
            }

            var playerOrder = TurnOrder.Get(Random, Turns).Select(i => armies[i]).GetEnumerator();

            for (int i = 0; i < Turns; ++i)
            {
                for (int j = 0; j < TurnOrder.Count; ++j)
                {
                    playerOrder.MoveNext();
                    foreach (var turnComponent in TurnComponents())
                    {
                        yield return(new Turn((byte)(i + 1), new TurnInfo(playerOrder.Current, turnComponent)));
                    }
                }
            }
        }
Beispiel #2
0
        private void RunAssertionCircular(EPServiceProvider epService)
        {
            // Circular 3
            Module moduleB = GetModule("B", "C");
            Module moduleC = GetModule("C", "D");
            Module moduleD = GetModule("D", "B");

            try {
                epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleC, moduleD, moduleB }), new DeploymentOrderOptions());
                Assert.Fail();
            } catch (DeploymentOrderException ex) {
                Assert.AreEqual("Circular dependency detected in module uses-relationships: module 'C' uses (depends on) module 'D' uses (depends on) module 'B'", ex.Message);
            }

            // Circular 1 - this is allowed
            moduleB = GetModule("B", "B");
            DeploymentOrder order = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleC, moduleD, moduleB }), new DeploymentOrderOptions());

            AssertOrder(new Module[] { moduleB, moduleD, moduleC }, order);

            // Circular 2
            moduleB = GetModule("B", "C");
            moduleC = GetModule("C", "B");
            try {
                epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleC, moduleB }), new DeploymentOrderOptions());
                Assert.Fail();
            } catch (DeploymentOrderException ex) {
                Assert.AreEqual("Circular dependency detected in module uses-relationships: module 'C' uses (depends on) module 'B'", ex.Message);
            }

            // turn off circular check
            var options = new DeploymentOrderOptions();

            options.IsCheckCircularDependency = false;
            order = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleC, moduleB }), options);
            AssertOrder(new Module[] { moduleB, moduleC }, order);
        }
Beispiel #3
0
        public void TestCircular()
        {
            // Circular 3
            Module moduleB = GetModule("B", "C");
            Module moduleC = GetModule("C", "D");
            Module moduleD = GetModule("D", "B");

            try {
                _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleC, moduleD, moduleB }, new DeploymentOrderOptions());
                Assert.Fail();
            } catch (DeploymentOrderException ex) {
                Assert.AreEqual("Circular dependency detected in module uses-relationships: module 'C' uses (depends on) module 'D' uses (depends on) module 'B'", ex.Message);
            }

            // Circular 1 - this is allowed
            moduleB = GetModule("B", "B");
            DeploymentOrder order = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleC, moduleD, moduleB }, new DeploymentOrderOptions());

            AssertOrder(new Module[] { moduleB, moduleD, moduleC, }, order);

            // Circular 2
            moduleB = GetModule("B", "C");
            moduleC = GetModule("C", "B");
            try {
                _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleC, moduleB }, new DeploymentOrderOptions());
                Assert.Fail();
            } catch (DeploymentOrderException ex) {
                Assert.AreEqual("Circular dependency detected in module uses-relationships: module 'C' uses (depends on) module 'B'", ex.Message);
            }

            // turn off circular check
            DeploymentOrderOptions options = new DeploymentOrderOptions();

            options.IsCheckCircularDependency = false;
            order = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleC, moduleB }, options);
            AssertOrder(new Module[] { moduleB, moduleC }, order);
        }
Beispiel #4
0
        private void RunAssertionOrder(EPServiceProvider epService)
        {
            Module          moduleA = null;
            Module          moduleB = null;
            Module          moduleC = null;
            Module          moduleD = null;
            Module          moduleE = null;
            DeploymentOrder order   = null;

            // Tree of 4 deep
            moduleA = GetModule("A");
            moduleB = GetModule("B", "A");
            moduleC = GetModule("C", "A", "B", "D");
            moduleD = GetModule("D", "A", "B");
            order   = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleC, moduleD, moduleB, moduleA }), new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleA, moduleB, moduleD, moduleC }, order);

            // Zero items
            order = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] {}), new DeploymentOrderOptions());
            AssertOrder(new Module[] {}, order);

            // 1 item
            moduleA = GetModule("A");
            order   = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleA }), new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleA }, order);

            // 2 item
            moduleA = GetModule("A", "B");
            moduleB = GetModule("B");
            order   = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleB, moduleA }), new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleA }, order);

            // 3 item
            moduleB = GetModule("B");
            moduleC = GetModule("C", "B");
            moduleD = GetModule("D");
            order   = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleB, moduleC, moduleD }), new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleC, moduleD }, order);
            order = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleD, moduleC, moduleB }), new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleD, moduleC }, order);

            // 2 trees of 2 deep
            moduleA = GetModule("A", "B");
            moduleB = GetModule("B");
            moduleC = GetModule("C", "D");
            moduleD = GetModule("D");
            order   = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleC, moduleB, moduleA, moduleD }), new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleD, moduleC, moduleA }, order);

            // Tree of 5 deep
            moduleA = GetModule("A", "C");
            moduleB = GetModule("B");
            moduleC = GetModule("C", "B");
            moduleD = GetModule("D", "C", "E");
            moduleE = GetModule("E");
            order   = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleA, moduleB, moduleC, moduleD, moduleE }), new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleC, moduleE, moduleA, moduleD }, order);
            order = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleB, moduleE, moduleC, moduleA, moduleD }), new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleE, moduleC, moduleA, moduleD }, order);
            order = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleA, moduleD, moduleE, moduleC, moduleB }), new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleE, moduleC, moduleA, moduleD }, order);

            // Tree with null names
            moduleA = GetModule(null, "C", "A", "B", "D");
            moduleB = GetModule(null, "C");
            moduleC = GetModule("A");
            moduleD = GetModule("B", "A", "C");
            moduleE = GetModule("C");
            var options = new DeploymentOrderOptions();

            options.IsCheckUses = false;
            order = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleA, moduleB, moduleC, moduleD, moduleE }), options);
            AssertOrder(new Module[] { moduleC, moduleE, moduleD, moduleA, moduleB }, order);
            Assert.IsFalse(epService.EPAdministrator.DeploymentAdmin.IsDeployed("C"));

            // Tree with duplicate names
            moduleA = GetModule("A", "C");
            moduleB = GetModule("B", "C");
            moduleC = GetModule("A", "B");
            moduleD = GetModule("D", "A");
            moduleE = GetModule("C");
            order   = epService.EPAdministrator.DeploymentAdmin.GetDeploymentOrder(Collections.List(new Module[] { moduleA, moduleB, moduleC, moduleD, moduleE }), options);
            AssertOrder(new Module[] { moduleE, moduleB, moduleA, moduleC, moduleD }, order);
        }
Beispiel #5
0
 private void AssertOrder(Module[] ordered, DeploymentOrder order)
 {
     EPAssertionUtil.AssertEqualsExactOrder(ordered, order.Ordered.ToArray());
 }
Beispiel #6
0
        public void TestOrder()
        {
            Module          moduleA = null;
            Module          moduleB = null;
            Module          moduleC = null;
            Module          moduleD = null;
            Module          moduleE = null;
            DeploymentOrder order   = null;

            // Tree of 4 deep
            moduleA = GetModule("A");
            moduleB = GetModule("B", "A");
            moduleC = GetModule("C", "A", "B", "D");
            moduleD = GetModule("D", "A", "B");
            order   = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleC, moduleD, moduleB, moduleA }, new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleA, moduleB, moduleD, moduleC }, order);

            // Zero items
            order = _deploymentAdmin.GetDeploymentOrder(new Module[] {}, new DeploymentOrderOptions());
            AssertOrder(new Module[] {}, order);

            // 1 item
            moduleA = GetModule("A");
            order   = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleA }, new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleA }, order);

            // 2 item
            moduleA = GetModule("A", "B");
            moduleB = GetModule("B");
            order   = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleB, moduleA }, new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleA }, order);

            // 3 item
            moduleB = GetModule("B");
            moduleC = GetModule("C", "B");
            moduleD = GetModule("D");
            order   = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleB, moduleC, moduleD }, new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleC, moduleD }, order);
            order = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleD, moduleC, moduleB }, new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleD, moduleC }, order);

            // 2 trees of 2 deep
            moduleA = GetModule("A", "B");
            moduleB = GetModule("B");
            moduleC = GetModule("C", "D");
            moduleD = GetModule("D");
            order   = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleC, moduleB, moduleA, moduleD }, new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleD, moduleC, moduleA }, order);

            // Tree of 5 deep
            moduleA = GetModule("A", "C");
            moduleB = GetModule("B");
            moduleC = GetModule("C", "B");
            moduleD = GetModule("D", "C", "E");
            moduleE = GetModule("E");
            order   = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleA, moduleB, moduleC, moduleD, moduleE }, new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleC, moduleE, moduleA, moduleD }, order);
            order = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleB, moduleE, moduleC, moduleA, moduleD }, new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleE, moduleC, moduleA, moduleD }, order);
            order = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleA, moduleD, moduleE, moduleC, moduleB }, new DeploymentOrderOptions());
            AssertOrder(new Module[] { moduleB, moduleE, moduleC, moduleA, moduleD }, order);

            // Tree with null names
            moduleA = GetModule(null, "C", "A", "B", "D");
            moduleB = GetModule(null, "C");
            moduleC = GetModule("A");
            moduleD = GetModule("B", "A", "C");
            moduleE = GetModule("C");
            DeploymentOrderOptions options = new DeploymentOrderOptions();

            options.IsCheckUses = false;
            order = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleA, moduleB, moduleC, moduleD, moduleE }, options);
            AssertOrder(new Module[] { moduleC, moduleE, moduleD, moduleA, moduleB }, order);
            Assert.IsFalse(_deploymentAdmin.IsDeployed("C"));

            // Tree with duplicate names
            moduleA = GetModule("A", "C");
            moduleB = GetModule("B", "C");
            moduleC = GetModule("A", "B");
            moduleD = GetModule("D", "A");
            moduleE = GetModule("C");
            order   = _deploymentAdmin.GetDeploymentOrder(new Module[] { moduleA, moduleB, moduleC, moduleD, moduleE }, options);
            AssertOrder(new Module[] { moduleE, moduleB, moduleA, moduleC, moduleD }, order);
        }
 public TurnConfiguration MakeStatic(Random Random)
 {
     return(new TurnConfiguration(
                Turns, DeploymentOrder.MakeStatic(Random, Turns), TurnOrder.MakeStatic(Random, Turns)));
 }