public void Find_OneNestedControl_ReturnsCorrectResult()
        {
            var screen = new ScreenControl();

            screen.Name = "screen";

            float buttonWidth  = 100;
            float buttonHeight = 40;

            var button1 = new FakeControl(new Area(40, 40, buttonWidth, buttonHeight));

            button1.Name = "button1";

            var button2 = new FakeControl(new Area(5 + 40, 40, buttonWidth, buttonHeight));

            button2.Name = "button2";

            var button3 = new FakeControl(new Area(40, 5 + 40, buttonWidth, buttonHeight));

            button3.Name = "button3";

            var button4 = new FakeControl(new Area(5 + 40, 5, buttonWidth, buttonHeight));

            button4.Name = "button4";

            var container = new ControlContainer(new Area(5 + 40, 5, 300, 300));

            container.Name = "container";

            var button5 = new FakeControl(new Area(10, 10, buttonWidth, buttonHeight));

            button5.Name = "button1";

            var container_button2 = new FakeControl(new Area(5 + 10, 10, buttonWidth, buttonHeight));

            container_button2.Name = "button2";

            container.AddControl(button5);
            container.AddControl(container_button2);

            screen.AddControl(button1);
            screen.AddControl(button2);
            screen.AddControl(button3);
            screen.AddControl(button4);

            screen.AddControl(container);

            var actual = screen.Find("container/button2");

            Assert.AreEqual(container_button2, actual);
        }
        public void Bubbling_A_Null_Event_ThrowsArgumentNullException()
        {
            ControlContainer outermost    = new ControlContainer(Area.None);
            ControlContainer intermediate = new ControlContainer(Area.None);
            ControlContainer innermost    = new ControlContainer(Area.None);

            controlThatTriggersTheEvent = new FakeBubbleControl();

            innermost.AddControl(controlThatTriggersTheEvent);
            intermediate.AddControl(innermost);
            outermost.AddControl(intermediate);

            controlThatTriggersTheEvent.TriggerNullEvent();
        }
        public void Event_Is_Bubbled_All_The_Way_Up()
        {
            ControlContainer outermost    = new ControlContainer(Area.None);
            ControlContainer intermediate = new ControlContainer(Area.None);
            ControlContainer innermost    = new ControlContainer(Area.None);

            controlThatTriggersTheEvent = new FakeBubbleControl();

            innermost.AddControl(controlThatTriggersTheEvent);
            intermediate.AddControl(innermost);
            outermost.AddControl(intermediate);

            outermost.EventBubbled += outmost_EventBubbled;

            controlThatTriggersTheEvent.TriggerEvent();

            // The test should never reach this line.
            Assert.Fail();
        }