Ejemplo n.º 1
0
        public MenuBar(int left, int top, int width) : base(left, top, width, 1)
        {
            _menuItemStack        = new MenuItemStack(new MenuItemList());
            _currentMenuItemIndex = 0;

            _focusBackgroundColor = ConsoleColor.Gray;
            _focusForegroundColor = ConsoleColor.Black;
        }
Ejemplo n.º 2
0
        public void Acceptance()
        {
            var items = new MenuItemList();
            var a     = items.AddItem(new MenuItem("a", "ia"));
            var a1    = a.Submenu.AddItem("a1");

            a1.Submenu.AddItem("a11");
            a1.Submenu.AddItem("a12");
            var a2 = a.Submenu.AddItem("a2");

            a2.Submenu.AddItem("a21");
            a2.Submenu.AddItem("a22");
            a.Submenu.AddItem("a3");
            var b  = items.AddItem(new MenuItem("b", "ib"));
            var b1 = b.Submenu.AddItem("b1");

            b1.Submenu.AddItem("b11");
            b1.Submenu.AddItem("b12");
            b.Submenu.AddItem("b2");
            items.AddItem(new MenuItem("c", "ic"));

            var sut = new MenuItemStack(items);

            var pathItemTexts = sut.PathMenuItems.Select(i => i.Text).ToArray();

            Assert.AreEqual(0, pathItemTexts.Length);

            var currentItemTexts = sut.CurrentMenuItems.Select(i => i.Text).ToArray();

            Assert.AreEqual(new[] { "a", "b", "c" }, currentItemTexts);

            var item = sut.PushItem(0); // +a

            Assert.AreSame(a, item);

            pathItemTexts = sut.PathMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(new[] { "a" }, pathItemTexts);

            currentItemTexts = sut.CurrentMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(new[] { "a1", "a2", "a3" }, currentItemTexts);


            sut.PushItem(1); // +a2

            pathItemTexts = sut.PathMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(new[] { "a", "a2" }, pathItemTexts);

            currentItemTexts = sut.CurrentMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(new[] { "a21", "a22" }, currentItemTexts);


            sut.PushItem(0); // +a21

            pathItemTexts = sut.PathMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(new[] { "a", "a2", "a21" }, pathItemTexts);

            currentItemTexts = sut.CurrentMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(0, currentItemTexts.Length);

            var itemIndex = sut.PopItem(); // -a21

            Assert.AreEqual(0, itemIndex);

            pathItemTexts = sut.PathMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(new[] { "a", "a2" }, pathItemTexts);

            currentItemTexts = sut.CurrentMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(new[] { "a21", "a22" }, currentItemTexts);

            itemIndex = sut.PopItem(); // -a2
            Assert.AreEqual(1, itemIndex);

            sut.PopItem();   // -a
            sut.PushItem(1); // +b
            sut.PushItem(0); // +b1

            pathItemTexts = sut.PathMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(new[] { "b", "b1" }, pathItemTexts);

            currentItemTexts = sut.CurrentMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(new[] { "b11", "b12" }, currentItemTexts);

            sut.Clear();

            pathItemTexts = sut.PathMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(0, pathItemTexts.Length);

            currentItemTexts = sut.CurrentMenuItems.Select(i => i.Text).ToArray();
            Assert.AreEqual(new[] { "a", "b", "c" }, currentItemTexts);
        }