Example #1
0
        public void TestFindWithNullPropertiesQuery()
        {
            var findWithPropertiesEntity = new FindWithPropertiesEntity {
                Name = "bot_#foobar", Age = 20
            };

            Backendless.Persistence.Save(findWithPropertiesEntity);

            List <String> properties = null;
            var           dataQuery  = new BackendlessDataQuery(properties);

            BackendlessCollection <FindWithPropertiesEntity> backendlessCollection =
                Backendless.Persistence.Of <FindWithPropertiesEntity>().Find(dataQuery);

            Assert.IsTrue(backendlessCollection.TotalObjects > 0, "Server found wrong number of objects");
            Assert.IsTrue(backendlessCollection.GetCurrentPage().Count > 0, "Server returned wrong number of objects");

            foreach (FindWithPropertiesEntity entity in backendlessCollection.GetCurrentPage())
            {
                Assert.IsTrue(entity.Age > 0, "Server result contained wrong age field value");
                Assert.IsNotNull(entity.Name, "Server result contained non null field");
                Assert.IsNotNull(entity.ObjectId, "Server result contained non null field");
                Assert.IsNotNull(entity.Created, "Server result contained non null field");
            }
        }
Example #2
0
        public BackendlessCollection <SearchMatchesResult> RelativeFind(BackendlessGeoQuery geoQuery)
        {
            if (geoQuery == null)
            {
                throw new ArgumentNullException(ExceptionMessage.NULL_GEO_QUERY);
            }

            if (geoQuery.RelativeFindMetadata.Count == 0 || geoQuery.RelativeFindPercentThreshold == 0)
            {
                throw new ArgumentException(ExceptionMessage.INCONSISTENT_GEO_RELATIVE);
            }

            Invoker.Api api   = Invoker.Api.UNKNOWN;
            string      query = GetGetPointsQuery(geoQuery, out api);

            BackendlessCollection <SearchMatchesResult> result = null;
            Dictionary <string, BackendlessCollection <SearchMatchesResult> > r = Invoker.InvokeSync <Dictionary <string, BackendlessCollection <SearchMatchesResult> > >(Invoker.Api.GEOSERVICE_RELATIVEFIND, new Object[] { null, query });

            if (r != null && r.ContainsKey(COLLECTION))
            {
                result       = (BackendlessCollection <SearchMatchesResult>)r[COLLECTION];
                result.Query = geoQuery;
            }

            return(result);
        }
Example #3
0
        public void RelativeFind(BackendlessGeoQuery geoQuery, AsyncCallback <BackendlessCollection <SearchMatchesResult> > callback)
        {
            try
            {
                if (geoQuery == null)
                {
                    throw new ArgumentNullException(ExceptionMessage.NULL_GEO_QUERY);
                }

                if (geoQuery.RelativeFindMetadata.Count == 0 || geoQuery.RelativeFindPercentThreshold == 0)
                {
                    throw new ArgumentException(ExceptionMessage.INCONSISTENT_GEO_RELATIVE);
                }

                Invoker.Api api   = Invoker.Api.UNKNOWN;
                string      query = GetGetPointsQuery(geoQuery, out api);

                var responder = new AsyncCallback <Dictionary <string, BackendlessCollection <SearchMatchesResult> > >(r =>
                {
                    BackendlessCollection <SearchMatchesResult> result = null;
                    if (r != null && r.ContainsKey(COLLECTION))
                    {
                        result       = (BackendlessCollection <SearchMatchesResult>)r[COLLECTION];
                        result.Query = geoQuery;
                    }
                    if (callback != null)
                    {
                        callback.ResponseHandler.Invoke(result);
                    }
                }, f =>
                {
                    if (callback != null)
                    {
                        callback.ErrorHandler.Invoke(f);
                    }
                    else
                    {
                        throw new BackendlessException(f);
                    }
                });

                Invoker.InvokeAsync <Dictionary <string, BackendlessCollection <SearchMatchesResult> > >(Invoker.Api.GEOSERVICE_RELATIVEFIND, new Object[] { null, query }, responder);
            }
            catch (System.Exception ex)
            {
                if (callback != null)
                {
                    callback.ErrorHandler.Invoke(new BackendlessFault(ex));
                }
                else
                {
                    throw;
                }
            }
        }
Example #4
0
        public void AssertArgumentAndResultCollections <T>(List <T> entities, BackendlessCollection <T> backendlessCollection)
        {
            Assert.AreEqual(entities.Count, backendlessCollection.TotalObjects, "Server found wrong number of objects");
            Assert.AreEqual(entities.Count, backendlessCollection.GetCurrentPage().Count,
                            "Server returned wrong number of objects");

            foreach (T entity in entities)
            {
                Assert.IsTrue(backendlessCollection.GetCurrentPage().Contains(entity),
                              "Server result didn't contain expected entity");
            }
        }
Example #5
0
        public void GetPoints(BackendlessGeoQuery geoQuery, AsyncCallback <BackendlessCollection <GeoPoint> > callback)
        {
            try
            {
                checkGeoQuery(geoQuery);

                Invoker.Api api   = Invoker.Api.UNKNOWN;
                string      query = GetGetPointsQuery(geoQuery, out api);

                var responder = new AsyncCallback <Dictionary <string, BackendlessCollection <GeoPoint> > >(r =>
                {
                    BackendlessCollection <GeoPoint> result = null;
                    if (r != null && r.ContainsKey(COLLECTION))
                    {
                        result       = (BackendlessCollection <GeoPoint>)r[COLLECTION];
                        result.Query = geoQuery;
                    }

                    if (callback != null)
                    {
                        callback.ResponseHandler.Invoke(result);
                    }
                }, f =>
                {
                    if (callback != null)
                    {
                        callback.ErrorHandler.Invoke(f);
                    }
                    else
                    {
                        throw new BackendlessException(f);
                    }
                });

                Invoker.InvokeAsync <Dictionary <string, BackendlessCollection <GeoPoint> > >(api, new Object[] { null, query }, responder);
            }
            catch (System.Exception ex)
            {
                if (callback != null)
                {
                    callback.ErrorHandler.Invoke(new BackendlessFault(ex));
                }
                else
                {
                    throw;
                }
            }
        }
Example #6
0
        public BackendlessCollection <GeoPoint> GetPoints(BackendlessGeoQuery geoQuery)
        {
            checkGeoQuery(geoQuery);

            Invoker.Api api   = Invoker.Api.UNKNOWN;
            string      query = GetGetPointsQuery(geoQuery, out api);

            BackendlessCollection <GeoPoint> result = null;
            Dictionary <string, BackendlessCollection <GeoPoint> > r = Invoker.InvokeSync <Dictionary <string, BackendlessCollection <GeoPoint> > >(api, new Object[] { null, query });

            if (r != null && r.ContainsKey(COLLECTION))
            {
                result       = (BackendlessCollection <GeoPoint>)r[COLLECTION];
                result.Query = geoQuery;
            }

            return(result);
        }
Example #7
0
        public void GetCollectionAndCheck(double startingLat, double startingLong, int maxPoints, double offset,
                                          Dictionary <string, string> meta, BackendlessGeoQuery geoQuery)
        {
            int counter = maxPoints;

            if (geoQuery.Categories.Count == 0 && GetDefinedCategories() != null)
            {
                geoQuery.Categories = GetDefinedCategories();
            }

            BackendlessCollection <GeoPoint> geoPointBackendlessCollection = Backendless.Geo.GetPoints(geoQuery);

            Assert.IsNotNull(geoPointBackendlessCollection, "Server returned a null collection");

            foreach (GeoPoint geoPoint in geoPointBackendlessCollection.GetCurrentPage())
            {
                if (meta == null || meta.Count == 0)
                {
                    Assert.IsTrue(geoPoint.Metadata.Count == 0, "Server returned points with unexpected metadata");
                }
                else
                {
                    foreach (KeyValuePair <string, string> keyValuePair in meta)
                    {
                        Assert.IsTrue(geoPoint.Metadata.ContainsKey(keyValuePair.Key), "Server returned points with unexpected metadata");
                        Assert.IsTrue(geoPoint.Metadata[keyValuePair.Key].Equals(keyValuePair.Value), "Server returned points with unexpected metadata");
                    }
                }

                Assert.AreEqual(startingLat, geoPoint.Latitude, 0.0000000001d,
                                "Server returned points from unexpected latitude range");
                Assert.IsTrue(geoPoint.Longitude >= startingLong && geoPoint.Longitude <= (startingLong + offset),
                              "Server returned points from unexpected longtitude range");

                counter--;
            }

            Assert.AreEqual(counter, 0, "Server found wrong total points count");
        }
Example #8
0
        public void TestFindWithWhereEntities()
        {
            var entities = new List <FindWithWhereEntity>();

            for (int i = 0; i < 10; i++)
            {
                var findWithWhereEntity = new FindWithWhereEntity();
                findWithWhereEntity.Name = "bot_#" + i;
                findWithWhereEntity.Age  = 20 + i;

                Backendless.Persistence.Save(findWithWhereEntity);

                if (i < 5)
                {
                    entities.Add(findWithWhereEntity);
                }
            }

            BackendlessDataQuery dataQuery = new BackendlessDataQuery("Age < 25");
            BackendlessCollection <FindWithWhereEntity> backendlessCollection =
                Backendless.Persistence.Of <FindWithWhereEntity>().Find(dataQuery);

            AssertArgumentAndResultCollections(entities, backendlessCollection);
        }