Ejemplo n.º 1
0
        public void NominalTest()
        {
            var pcQueue = new Queue <PropertyChangedEventArgs>();

            var selector = new CollectionSelector <string>(new [] { "Item 1", "Item 2", "Item 3" });

            selector.PropertyChanged += (s, p) => pcQueue.Enqueue(p);

            Check(selector, -1, null);
            pcQueue.IsEmpty();

            selector.SelectedIndex = 2;
            Check(selector, 2, "Item 3");
            pcQueue.CheckNext(Properties.SelectedIndexPropertyChanged)
            .CheckNext(Properties.SelectedItemPropertyChanged);

            selector.SelectedIndex = -1;
            Check(selector, -1, null);
            pcQueue.CheckNext(Properties.SelectedIndexPropertyChanged)
            .CheckNext(Properties.SelectedItemPropertyChanged);

            selector.SelectedItem = "Item 2";
            Check(selector, 1, "Item 2");
            pcQueue.CheckNext(Properties.SelectedItemPropertyChanged)
            .CheckNext(Properties.SelectedIndexPropertyChanged);

            selector.SelectedItem = "Item 2";
            Check(selector, 1, "Item 2");
            pcQueue.IsEmpty();

            selector.SelectedIndex = 1;
            Check(selector, 1, "Item 2");
            pcQueue.IsEmpty();
        }
        public void DeleteAndMoveSelectedItemTest()
        {
            var observableCollection = new ObservableCollection <int>(new List <int>()
            {
                1, 2, 3, 4, 5, 6
            });
            var rool = new ReadOnlyObservableList <int>(observableCollection);
            var cs   = new CollectionSelector <int>(rool);

            cs.SelectedIndex = 1;
            Assert.AreEqual(cs.Items.Count, 6);

            //[1 2 3 4 5 6]
            //SelectedIndex = 1
            //SelectedItem = 2

            observableCollection.Remove(2);
            Assert.AreEqual(cs.SelectedIndex, 1);
            Assert.AreEqual(cs.SelectedItem, 3);
            Assert.AreEqual(cs.Items.Count, 5);

            //[1 3 4 5 6]
            //SelectedIndex = 1
            //SelectedItem = 3

            observableCollection.Move(1, 3);
            Assert.AreEqual(cs.SelectedIndex, 3);
            Assert.AreEqual(cs.SelectedItem, 3);
            Assert.AreEqual(cs.Items.Count, 5);

            //[1 4 5 3 6]
            //SelectedIndex = 3
            //SelectedItem = 3
        }
        public void SelectedIndexAndItemTest()
        {
            var observableCollection = new ObservableCollection <int>(new List <int>()
            {
                1, 2, 3, 4, 5, 6
            });
            var rool = new ReadOnlyObservableList <int>(observableCollection);
            var cs   = new CollectionSelector <int>(rool);

            cs.SelectedItemChanged  += Load1;
            cs.SelectedItemChanging += Load2;
            cs.SelectedIndex         = 1;
            Assert.AreEqual(cs.SelectedItem, 2);
            Assert.AreEqual(changingItems.Count, 1);
            Assert.AreEqual(changingItems[0], -1);
            Assert.AreEqual(changeItems.Count, 1);
            Assert.AreEqual(changeItems[0], 1);
        }
Ejemplo n.º 4
0
        public IEnumerable <QueryToken> GetAllTokens(QueryToken parent)
        {
            var info = metas.GetOrAdd(parent, qt =>
            {
                Expression <Func <T, V> > lambda = t => ValueSelector.Evaluate(CollectionSelector.Evaluate(t).SingleOrDefaultEx() !);

                Expression e = MetadataVisitor.JustVisit(lambda, MetaExpression.FromToken(qt, typeof(T)));

                var result = new ExtensionRouteInfo();

                if (e is MetaExpression me && me.Meta is CleanMeta cm && cm.PropertyRoutes.Any())
                {
                    var cleanType = me !.Type.CleanType();

                    result.PropertyRoute   = cm.PropertyRoutes.Only();
                    result.Implementations = me.Meta.Implementations;
                    result.Format          = ColumnDescriptionFactory.GetFormat(cm.PropertyRoutes);
                    result.Unit            = ColumnDescriptionFactory.GetUnit(cm.PropertyRoutes);
                }

                return(result);
            });
        public void InsertElementTest()
        {
            var observableCollection = new ObservableCollection <int>(new List <int>()
            {
                1, 2, 3, 4, 5, 6
            });
            var rool = new ReadOnlyObservableList <int>(observableCollection);
            var cs   = new CollectionSelector <int>(rool);

            cs.SelectedIndex = 2;

            //[1 2 3 4 5 6]
            //SelectedIndex = 2
            //SelectedItem = 3

            Assert.AreEqual(cs.SelectedIndex, 2);
            Assert.AreEqual(cs.SelectedItem, 3);
            Assert.AreEqual(cs.Items.Count, 6);

            observableCollection.Insert(2, 7);
            Assert.AreEqual(cs.Items.Count, 7);

            //[1 2 7 3 4 5 6]
            //SelectedIndex = 3
            //SelectedItem = 3

            Assert.AreEqual(cs.Items[0], 1);
            Assert.AreEqual(cs.Items[1], 2);
            Assert.AreEqual(cs.Items[2], 7);
            Assert.AreEqual(cs.Items[3], 3);
            Assert.AreEqual(cs.Items[4], 4);
            Assert.AreEqual(cs.Items[5], 5);
            Assert.AreEqual(cs.Items[6], 6);

            Assert.AreEqual(cs.SelectedIndex, 3);
            Assert.AreEqual(cs.SelectedItem, 3);
        }
        public void AddElementTest()
        {
            var observableCollection = new ObservableCollection <int>(new List <int>()
            {
                1, 2, 3, 4, 5, 6
            });
            var rool = new ReadOnlyObservableList <int>(observableCollection);
            var cs   = new CollectionSelector <int>(rool);

            cs.SelectedIndex = 1;
            Assert.AreEqual(cs.SelectedIndex, 1);
            Assert.AreEqual(cs.SelectedItem, 2);
            Assert.AreEqual(cs.Items.Count, 6);

            //[1 2 3 4 5 6]
            //SelectedIndex = 1
            //SelectedItem = 2

            observableCollection.Add(7);
            Assert.AreEqual(cs.Items.Count, 7);

            Assert.AreEqual(cs.Items[0], 1);
            Assert.AreEqual(cs.Items[1], 2);
            Assert.AreEqual(cs.Items[2], 3);
            Assert.AreEqual(cs.Items[3], 4);
            Assert.AreEqual(cs.Items[4], 5);
            Assert.AreEqual(cs.Items[5], 6);
            Assert.AreEqual(cs.Items[6], 7);

            Assert.AreEqual(cs.SelectedIndex, 1);
            Assert.AreEqual(cs.SelectedItem, 2);

            observableCollection.Clear();
            Assert.AreEqual(cs.SelectedIndex, -1);
            Assert.AreEqual(cs.SelectedItem, 0);
        }
        private CollectionSelector <int> Copy(CollectionSelector <int> cs1)
        {
            var observableCollection = new ObservableCollection <int>();

            for (int i = 0; i < cs1.Items.Count; i++)
            {
                observableCollection.Add(cs1.Items[i]);
            }

            var rool = new ReadOnlyObservableList <int>(observableCollection);
            CollectionSelector <int> cs = new CollectionSelector <int>(rool);

            var ss = cs1.SelectedItem;

            for (int i = 0; i < cs.Items.Count; i++)
            {
                if (cs.Items[i] == ss)
                {
                    cs.SelectedIndex = i;
                }
            }

            return(cs);
        }
Ejemplo n.º 8
0
 private static void Check(CollectionSelector <string> selector, int selectedIndex, string selectedItem)
 {
     Assert.AreEqual(selectedIndex, selector.SelectedIndex, "SelectedIndex");
     Assert.AreEqual(selectedItem, selector.SelectedItem, "SelectedItem");
 }