Esempio n. 1
0
        public void AssertThat_BaseFloor_CreatesVerticals()
        {
            var harness = new ProceduralTestHarness();

            var result = harness.Subdivide(new TestRoot(
                                               ScriptReference.Find <TestBuildingWithVerticals>().Single(),
                                               new Prism(100, new Vector2(0, 0), new Vector2(0, 100), new Vector2(100, 100), new Vector2(100, 0))
                                               ));

            Assert.IsNotNull(result);

            var building = result.Root.Children.OfType <BaseTestBuilding>().Single();
            var vertical = building.Children.SelectMany(c => c.Children).OfType <IVerticalFeature>().Single();

            //Vertical from 1 -> 3
            Assert.AreEqual(1, vertical.BottomFloorIndex);
            Assert.AreEqual(3, vertical.TopFloorIndex);

            //Did all the floors in the range get informed of this element?
            Assert.AreEqual(0, ((BlankTestFloor)building.Floor(0)).OverlappingVerticals.Count());
            Assert.AreEqual(0, ((BlankTestFloor)building.Floor(1)).OverlappingVerticals.Count());   //Floor 1 placed the element, so it is *not* informed of it this way!
            Assert.AreEqual(1, ((BlankTestFloor)building.Floor(2)).OverlappingVerticals.Count());
            Assert.AreEqual(1, ((BlankTestFloor)building.Floor(3)).OverlappingVerticals.Count());
            Assert.AreEqual(0, ((BlankTestFloor)building.Floor(4)).OverlappingVerticals.Count());

            //Does vertical container contain vertical for all these floors
            var vContainer = (IVerticalFeatureContainer)building;

            Assert.AreEqual(0, vContainer.Overlapping(0).Count());
            Assert.AreEqual(1, vContainer.Overlapping(1).Count());
            Assert.AreEqual(1, vContainer.Overlapping(2).Count());
            Assert.AreEqual(1, vContainer.Overlapping(3).Count());
            Assert.AreEqual(0, vContainer.Overlapping(4).Count());
        }
Esempio n. 2
0
        public void AssertThat_BaseFloor_CreatesExternalFacades()
        {
            var harness = new ProceduralTestHarness();

            var result = harness.Subdivide(new TestRoot(
                                               ScriptReference.Find <TestBuildingWithSingleFloorWithExternalRoom>().Single(),
                                               new Prism(100, new Vector2(0, 0), new Vector2(0, 100), new Vector2(100, 100), new Vector2(100, 0))
                                               ));

            Assert.IsNotNull(result);

            var building = result.Root.Children.OfType <BaseTestBuilding>().Single();
            var floor    = building.Children.OfType <BaseFloor>().Single();
            var room     = floor.Children.OfType <IPlannedRoom>().Single();

            //Check that 4 room facades were created
            Assert.AreEqual(4, room.Facades.Count);

            //Check that facades are all in the correct locations
            foreach (var keyValuePair in room.Facades)
            {
                //Check the facades are in the right place
                Assert.IsTrue(keyValuePair.Value.Section.Matches(keyValuePair.Key.Section));

                //Check that the facades subdivide after rooms
                Assert.IsTrue(((ProceduralScript)keyValuePair.Value.GetDependencyContext()).Prerequisites().Contains((ProceduralScript)room));
            }

            //Check that 2 external facades were created
            Assert.AreEqual(2, room.Facades.Count(f => f.Key.IsExternal));
        }
        public void AssertThat_BaseBuilding_CreatesPrerequisiteRelationships()
        {
            var harness = new ProceduralTestHarness();

            var result = harness.Subdivide(new TestRoot(
                                               ScriptReference.Find <TestBuildingWithManyFloors>().Single(),
                                               new Prism(100, new Vector2(0, 0), new Vector2(0, 100), new Vector2(100, 100), new Vector2(100, 0))
                                               ));

            Assert.IsNotNull(result);

            var building = result.Root.Children.OfType <BaseTestBuilding>().Single();

            Assert.IsNotNull(building.Floor(0));
            Assert.IsNotNull(building.Floor(-1));
            Assert.AreEqual(4, building.AboveGroundFloors);
            Assert.AreEqual(4, building.BelowGroundFloors);
            Assert.AreEqual(8, building.TotalFloors);

            //Check that all above ground floors depend on the floor below
            var above = building.Children
                        .OfType <BlankTestFloor>()
                        .Where(a => a.FloorIndex >= 0)
                        .OrderBy(a => a.FloorIndex)
                        .ToArray();

            for (var i = 1; i < above.Length; i++)
            {
                var prereq = above[i].Prerequisites().ToArray();
                Assert.IsTrue(prereq.Contains(above[i - 1]));
            }

            //Check that all below ground floors depend on the floor above
            var below = building.Children
                        .OfType <BlankTestFloor>()
                        .Where(a => a.FloorIndex <= 0)
                        .OrderBy(a => - a.FloorIndex)
                        .ToArray();

            for (var i = 1; i < below.Length; i++)
            {
                var prereq = below[i].Prerequisites().ToArray();
                Assert.IsTrue(prereq.Contains(below[i - 1]));
            }
        }
        public void AssertThat_BaseBuilding_CreatesSelectedFloors_WithAboveGroundFloors()
        {
            var harness = new ProceduralTestHarness();

            var result = harness.Subdivide(new TestRoot(
                                               ScriptReference.Find <TestBuildingWithTwoFloors>().Single(),
                                               new Prism(100, new Vector2(0, 0), new Vector2(0, 100), new Vector2(100, 100), new Vector2(100, 0))
                                               ));

            Assert.IsNotNull(result);

            var building = result.Root.Children.OfType <BaseTestBuilding>().Single();

            Assert.IsNotNull(building.Floor(0));
            Assert.IsNotNull(building.Floor(-1));
            Assert.AreEqual(1, building.AboveGroundFloors);
            Assert.AreEqual(1, building.BelowGroundFloors);
            Assert.AreEqual(2, building.TotalFloors);
        }
Esempio n. 5
0
        public void AssertThat_BaseFloor_CreatesInternalFacades()
        {
            var harness = new ProceduralTestHarness();

            var result = harness.Subdivide(new TestRoot(
                                               ScriptReference.Find <TestBuildingWithSingleFloorWithInternalRoom>().Single(),
                                               new Prism(100, new Vector2(0, 0), new Vector2(0, 100), new Vector2(100, 100), new Vector2(100, 0))
                                               ));

            Assert.IsNotNull(result);
            int index = 1;

            foreach (var dependency in (IEnumerable <ISet <OrderedProcess> >)result.Dependencies())
            {
                Console.WriteLine(index + ".");
                foreach (var orderedProcess in dependency)
                {
                    var n = ((OrderedProceduralNode)orderedProcess).Node;
                    var p = n.Parent;
                    Console.WriteLine(" - {0} ({1})", n.GetType().Name, p == null ? "null" : p.GetType().Name);
                }
                index++;
            }

            var building = result.Root.Children.OfType <BaseTestBuilding>().Single();
            var floor    = building.Children.OfType <BaseFloor>().Single();
            var room     = floor.Children.OfType <IPlannedRoom>().Single();

            //Check that 4 internal facades were created
            Assert.AreEqual(4, room.Facades.Count);
            foreach (var keyValuePair in room.Facades)
            {
                //Check the facades are in the right place
                Assert.IsTrue(keyValuePair.Value.Section.Matches(keyValuePair.Key.Section));

                //Check that the facades subdivide after rooms
                Assert.IsTrue(((ProceduralScript)keyValuePair.Value.GetDependencyContext()).Prerequisites().Contains((ProceduralScript)room));
            }
        }