Exemplo n.º 1
0
        public void TestCalculateFlowWithAdjustableSplitter()
        {
            FlowDiagram fl = new FlowDiagram();

            fl.AddComponent(new Point(1, 1), ComponentType.Pump);
            Component p = fl.Components[0];

            fl.ChangeCapacity(p, 25);
            fl.ChangeCurrentFlow(p, 20);
            fl.AddComponent(new Point(1, 1), ComponentType.AdjustableSplitter);
            Component ads = fl.Components[1];

            fl.Connect(ads, p, null, null);
            Assert.IsTrue(((AdjustableSplitter)ads).OtherConnected == p.GetId());
            fl.AddComponent(new Point(1, 1), ComponentType.Sink);
            Component s = fl.Components[2];

            fl.Connect(s, ads, null, "up");
            Assert.IsTrue(((AdjustableSplitter)ads).UpperConnectedComponent == s.GetId());
            fl.AddComponent(new Point(1, 1), ComponentType.Sink);
            Component sink = fl.Components[3];

            fl.Connect(sink, ads, null, "down");
            Assert.IsTrue(((AdjustableSplitter)ads).LowerConnectedComponent == sink.GetId());
            double flow = fl.CalculateFlow();

            Assert.AreEqual(flow, 20);
            Assert.AreEqual(((Sink)s).Input, 14);
            Assert.AreEqual(((Sink)sink).Input, 6);
        }
Exemplo n.º 2
0
        public void TestPipelineColor()
        {
            FlowDiagram fl = new FlowDiagram();

            fl.AddComponent(new Point(1, 1), ComponentType.Pump);
            fl.AddComponent(new Point(1, 1), ComponentType.Sink);
            Component pump = fl.Components[0];
            Component sink = fl.Components[1];

            fl.ChangeCapacity(pump, 200);
            fl.ChangeCurrentFlow(pump, 199);
            fl.Connect(sink, pump, null, null);
            fl.CalculateFlow();
            //red...
            Assert.AreEqual(fl.Connections[0].CheckColor(), 3);
            fl.ChangeCurrentFlow(pump, 95);
            fl.CalculateFlow();
            //yellow..
            Assert.AreEqual(fl.Connections[0].CheckColor(), 2);
        }
Exemplo n.º 3
0
        public void TestCalculateFlowSimple()
        {
            FlowDiagram fl = new FlowDiagram();

            fl.AddComponent(new Point(1, 1), ComponentType.Pump);
            Component c = fl.Components[0];

            fl.ChangeCapacity(c, 25);
            fl.ChangeCurrentFlow(c, 20);
            fl.AddComponent(new Point(1, 1), ComponentType.Sink);
            Component c2 = fl.Components[1];

            fl.Connect(c2, c, null, null);
            double flow = fl.CalculateFlow();

            Assert.AreEqual(flow, 20);
        }
Exemplo n.º 4
0
        public void TestCalculateFlowWithNestedSplitters()
        {
            FlowDiagram fl = new FlowDiagram();

            fl.AddComponent(new Point(1, 1), ComponentType.Pump);
            fl.AddComponent(new Point(1, 1), ComponentType.AdjustableSplitter);
            fl.AddComponent(new Point(1, 1), ComponentType.Splitter);
            fl.AddComponent(new Point(1, 1), ComponentType.AdjustableSplitter);
            fl.AddComponent(new Point(1, 1), ComponentType.Sink);
            fl.AddComponent(new Point(1, 1), ComponentType.Sink);
            fl.AddComponent(new Point(1, 1), ComponentType.Sink);
            fl.AddComponent(new Point(1, 1), ComponentType.Sink);
            Component pump  = fl.Components[0];
            Component ads1  = fl.Components[1];
            Component sp    = fl.Components[2];
            Component ads2  = fl.Components[3];
            Component sink1 = fl.Components[4];
            Component sink2 = fl.Components[5];
            Component sink3 = fl.Components[6];
            Component sink4 = fl.Components[7];

            fl.ChangeCapacity(pump, 50);
            fl.ChangeCurrentFlow(pump, 50);
            fl.Connect(ads1, pump, null, null);
            fl.Connect(sp, ads1, null, "up");
            fl.Connect(ads2, ads1, null, "down");
            fl.Connect(sink1, sp, null, "up");
            fl.Connect(sink2, sp, null, "down");
            fl.Connect(sink3, ads2, null, "up");
            fl.Connect(sink4, ads2, null, "down");
            double flow = fl.CalculateFlow();

            Assert.AreEqual(((Sink)sink1).Input, 17.5);
            Assert.AreEqual(((Sink)sink2).Input, 17.5);
            Assert.AreEqual(((Sink)sink3).Input, 10.5);
            Assert.AreEqual(((Sink)sink4).Input, 4.5);
            Assert.AreEqual(flow, 50);
        }
Exemplo n.º 5
0
        public void TestCalculateFlowWithMerger()
        {
            FlowDiagram fl = new FlowDiagram();

            fl.AddComponent(new Point(1, 1), ComponentType.Pump);
            fl.AddComponent(new Point(1, 1), ComponentType.Pump);
            Component p  = fl.Components[0];
            Component p1 = fl.Components[1];

            fl.ChangeCapacity(p, 25);
            fl.ChangeCurrentFlow(p, 20);
            fl.ChangeCapacity(p1, 25);
            fl.ChangeCurrentFlow(p1, 20);
            fl.AddComponent(new Point(1, 1), ComponentType.Merger);
            Component m = fl.Components[2];

            fl.Connect(m, p, "up", null);
            fl.Connect(m, p1, "down", null);
            Assert.IsTrue(((Merger)m).LowerConnectedComponent == p1.GetId());
            Assert.IsTrue(((Merger)m).UpperConnectedComponent == p.GetId());
            fl.AddComponent(new Point(1, 1), ComponentType.Sink);
            Component s = fl.Components[3];

            fl.Connect(s, m, null, null);
            fl.AddComponent(new Point(1, 1), ComponentType.Pump);
            fl.AddComponent(new Point(1, 1), ComponentType.Sink);
            Component pomp = fl.Components[4];
            Component sink = fl.Components[5];

            fl.ChangeCapacity(pomp, 25);
            fl.ChangeCurrentFlow(pomp, 20);
            fl.Connect(sink, pomp, null, null);
            double flow = fl.CalculateFlow();

            Assert.AreEqual(flow, 60);
        }