Example #1
0
 public void DdpCollection_Constructor_NullCollectionNameThrows()
 {
     var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
     PCLTesting.ExceptionAssert.Throws<ArgumentNullException>(() =>
     {
         var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, string.Empty); });
 }
Example #2
0
        public void DdpCollection_RemoveAsync_NullItem()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            PCLTesting.ExceptionAssert.Throws<ArgumentNullException>(() => collection.RemoveAsync(null));
        }
Example #3
0
        public async Task DdpCollection_AddAsync_NullItem()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            ExceptionAssert.ExpectAggregateException(() => collection.AddAsync(null).Wait(), typeof(ArgumentNullException));
        }
Example #4
0
        public void DdpCollection_RemoveAsync_CallsServerMethod()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject = new TestDdpObject() {Id = "1", integerField = 10, StringProperty = "FooBar"};

            remoteMethodCall.Setup(x => x.Call<int>(It.IsAny<string>(), It.IsAny<object[]>()))
                .Returns(Task.FromResult(1));

            collection.RemoveAsync(testObject.Id).Wait();

            remoteMethodCall.Verify(
                x =>
                    x.Call<int>(It.Is<string>(s => s.Equals(@"/TestCollection/remove")),
                        It.Is<object[]>(c => c.Length == 1 && ((IdParameter) c.First()).Id == "1")));
        }
Example #5
0
        public void DdpCollection_Filter_SortedAndWhere()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject3 = new TestDdpObject() { Id = "4", integerField = 4 };
            var testObject1 = new TestDdpObject() { Id = "1", integerField = 2 };
            var testObject2 = new TestDdpObject() { Id = "2", integerField = 1 };

            ((IDdpCollection)collection).Added(testObject3.Id, JObject.FromObject(testObject3));
            ((IDdpCollection)collection).Added(testObject1.Id, JObject.FromObject(testObject1));
            ((IDdpCollection)collection).Added(testObject2.Id, JObject.FromObject(testObject2));

            var filteredCollection = collection.Filter(whereFilter: x => x.integerField < 4, sortFilter: (x,y) => x.integerField - y.integerField);

            Assert.AreEqual(2, filteredCollection.Count);

            Assert.AreEqual(1, filteredCollection[0].integerField);
            Assert.AreEqual(2, filteredCollection[1].integerField);
        }
Example #6
0
        public void DdpCollection_Filter_WhereObjectAddedRemovedChange()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject3 = new TestDdpObject() { Id = "4", integerField = 4 };
            var testObject1 = new TestDdpObject() { Id = "1", integerField = 0 };
            var testObject2 = new TestDdpObject() { Id = "2", integerField = 2 };

            ((IDdpCollection)collection).Added(testObject3.Id, JObject.FromObject(testObject3));
            ((IDdpCollection)collection).Added(testObject1.Id, JObject.FromObject(testObject1));
            ((IDdpCollection)collection).Added(testObject2.Id, JObject.FromObject(testObject2));

            var filteredCollection = collection.Filter(whereFilter: x => x.integerField == 4);

            Assert.AreEqual(1, filteredCollection.Count);

            ((IDdpCollection)collection).Changed(testObject3.Id, new Dictionary<string, JToken>() { { "integerField", 1 } }, new string[0]);

            Assert.AreEqual(0, filteredCollection.Count);
        }
Example #7
0
        public void DdpCollection_Filter_WhereMatchAll()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject3 = new TestDdpObject() { Id = "4", integerField = 4 };
            var testObject1 = new TestDdpObject() { Id = "1", integerField = 0 };
            var testObject2 = new TestDdpObject() { Id = "2", integerField = 2 };

            ((IDdpCollection)collection).Added(testObject3.Id, JObject.FromObject(testObject3));
            ((IDdpCollection)collection).Added(testObject1.Id, JObject.FromObject(testObject1));
            ((IDdpCollection)collection).Added(testObject2.Id, JObject.FromObject(testObject2));

            var filteredCollection = collection.Filter(whereFilter: x => true);

            Assert.AreEqual(3, filteredCollection.Count);
        }
Example #8
0
        /// <summary>
        /// Initializes the ViewModel from  Meteor
        /// </summary>
        /// <returns>
        /// The <see cref="Task"/>.
        /// </returns>
        private async Task Initialize()
        {
            this.client = new MeteorClient(new Uri("ws://localhost:3000/websocket"));
            await this.client.ConnectAsync();

            this.players = this.client.GetCollection<Player>("players");
            DdpFilteredCollection<Player> sortedPlayers = this.players.Filter(
                sortFilter: (p1, p2) =>
                    {
                        var scoreComparison = p2.Score.CompareTo(p1.Score);

                        if (scoreComparison != 0)
                        {
                            return scoreComparison;
                        }

                        return string.Compare(p1.Name, p2.Name, System.StringComparison.Ordinal);
                    });

            this.viewModel = new LeaderboardViewModel(sortedPlayers);

            this.DataContext = this.viewModel;
        }
Example #9
0
 private DdpFilteredCollection<TestDdpObject> GetSortedCollection(DdpCollection<TestDdpObject> collection)
 {
     return collection.Filter(sortFilter: (x, y) => x.integerField - y.integerField);
 }
Example #10
0
        private void AddObject(DdpCollection<TestDdpObject> collection, int value)
        {
            var id = Utilities.GenerateId();

            ((IDdpCollection)collection).Added(id, JObject.FromObject(new TestDdpObject() { integerField = value}));
        }
Example #11
0
        public void DdpCollection_Enumerator_CanEnumerateItems()
        {

            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();

            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject = new TestDdpObject() { Id = "11", integerField = 101, StringProperty = "FooBar" };

            ((IDdpCollection)collection).Added(testObject.Id, JObject.FromObject(testObject));
            ((IDdpCollection)collection).Added(testObject.Id, JObject.FromObject(testObject));

            int loopTimes = 0;
            foreach (var itemObject in (IEnumerable)collection)
            {
                var item = (TestDdpObject) itemObject;
                Assert.AreEqual(testObject.Id, item.Id);
                Assert.AreEqual(testObject.integerField, item.integerField);
                Assert.AreEqual(testObject.StringProperty, item.StringProperty);
                loopTimes++;
            }

            Assert.AreEqual(2, loopTimes);
        }
Example #12
0
 public void DdpCollection_Constructor_NullClientThrows()
 {
     PCLTesting.ExceptionAssert.Throws<ArgumentNullException>(
         () => { var collection = new DdpCollection<TestDdpObject>(null, "collectionName"); });
 }
Example #13
0
        public void DdpCollection_Removed_InvokedOnChangedEvents()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();

            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject = new TestDdpObject() { Id = "11", integerField = 101, StringProperty = "FooBar" };

            var collectionChangedCalled = false;
            var propertyChangedCalled = false;

            ((IDdpCollection)collection).Added(testObject.Id, JObject.FromObject(testObject));

            Assert.AreEqual(1, collection.Count);

            ((INotifyCollectionChanged)collection).CollectionChanged += (sender, args) =>
            {
                Assert.AreEqual(NotifyCollectionChangedAction.Remove, args.Action);
                Assert.AreEqual(1, args.OldItems.Count);

                var removedItem = args.OldItems[0] as TestDdpObject;

                Assert.IsNotNull(removedItem);

                Assert.AreEqual(testObject.Id, removedItem.Id);
                Assert.AreEqual(testObject.integerField, removedItem.integerField);
                Assert.AreEqual(testObject.StringProperty, removedItem.StringProperty);

                collectionChangedCalled = true;
            };

            ((INotifyPropertyChanged)collection).PropertyChanged += (sender, args) =>
            {
                propertyChangedCalled = true;
            };

            ((IDdpCollection)collection).Removed(testObject.Id);

            Assert.IsTrue(collectionChangedCalled);
            Assert.IsTrue(propertyChangedCalled);
            Assert.AreEqual(0, collection.Count);
        }
Example #14
0
        public void DdpCollection_Changed_ChangesObject()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();

            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject = new TestDdpObject() { Id = "11", integerField = 101, StringProperty = "FooBar" };

            ((IDdpCollection)collection).Added(testObject.Id, JObject.FromObject(testObject));

            var objectChanged = collection.First();

            Assert.AreEqual(101, objectChanged.integerField);

            ((IDdpCollection) collection).Changed(testObject.Id,
                new Dictionary<string, JToken>() {{"integerField", 900}}, new string[0]);

            Assert.AreEqual(900, objectChanged.integerField);
        }
Example #15
0
        public void DdpCollection_UpdateAsync_NullID()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject = new TestDdpObject() { Id = "11", integerField = 10, StringProperty = "FooBar" };

            PCLTesting.ExceptionAssert.Throws<ArgumentNullException>(() => collection.UpdateAsync(string.Empty, testObject));
        }
Example #16
0
        private void RunChangeTests(DdpCollection<TestDdpObject> collection, DdpFilteredCollection<TestDdpObject> sortedCollection, int numberOfChanges, int minRange,
            int maxRange)
        {
            Random random = new Random();
            for (int i = 0; i < numberOfChanges; i++)
            {
                var indexToChange = random.Next(0, collection.Count);
                var newValue = random.Next(minRange, maxRange);

                this.ChangeObject(collection, collection[indexToChange].Id, newValue);

                this.AssertCollectionSorted(sortedCollection);
            }
        }
Example #17
0
        public void DdpCollection_Filter_InsertsSorted()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var sortedCollection = collection.Filter(sortFilter: (x, y) => x.integerField - y.integerField);

            var testObject3 = new TestDdpObject() { Id = "3", integerField = 3 };
            var testObject1 = new TestDdpObject() { Id = "1", integerField = 1 };
            var testObject2 = new TestDdpObject() { Id = "2", integerField = 2 };

            ((IDdpCollection)collection).Added(testObject3.Id, JObject.FromObject(testObject3));

            Assert.AreEqual(3, collection[0].integerField);
            Assert.AreEqual(3, sortedCollection[0].integerField);

            ((IDdpCollection)collection).Added(testObject1.Id, JObject.FromObject(testObject1));

            Assert.AreEqual(3, collection[0].integerField);
            Assert.AreEqual(1, collection[1].integerField);

            Assert.AreEqual(1, sortedCollection[0].integerField);
            Assert.AreEqual(3, sortedCollection[1].integerField);

            ((IDdpCollection)collection).Added(testObject2.Id, JObject.FromObject(testObject2));

            Assert.AreEqual(3, collection[0].integerField);
            Assert.AreEqual(1, collection[1].integerField);
            Assert.AreEqual(2, collection[2].integerField);


            Assert.AreEqual(1, sortedCollection[0].integerField);
            Assert.AreEqual(2, sortedCollection[1].integerField);
            Assert.AreEqual(3, sortedCollection[2].integerField);
        }
Example #18
0
 private void ChangeObject(DdpCollection<TestDdpObject> collection, string id, int newValue)
 {
     ((IDdpCollection)collection).Changed(id, new Dictionary<string, JToken>() { { "integerField", newValue } }, new string[0]);
 }
Example #19
0
        public void DdpCollection_Filter_ChangesSortedMoveToMiddleFromEnd()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject3 = new TestDdpObject() { Id = "4", integerField = 4 };
            var testObject1 = new TestDdpObject() { Id = "1", integerField = 0 };
            var testObject2 = new TestDdpObject() { Id = "2", integerField = 2 };

            ((IDdpCollection)collection).Added(testObject3.Id, JObject.FromObject(testObject3));
            ((IDdpCollection)collection).Added(testObject1.Id, JObject.FromObject(testObject1));
            ((IDdpCollection)collection).Added(testObject2.Id, JObject.FromObject(testObject2));

            var sortedCollection = collection.Filter(sortFilter: (x, y) => x.integerField - y.integerField);

            Assert.AreEqual(4, collection[0].integerField);
            Assert.AreEqual(0, collection[1].integerField);
            Assert.AreEqual(2, collection[2].integerField);

            Assert.AreEqual(0, sortedCollection[0].integerField);
            Assert.AreEqual(2, sortedCollection[1].integerField);
            Assert.AreEqual(4, sortedCollection[2].integerField);

            ((IDdpCollection)collection).Changed(testObject3.Id, new Dictionary<string, JToken>() { { "integerField", 1 } }, new string[0]);

            Assert.AreEqual(1, collection[0].integerField);
            Assert.AreEqual(0, collection[1].integerField);
            Assert.AreEqual(2, collection[2].integerField);

            Assert.AreEqual(0, sortedCollection[0].integerField);
            Assert.AreEqual(1, sortedCollection[1].integerField);
            Assert.AreEqual(2, sortedCollection[2].integerField);
        }
Example #20
0
        private void RunAddTests(DdpCollection<TestDdpObject> collection, DdpFilteredCollection<TestDdpObject> sortedCollection, int numberOfAdds, int minRange, int maxRange)
        {
            Random random = new Random();
            for (int i = 0; i < numberOfAdds; i++)
            {
                var newValue = random.Next(minRange, maxRange);

                this.AddObject(collection, newValue);

                this.AssertCollectionSorted(sortedCollection);
            }
        }
Example #21
0
 /// <summary>
 /// Initializes the internal collections
 /// </summary>
 private void Initialize()
 {
     this.users = this.GetCollection<MeteorUser>("users");
 }