public void Test_SelectedItem_Default()
        {
            var items           = Enumerable.Range(1, 10).ToArray();
            var listDetailsView = new ListDetailsView();

            listDetailsView.ItemsSource = items;
            Assert.IsNull(listDetailsView.SelectedItem);
        }
        public void Test_SelectedIndex_Default()
        {
            var items           = Enumerable.Range(1, 10).ToArray();
            var listDetailsView = new ListDetailsView();

            listDetailsView.ItemsSource = items;
            Assert.AreEqual(-1, listDetailsView.SelectedIndex);
        }
        public void Test_SelectedItem_Syncs_SelectedIndex()
        {
            var items           = Enumerable.Range(0, 10).ToArray();
            var listDetailsView = new ListDetailsView();

            listDetailsView.ItemsSource  = items;
            listDetailsView.SelectedItem = items[3];
            Assert.AreEqual(3, listDetailsView.SelectedIndex);
        }
        public void Test_SelectedIndex_Syncs_SelectedItem()
        {
            var items           = Enumerable.Range(1, 10).ToArray();
            var listDetailsView = new ListDetailsView();

            listDetailsView.ItemsSource   = items;
            listDetailsView.SelectedIndex = 6;
            Assert.AreEqual(items[6], listDetailsView.SelectedItem);
        }
        public void Test_UnselectUsingItem()
        {
            var items           = Enumerable.Range(1, 10).ToArray();
            var listDetailsView = new ListDetailsView();

            listDetailsView.ItemsSource  = items;
            listDetailsView.SelectedItem = items[5];
            listDetailsView.SelectedItem = null;
            Assert.AreEqual(-1, listDetailsView.SelectedIndex);
        }
        public void Test_UnselectUsingIndex()
        {
            var items           = Enumerable.Range(1, 10).ToArray();
            var listDetailsView = new ListDetailsView();

            listDetailsView.ItemsSource   = items;
            listDetailsView.SelectedIndex = 5;
            listDetailsView.SelectedIndex = -1;
            Assert.IsNull(listDetailsView.SelectedItem);
        }
        public void Test_Sorting_Keeps_SelectedIndex()
        {
            var items           = Enumerable.Range(0, 10).ToArray();
            var listDetailsView = new ListDetailsView
            {
                ItemsSource  = items,
                SelectedItem = items[3]
            };

            Assert.AreEqual(3, listDetailsView.SelectedIndex);
        }
        public void Test_ItemsRemoved()
        {
            var items           = new ObservableCollection <int>(Enumerable.Range(0, 10));
            var listDetailsView = new ListDetailsView
            {
                ItemsSource   = items,
                SelectedIndex = 3
            };

            listDetailsView.ItemsSource = null;
            Assert.AreEqual(null, listDetailsView.SelectedItem);
            Assert.AreEqual(-1, listDetailsView.SelectedIndex);
        }
        public void Test_Sorting_Keeps_SelectedItem()
        {
            var items           = new ObservableCollection <int>(Enumerable.Range(0, 10));
            var listDetailsView = new ListDetailsView
            {
                ItemsSource   = items,
                SelectedIndex = 3
            };
            var item = listDetailsView.SelectedItem;

            listDetailsView.ItemsSource = new ObservableCollection <int>(items.OrderByDescending(i => i));
            Assert.AreEqual(item, listDetailsView.SelectedItem);
            listDetailsView.ItemsSource = new ObservableCollection <int>(items.OrderBy(i => i));
            Assert.AreEqual(item, listDetailsView.SelectedItem);
        }