Esempio n. 1
0
        public IEnumerator InsertPlatformErrorUnNeighbored()
        {
            yield return(null);

            var rn1 = utils.factory.NewRailNode(new Vector3(0f, 0f));
            var rnX = utils.factory.NewRailNode(new Vector3(0f, 0f));

            yield return(null);

            var p1 = rn1.BuildStation();
            var pX = rnX.BuildStation();

            yield return(null);

            var e12 = rn1.Extend(new Vector3(1f, 1f));

            yield return(null);

            var rn2 = e12.To;
            var l   = new RailLine(utils.storage, utils.listener);

            l.StartLine(p1);
            var dept1 = l.Top;

            dept1.InsertEdge(e12);
            var mv12 = dept1.Next;

            Assert.Throws <ArgumentException>(() => mv12.InsertPlatform(pX));
        }
Esempio n. 2
0
        public IEnumerator InsertEdgeToStation()
        {
            yield return(null);

            var rn1 = utils.factory.NewRailNode(new Vector3(0f, 0f));

            yield return(null);

            var p1 = rn1.BuildStation();

            yield return(null);

            var e12 = rn1.Extend(new Vector3(1f, 1f));

            yield return(null);

            var e21 = e12.Reverse;
            var rn2 = e12.To;
            var p2  = rn2.BuildStation();

            yield return(null);

            var l = new RailLine(utils.storage, utils.listener);

            l.StartLine(p1);
            var dept1 = l.Top;

            // rn1 -> [dept1] -> rn1 -> [mv12] -> rn2 -> [dept2] -> [mv21] -> rn1
            dept1.InsertEdge(e12);
            var mv12 = dept1.Next;

            Assert.IsInstanceOf(typeof(EdgeTask), mv12);
            Assert.AreSame(l, mv12.Parent);
            Assert.AreSame(e12, (mv12 as EdgeTask).Edge);
            Assert.AreSame(rn1, mv12.Departure);
            Assert.AreSame(rn2, mv12.Destination);
            Assert.AreEqual(e12.Arrow.magnitude, mv12.Length, utils.DELTA);
            Assert.AreSame(mv12, dept1.Next);
            Assert.AreSame(dept1, mv12.Prev);
            var dept2 = mv12.Next;

            Assert.IsInstanceOf(typeof(DeptTask), dept2);
            Assert.AreSame(p2, (dept2 as DeptTask).Stay);
            Assert.AreSame(rn2, dept2.Departure);
            Assert.AreSame(rn2, dept2.Destination);
            Assert.AreSame(dept2, mv12.Next);
            Assert.AreSame(mv12, dept2.Prev);
            var mv21 = dept2.Next;

            Assert.AreSame(l, mv21.Parent);
            Assert.AreSame(e21, (mv21 as EdgeTask).Edge);
            Assert.AreSame(rn2, mv21.Departure);
            Assert.AreSame(rn1, mv21.Destination);
            Assert.AreSame(mv21, dept2.Next);
            Assert.AreSame(dept2, mv21.Prev);
            Assert.AreSame(dept1, mv21.Next);
            Assert.AreSame(mv21, dept1.Prev);
        }
Esempio n. 3
0
        public IEnumerator InsertEdgeToNonStationEdge()
        {
            yield return(null);

            var rn1 = utils.factory.NewRailNode(new Vector3(0f, 0f));

            yield return(null);

            var p1 = rn1.BuildStation();

            yield return(null);

            var e12 = rn1.Extend(new Vector3(1f, 1f));

            yield return(null);

            var e21 = e12.Reverse;
            var rn2 = e12.To;
            var e23 = rn2.Extend(new Vector3(2f, 2f));

            yield return(null);

            var rn3 = e23.To;
            var e32 = e23.Reverse;
            var l   = new RailLine(utils.storage, utils.listener);

            l.StartLine(p1);
            var dept1 = l.Top;

            // 1. rn1 -> [e12] -> rn2
            // 2. rn1 -> [e12] -> rn2 -> [e23] -> rn3
            dept1.InsertEdge(e12);
            var mv12 = dept1.Next;

            mv12.InsertEdge(e23);

            var mv23 = mv12.Next;

            Assert.IsInstanceOf(typeof(EdgeTask), mv23);
            Assert.AreSame(l, mv23.Parent);
            Assert.AreSame(e23, (mv23 as EdgeTask).Edge);
            Assert.AreSame(rn2, mv23.Departure);
            Assert.AreSame(rn3, mv23.Destination);
            Assert.AreEqual(e23.Arrow.magnitude, mv23.Length, utils.DELTA);
            Assert.AreSame(mv23, mv12.Next);
            Assert.AreSame(mv12, mv23.Prev);

            var mv32 = mv23.Next;

            Assert.AreSame(l, mv32.Parent);
            Assert.AreSame(e32, (mv32 as EdgeTask).Edge);
            Assert.AreSame(rn3, mv32.Departure);
            Assert.AreSame(rn2, mv32.Destination);
            Assert.AreSame(mv32, mv23.Next);
            Assert.AreSame(mv23, mv32.Prev);
            Assert.AreSame(mv32, mv32.Next.Prev);
        }
Esempio n. 4
0
        public IEnumerator InsertPlatform()
        {
            yield return(null);

            var rn1 = utils.factory.NewRailNode(new Vector3(0f, 0f));

            yield return(null);

            var p1 = rn1.BuildStation();

            yield return(null);

            var e12 = rn1.Extend(new Vector3(1f, 1f));

            yield return(null);

            var e21 = e12.Reverse;
            var rn2 = e12.To;
            var l   = new RailLine(utils.storage, utils.listener);

            l.StartLine(p1);
            var dept1 = l.Top;

            dept1.InsertEdge(e12);
            var mv12 = dept1.Next;
            var mv21 = mv12.Next;
            var p2   = rn2.BuildStation();

            yield return(null);

            mv12.InsertPlatform(p2);
            var dept2 = mv12.Next;

            Assert.IsInstanceOf(typeof(DeptTask), dept2);
            Assert.AreSame(p2, (dept2 as DeptTask).Stay);
            Assert.AreSame(rn2, dept2.Departure);
            Assert.AreSame(rn2, dept2.Destination);
            Assert.AreSame(dept2, mv12.Next);
            Assert.AreSame(mv12, dept2.Prev);
            Assert.AreSame(mv21, dept2.Next);
            Assert.AreSame(dept2, mv21.Prev);
        }
Esempio n. 5
0
        public IEnumerator InsertPlatformErrorDuplicated()
        {
            yield return(null);

            var rn1 = utils.factory.NewRailNode(new Vector3(0f, 0f));
            var rnX = utils.factory.NewRailNode(new Vector3(0f, 0f));

            yield return(null);

            var p1 = rn1.BuildStation();
            var pX = rnX.BuildStation();

            yield return(null);

            var l = new RailLine(utils.storage, utils.listener);

            l.StartLine(p1);
            var dept = l.Top;

            Assert.Throws <ArgumentException>(() => dept.InsertPlatform(pX));
        }
 public void Act(Platform p)
 {
     line.StartLine(p);
 }