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); }