public void SaveCurrentItemAndRestoreCurrentItemTest()
        {
            var window = new EPuzzleWindow();
            var windowState = new WindowState(window);

            var button = new EigoTestButtonItem();
            windowState.Items.Add(button);
            windowState.CurrentItem = button;

            var info = windowState.SaveCurrentItem();
            windowState.CurrentItem = null;

            windowState.RestoreCurrentItem(info);
            Assert.IsInstanceOf<EigoTestButtonItem>(windowState.CurrentItem);

            windowState.CurrentItem = null;
            info = windowState.SaveCurrentItem();

            windowState.CurrentItem = button;
            windowState.RestoreCurrentItem(info);
            Assert.Null(windowState.CurrentItem);

            var button2 = new EigoTestButtonItem();
            windowState.Items.Add(button2);
            windowState.CurrentItem = button2;

            info = windowState.SaveCurrentItem();
            windowState.CurrentItem = button;
            windowState.RestoreCurrentItem(info);

            Assert.AreSame(button2, windowState.CurrentItem);

            button.Name = "a";
            windowState.CurrentItem = button;
            info = windowState.SaveCurrentItem();

            windowState.Items.Clear();

            var button3 = new EigoTestButtonItem() { Name = "b", };
            var button4 = new EigoTestButtonItem() { Name = "c", };
            var button5 = new EigoTestButtonItem() { Name = "d", };
            var button6 = new EigoTestButtonItem() { Name = "e", };

            windowState.Items.Add(button3);
            windowState.Items.Add(button4);
            windowState.Items.Add(button5);
            windowState.Items.Add(button6);
            windowState.RestoreCurrentItem(info);

            Assert.Null(windowState.CurrentItem);

            button6.Name = "a";
            windowState.RestoreCurrentItem(info);
            Assert.AreSame(button6, windowState.CurrentItem);
            Assert.AreNotSame(button, windowState.CurrentItem);
        }