Beispiel #1
0
        public void Internal_Tests()
        {
            var top          = new Toplevel();
            var eventInvoked = "";

            top.ChildUnloaded += (e) => eventInvoked = "ChildUnloaded";
            top.OnChildUnloaded(top);
            Assert.Equal("ChildUnloaded", eventInvoked);
            top.ChildLoaded += (e) => eventInvoked = "ChildLoaded";
            top.OnChildLoaded(top);
            Assert.Equal("ChildLoaded", eventInvoked);
            top.Closed += (e) => eventInvoked = "Closed";
            top.OnClosed(top);
            Assert.Equal("Closed", eventInvoked);
            top.Closing += (e) => eventInvoked = "Closing";
            top.OnClosing(new ToplevelClosingEventArgs(top));
            Assert.Equal("Closing", eventInvoked);
            top.AllChildClosed += () => eventInvoked = "AllChildClosed";
            top.OnAllChildClosed();
            Assert.Equal("AllChildClosed", eventInvoked);
            top.ChildClosed += (e) => eventInvoked = "ChildClosed";
            top.OnChildClosed(top);
            Assert.Equal("ChildClosed", eventInvoked);
            top.Deactivate += (e) => eventInvoked = "Deactivate";
            top.OnDeactivate(top);
            Assert.Equal("Deactivate", eventInvoked);
            top.Activate += (e) => eventInvoked = "Activate";
            top.OnActivate(top);
            Assert.Equal("Activate", eventInvoked);
            top.Loaded += () => eventInvoked = "Loaded";
            top.OnLoaded();
            Assert.Equal("Loaded", eventInvoked);
            top.Ready += () => eventInvoked = "Ready";
            top.OnReady();
            Assert.Equal("Ready", eventInvoked);
            top.Unloaded += () => eventInvoked = "Unloaded";
            top.OnUnloaded();
            Assert.Equal("Unloaded", eventInvoked);

            top.AddMenuStatusBar(new MenuBar());
            Assert.NotNull(top.MenuBar);
            top.AddMenuStatusBar(new StatusBar());
            Assert.NotNull(top.StatusBar);
            top.RemoveMenuStatusBar(top.MenuBar);
            Assert.Null(top.MenuBar);
            top.RemoveMenuStatusBar(top.StatusBar);
            Assert.Null(top.StatusBar);

            Application.Begin(top);
            Assert.Equal(top, Application.Top);

            // top is Application.Top without menu and status bar.
            var supView = top.EnsureVisibleBounds(top, 2, 2, out int nx, out int ny, out View mb, out View sb);

            Assert.Equal(Application.Top, supView);
            Assert.Equal(0, nx);
            Assert.Equal(0, ny);
            Assert.Null(mb);
            Assert.Null(sb);

            top.AddMenuStatusBar(new MenuBar());
            Assert.NotNull(top.MenuBar);

            // top is Application.Top with a menu and without status bar.
            top.EnsureVisibleBounds(top, 2, 2, out nx, out ny, out mb, out sb);
            Assert.Equal(0, nx);
            Assert.Equal(1, ny);
            Assert.NotNull(mb);
            Assert.Null(sb);

            top.AddMenuStatusBar(new StatusBar());
            Assert.NotNull(top.StatusBar);

            // top is Application.Top with a menu and status bar.
            top.EnsureVisibleBounds(top, 2, 2, out nx, out ny, out mb, out sb);
            Assert.Equal(0, nx);
            Assert.Equal(1, ny);
            Assert.NotNull(mb);
            Assert.NotNull(sb);

            top.RemoveMenuStatusBar(top.MenuBar);
            Assert.Null(top.MenuBar);

            // top is Application.Top without a menu and with a status bar.
            top.EnsureVisibleBounds(top, 2, 2, out nx, out ny, out mb, out sb);
            Assert.Equal(0, nx);
            Assert.Equal(0, ny);
            Assert.Null(mb);
            Assert.NotNull(sb);

            top.RemoveMenuStatusBar(top.StatusBar);
            Assert.Null(top.StatusBar);
            Assert.Null(top.MenuBar);

            var win = new Window()
            {
                Width = Dim.Fill(), Height = Dim.Fill()
            };

            top.Add(win);
            top.LayoutSubviews();

            // The SuperView is always the same regardless of the caller.
            supView = top.EnsureVisibleBounds(win, 0, 0, out nx, out ny, out mb, out sb);
            Assert.Equal(Application.Top, supView);
            supView = win.EnsureVisibleBounds(win, 0, 0, out nx, out ny, out mb, out sb);
            Assert.Equal(Application.Top, supView);

            // top is Application.Top without menu and status bar.
            top.EnsureVisibleBounds(win, 0, 0, out nx, out ny, out mb, out sb);
            Assert.Equal(0, nx);
            Assert.Equal(0, ny);
            Assert.Null(mb);
            Assert.Null(sb);

            top.AddMenuStatusBar(new MenuBar());
            Assert.NotNull(top.MenuBar);

            // top is Application.Top with a menu and without status bar.
            top.EnsureVisibleBounds(win, 2, 2, out nx, out ny, out mb, out sb);
            Assert.Equal(0, nx);
            Assert.Equal(1, ny);
            Assert.NotNull(mb);
            Assert.Null(sb);

            top.AddMenuStatusBar(new StatusBar());
            Assert.NotNull(top.StatusBar);

            // top is Application.Top with a menu and status bar.
            top.EnsureVisibleBounds(win, 30, 20, out nx, out ny, out mb, out sb);
            Assert.Equal(0, nx);
            Assert.Equal(1, ny);
            Assert.NotNull(mb);
            Assert.NotNull(sb);

            top.RemoveMenuStatusBar(top.MenuBar);
            top.RemoveMenuStatusBar(top.StatusBar);
            Assert.Null(top.StatusBar);
            Assert.Null(top.MenuBar);

            top.Remove(win);

            win = new Window()
            {
                Width = 60, Height = 15
            };
            top.Add(win);

            // top is Application.Top without menu and status bar.
            top.EnsureVisibleBounds(win, 0, 0, out nx, out ny, out mb, out sb);
            Assert.Equal(0, nx);
            Assert.Equal(0, ny);
            Assert.Null(mb);
            Assert.Null(sb);

            top.AddMenuStatusBar(new MenuBar());
            Assert.NotNull(top.MenuBar);

            // top is Application.Top with a menu and without status bar.
            top.EnsureVisibleBounds(win, 2, 2, out nx, out ny, out mb, out sb);
            Assert.Equal(2, nx);
            Assert.Equal(2, ny);
            Assert.NotNull(mb);
            Assert.Null(sb);

            top.AddMenuStatusBar(new StatusBar());
            Assert.NotNull(top.StatusBar);

            // top is Application.Top with a menu and status bar.
            top.EnsureVisibleBounds(win, 30, 20, out nx, out ny, out mb, out sb);
            Assert.Equal(20, nx);             // 20+60=80
            Assert.Equal(9, ny);              // 9+15+1(mb)=25
            Assert.NotNull(mb);
            Assert.NotNull(sb);

            top.PositionToplevels();
            Assert.Equal(new Rect(0, 1, 60, 15), win.Frame);

            Assert.Null(Toplevel.dragPosition);
            win.MouseEvent(new MouseEvent()
            {
                X = 6, Y = 0, Flags = MouseFlags.Button1Pressed
            });
            Assert.Equal(new Point(6, 0), Toplevel.dragPosition);
            win.MouseEvent(new MouseEvent()
            {
                X = 6, Y = 0, Flags = MouseFlags.Button1Released
            });
            Assert.Null(Toplevel.dragPosition);
            win.CanFocus = false;
            win.MouseEvent(new MouseEvent()
            {
                X = 6, Y = 0, Flags = MouseFlags.Button1Pressed
            });
            Assert.Null(Toplevel.dragPosition);
        }