public void Test_1_1_CountAllWhenObjectNotExists() { string bucketName = "TestBucket" + CurrentTimeMillis(); KiiBucket bucket = Kii.Bucket(bucketName); KiiBucket callbackBucket = null; KiiQuery callbackQuery = null; int count = -1; Exception exp = null; CountDownLatch cd = new CountDownLatch(1); bucket.Count((KiiBucket b, KiiQuery q, int c, Exception e) => { callbackBucket = b; callbackQuery = q; count = c; exp = e; cd.Signal(); }); if (!cd.Wait(new TimeSpan(0, 0, 0, 3))) { Assert.Fail("Callback not fired."); } Assert.IsNotNull(callbackBucket); Assert.AreEqual(bucket.Uri, callbackBucket.Uri); Assert.IsNotNull(callbackQuery); Assert.AreEqual(new KiiQuery(null).ToString(), callbackQuery.ToString()); Assert.IsNull(exp); Assert.AreEqual(0, count); }
public void Test_2_6_CountWithUnsupportedQuery() { string bucketName = "bucket" + CurrentTimeMillis(); KiiBucket bucket = Kii.Bucket(bucketName); for (int i = 0; i < 2; i++) { KiiObject obj = bucket.NewKiiObject(); obj ["intField"] = i; obj.Save(); } KiiQuery query = new KiiQuery(null); query.Limit = 1; KiiQueryResult <KiiObject> result = bucket.Query(query); Assert.AreEqual(1, result.Count); query = result.NextKiiQuery; CloudException exp = null; try { bucket.Count(query); Assert.Fail("Exception not thrown"); } catch (CloudException e) { exp = e; } Assert.IsNotNull(exp); Assert.AreEqual(400, exp.Status); JsonObject body = new JsonObject(exp.Body); Assert.AreEqual("QUERY_NOT_SUPPORTED", body.GetString("errorCode")); }
public void Test_0001_GeoDistanceQuery() { KiiBucket bucket = testUser.Bucket("aBucket"); KiiObject obj = bucket.NewKiiObject(); KiiGeoPoint point = new KiiGeoPoint(35.667983, 139.739356); obj.SetGeoPoint("myLoc", point); obj.Save(); KiiGeoPoint center = new KiiGeoPoint(35.677379, 139.702148); KiiClause clause = KiiClause.GeoDistance("myloc", center, 4000, "distanceToMyLoc"); KiiQuery query = new KiiQuery(clause); KiiQueryResult <KiiObject> result = bucket.Query(query); KiiObject retObj = result [0]; KiiGeoPoint retPoint; retPoint = retObj.GetGeoPoint("myLoc"); Assert.AreEqual(point.Latitude, retPoint.Latitude); Assert.AreEqual(point.Longitude, retPoint.Longitude); JsonObject jObj = retObj.GetJsonObject("_calculated"); double retDistance = jObj.GetDouble("distanceToMyLoc"); double expectedDistance = distanceInMeter(point, center); Assert.IsTrue(approximateEqual(expectedDistance, retDistance, 0.00001)); }
public void Test_0005_GeoBoxQuery() { KiiBucket bucket = testUser.Bucket("aBucket"); KiiObject obj = bucket.NewKiiObject(); KiiGeoPoint point = new KiiGeoPoint(35.667983, 139.739356); obj.SetGeoPoint("myloc", point); obj.Save(); //not in the box KiiObject obj2 = bucket.NewKiiObject(); KiiGeoPoint point2 = new KiiGeoPoint(); obj2.SetGeoPoint("myloc", point2); obj2.Save(); KiiGeoPoint sw = new KiiGeoPoint(35.52105, 139.699402); KiiGeoPoint ne = new KiiGeoPoint(36.069082, 140.07843); KiiClause clause = KiiClause.GeoBox("myloc", ne, sw); KiiQuery query = new KiiQuery(clause); KiiQueryResult <KiiObject> result = bucket.Query(query); Assert.AreEqual(result.Count, 1); KiiObject retObj = result [0]; KiiGeoPoint retPoint; retPoint = retObj.GetGeoPoint("myloc"); Assert.AreEqual(point.Latitude, retPoint.Latitude); Assert.AreEqual(point.Longitude, retPoint.Longitude); }
public void NotPrefixTest() { KiiBucket bucket = KiiUser.CurrentUser.Bucket("my_bucket"); KiiObject obj1 = bucket.NewKiiObject(); obj1["name"] = "foo"; obj1.Save(); KiiObject obj2 = bucket.NewKiiObject(); obj2["name"] = "fool"; obj2.Save(); KiiObject obj3 = bucket.NewKiiObject(); obj3["name"] = "hoge"; obj3.Save(); KiiQuery query = new KiiQuery(KiiClause.Not(KiiClause.StartsWith("name", "foo"))); query.SortByAsc("name"); KiiQueryResult <KiiObject> results = bucket.Query(query); Assert.AreEqual(1, results.Count); Assert.AreEqual("hoge", results[0].GetString("name")); }
private void ExecCount(KiiQuery query, KiiHttpClientFactory factory, CountCallback callback) { Utils.CheckInitialize(false); if (query == null) { query = new KiiQuery(null); } KiiHttpClient client = factory.Create(QueryUrl, Kii.AppId, Kii.AppKey, KiiHttpMethod.POST); KiiCloudEngine.SetAuthBearer(client); client.ContentType = "application/vnd.kii.QueryRequest+json"; // send request string queryString = CountAggregationQuery(query); int count = 0; client.SendRequest(queryString, (ApiResponse response, Exception e) => { if (e != null) { callback(this, query, count, e); return; } // parse response try { JsonObject responseJson = new JsonObject(response.Body); JsonObject aggregations = responseJson.GetJsonObject("aggregations"); count = aggregations.GetInt("count_field"); callback(this, query, count, null); } catch (JsonException jse) { callback(this, query, count, new IllegalKiiBaseObjectFormatException(jse.Message)); } }); }
public void NotHasFieldTest() { KiiBucket bucket = KiiUser.CurrentUser.Bucket("my_bucket"); KiiObject obj1 = bucket.NewKiiObject(); obj1["name"] = "foo"; obj1["age"] = 20; obj1.Save(); KiiObject obj2 = bucket.NewKiiObject(); obj2["name"] = "bar"; obj2["age"] = 33; obj2.Save(); KiiObject obj3 = bucket.NewKiiObject(); obj3["name"] = "hoge"; obj3.Save(); KiiQuery query = new KiiQuery(KiiClause.Not(KiiClause.HasField("age", FieldType.INTEGER))); query.SortByAsc("name"); KiiQueryResult <KiiObject> results = bucket.Query(query); Assert.AreEqual(1, results.Count); Assert.AreEqual("hoge", results[0].GetString("name")); }
public void Test_0303_Limit() { KiiQuery query = new KiiQuery(); query.Limit = -1; Assert.AreEqual("{\"bucketQuery\":{\"clause\":{\"type\":\"all\"}}}", query.ToString()); }
/// <summary> /// Fetches the query result of next page /// </summary> /// <remarks> /// Same as calling KiiBucket.Query(KiiQuery) with NextKiiQuery /// </remarks> /// <returns> /// The next query result. /// </returns> /// <param name='callback'> /// Callback. /// </param> public void GetNextQueryResult(KiiQueryCallback <T> callback) { if (!HasNext) { if (callback != null) { callback(null, new InvalidOperationException("End of the page. no more results.")); } return; } KiiQuery query = NextKiiQuery; if (mBucket is KiiBucket) { mBucket.Query(query, callback); // } else if (mBucket is KiiFileBucket) { // KiiFileBucket bucket = (KiiFileBucket) mBucket; // return (KiiQueryResult<T>) bucket.query(query, mIsTrashed); } else { if (callback != null) { callback(null, new SystemException("Unexpected error! " + mBucket.GetType().ToString())); } return; } }
public void Test_Non_Initialize_StorageAPI() { KiiUser user = null; KiiGroup group = null; KiiBucket bucket = null; KiiObject obj = null; try { // User Management user = KiiUser.BuilderWithName("hoge").Build(); user.Register("password"); Assert.Fail("InvalidOperationException isn't thrown"); } catch (InvalidOperationException e) { Assert.AreEqual(ErrorInfo.UTILS_KIICLIENT_NULL, e.Message); } try { bucket = Kii.Bucket("appbucket"); bucket.Delete(); Assert.Fail("InvalidOperationException isn't thrown"); } catch (InvalidOperationException e) { Assert.AreEqual(ErrorInfo.UTILS_KIICLIENT_NULL, e.Message); } try { obj = bucket.NewKiiObject(); obj.Save(); Assert.Fail("InvalidOperationException isn't thrown"); } catch (InvalidOperationException e) { Assert.AreEqual(ErrorInfo.UTILS_KIICLIENT_NULL, e.Message); } try { KiiQuery query = new KiiQuery(); bucket.Query(query); Assert.Fail("InvalidOperationException isn't thrown"); } catch (InvalidOperationException e) { Assert.AreEqual(ErrorInfo.UTILS_KIICLIENT_NULL, e.Message); } try { group = Kii.Group("myGroup"); group.Save(); Assert.Fail("InvalidOperationException isn't thrown"); } catch (InvalidOperationException e) { Assert.AreEqual(ErrorInfo.UTILS_KIICLIENT_NULL, e.Message); } }
public void Test_0200_SortByDesc() { KiiQuery query = new KiiQuery(); query.SortByDesc("score"); Assert.AreEqual("{\"bucketQuery\":{\"clause\":{\"type\":\"all\"},\"orderBy\":\"score\",\"descending\":true}}", query.ToString()); }
/// <summary> /// Asynchronous version of <see cref = 'Count(KiiQuery)'/>. /// </summary> /// <remarks> /// This API sends a request to KiiCloud. /// </remarks> /// <param name = 'callback'> /// Executes when count execution completed. /// </param> /// <param name = 'query'> /// query to be executed. If null, the operation will be same as <see cref = 'Count(CountCallback)'/>. /// </param> /// <exception cref='ArgumentException'> /// Is thrown when callback is null. /// </exception> public void Count(KiiQuery query, CountCallback callback) { if (callback == null) { throw new ArgumentException("Specified callback is null"); } ExecCount(query, Kii.AsyncHttpClientFactory, callback); }
public void Test_0400_NextPaginationKey() { KiiQuery query = new KiiQuery(); query.NextPaginationKey = "abcd"; Assert.AreEqual("{\"bucketQuery\":{\"clause\":{\"type\":\"all\"}},\"paginationKey\":\"abcd\"}", query.ToString()); }
public void Test_0301_Limit_1() { KiiQuery query = new KiiQuery(); query.Limit = 1; Assert.AreEqual("{\"bucketQuery\":{\"clause\":{\"type\":\"all\"}},\"bestEffortLimit\":1}", query.ToString()); }
public void Test_2_6_CountWithUnsupportedQuery() { MockHttpClientFactory factory = new MockHttpClientFactory(); Kii.HttpClientFactory = factory; // set response MockHttpClient client = factory.Client; string mockResponseBody = "{\"errorCode\" : \"QUERY_NOT_SUPPORTED\"}"; client.AddResponse(new CloudException(400, mockResponseBody)); string bucketName = "TestBucket"; KiiBucket bucket = Kii.Bucket(bucketName); KiiClause clause = KiiClause.Equals("key", "value"); KiiQuery query = new KiiQuery(clause); query.NextPaginationKey = "pkey"; CloudException exp = null; try { bucket.Count(query); Assert.Fail("Exception not thrown"); } catch (CloudException e) { exp = e; } Assert.IsNotNull(exp); Assert.AreEqual(400, exp.Status); Assert.AreEqual(mockResponseBody, exp.Body); // check request. string url = Utils.Path(ConstantValues.DEFAULT_BASE_URL, "apps", "appId", "buckets", "TestBucket", "query"); Assert.AreEqual(url, client.RequestUrl[0]); Assert.AreEqual(KiiHttpMethod.POST, client.RequestMethod[0]); MockHttpHeaderList headerList = client.RequestHeader[0]; Assert.AreEqual("appId", headerList["X-Kii-AppID"]); Assert.AreEqual("appKey", headerList["X-Kii-AppKey"]); String queryStr = "{ " + "\"bucketQuery\" : {" + "\"clause\" : {" + "\"type\" : \"eq\"," + "\"field\" : \"key\"," + "\"value\" : \"value\"" + "}," + "\"aggregations\" : [ {" + "\"type\" : \"COUNT\"," + "\"putAggregationInto\" : \"count_field\"" + "}]" + "}, " + "\"paginationKey\" : \"pkey\"" + "}"; JsonObject expectedBodyJson = new JsonObject(queryStr); JsonObject actualBodyJson = new JsonObject(client.RequestBody[0]); KiiAssertion.AssertJson(expectedBodyJson, actualBodyJson); }
public void Test_2_5_CountWithOrQuery() { MockHttpClientFactory factory = new MockHttpClientFactory(); Kii.HttpClientFactory = factory; // set response MockHttpClient client = factory.Client; client.AddResponse(200, "{\"aggregations\" : { \"count_field\" : 5 } }"); string bucketName = "TestBucket"; KiiBucket bucket = Kii.Bucket(bucketName); KiiClause clause1 = KiiClause.Equals("key1", "value1"); KiiClause clause2 = KiiClause.Equals("key2", "value2"); KiiClause clause = KiiClause.Or(clause1, clause2); KiiQuery query = new KiiQuery(clause); int count = bucket.Count(query); Assert.AreEqual(5, count); // check request. Console.WriteLine(client.RequestBody[0]); string url = Utils.Path(ConstantValues.DEFAULT_BASE_URL, "apps", "appId", "buckets", "TestBucket", "query"); Assert.AreEqual(url, client.RequestUrl[0]); Assert.AreEqual(KiiHttpMethod.POST, client.RequestMethod[0]); MockHttpHeaderList headerList = client.RequestHeader[0]; Assert.AreEqual("appId", headerList["X-Kii-AppID"]); Assert.AreEqual("appKey", headerList["X-Kii-AppKey"]); String queryStr = "{ " + "\"bucketQuery\" : {" + "\"clause\" : {" + "\"type\" : \"or\"," + "\"clauses\" :[ {" + "\"type\" : \"eq\"," + "\"field\" : \"key1\"," + "\"value\" : \"value1\"" + "}," + "{" + "\"type\" : \"eq\"," + "\"field\" : \"key2\"," + "\"value\" : \"value2\"" + "}]" + "}," + "\"aggregations\" : [ {" + "\"type\" : \"COUNT\"," + "\"putAggregationInto\" : \"count_field\"" + "}]" + "}" + "}"; JsonObject expectedBodyJson = new JsonObject(queryStr); JsonObject actualBodyJson = new JsonObject(client.RequestBody[0]); KiiAssertion.AssertJson(expectedBodyJson, actualBodyJson); }
/// <summary> /// Copy constructor /// </summary> /// <param name="query">Query.</param> private KiiQuery(KiiQuery query) { if (query == null) { throw new ArgumentNullException("query is null"); } mJson = new JsonObject(query.mJson.ToString()); mLimit = query.mLimit; }
public void Test_2_3_CountAllAsyncWithNullCallback() { string bucketName = "TestBucket"; KiiBucket bucket = Kii.Bucket(bucketName); KiiQuery query = new KiiQuery(null); CountCallback callback = null; bucket.Count(query, callback); }
private void ExecQuery(KiiQuery query, KiiHttpClientFactory factory, KiiQueryCallback <KiiObject> callback) { Utils.CheckInitialize(false); KiiHttpClient client = factory.Create(QueryUrl, Kii.AppId, Kii.AppKey, KiiHttpMethod.POST); KiiCloudEngine.SetAuthBearer(client); client.ContentType = "application/vnd.kii.QueryRequest+json"; if (query == null) { query = new KiiQuery(null); } // send request client.SendRequest(query.ToString(), (ApiResponse response, Exception e) => { if (e != null) { if (callback != null) { callback(null, e); } return; } // parse response KiiQueryResult <KiiObject> queryResult = null; try { JsonObject obj = new JsonObject(response.Body); JsonArray array = obj.GetJsonArray("results"); String nextPaginationKey = obj.OptString("nextPaginationKey"); queryResult = new KiiQueryResult <KiiObject>(query, nextPaginationKey, this, false); for (int i = 0; i < array.Length(); i++) { JsonObject entry = array.GetJsonObject(i); KiiObject kiiObject = new KiiObject(mParent, mBucketName, entry); queryResult.Add(kiiObject); } } catch (JsonException e2) { if (callback != null) { callback(null, new IllegalKiiBaseObjectFormatException(e2.Message)); } return; } if (callback != null) { callback(queryResult, null); } }); }
public void Test_0004_GeoDistanceQuery_sort_asc() { KiiBucket bucket = testUser.Bucket("aBucket"); KiiObject obj1 = bucket.NewKiiObject(); KiiGeoPoint point1 = new KiiGeoPoint(35.672568, 139.723606); obj1.SetGeoPoint("myLoc", point1); obj1.Save(); KiiObject obj2 = bucket.NewKiiObject(); KiiGeoPoint point2 = new KiiGeoPoint(35.667983, 139.739356); obj2.SetGeoPoint("myLoc", point2); obj2.Save(); // not in radius KiiObject obj3 = bucket.NewKiiObject(); KiiGeoPoint point3 = new KiiGeoPoint(); obj3.SetGeoPoint("myLoc", point3); obj3.Save(); KiiGeoPoint center = new KiiGeoPoint(35.677379, 139.702148); KiiClause clause = KiiClause.GeoDistance("myloc", center, 4000, "distanceToMyLoc"); KiiQuery query = new KiiQuery(clause); query.SortByAsc("_calculated.distanceToMyLoc"); KiiQueryResult <KiiObject> result = bucket.Query(query); Assert.AreEqual(result.Count, 2); KiiObject retObj1 = result [0]; KiiGeoPoint retPoint1 = retObj1.GetGeoPoint("myLoc"); Assert.AreEqual(point1.Latitude, retPoint1.Latitude); Assert.AreEqual(point1.Longitude, retPoint1.Longitude); JsonObject jObj1 = retObj1.GetJsonObject("_calculated"); KiiObject retObj2 = result [1]; KiiGeoPoint retPoint2 = retObj2.GetGeoPoint("myLoc"); Assert.AreEqual(point2.Latitude, retPoint2.Latitude); Assert.AreEqual(point2.Longitude, retPoint2.Longitude); JsonObject jObj2 = retObj2.GetJsonObject("_calculated"); double retDistance1 = jObj1.GetDouble("distanceToMyLoc"); double retDistance2 = jObj2.GetDouble("distanceToMyLoc"); double expectedDistance1 = distanceInMeter(point1, center); double expectedDistance2 = distanceInMeter(point2, center); Assert.IsTrue(approximateEqual(expectedDistance1, retDistance1, 0.00001)); Assert.IsTrue(approximateEqual(expectedDistance2, retDistance2, 0.00001)); }
// we will use this later // private bool mIsTrashed; internal KiiQueryResult(KiiQuery query, string paginationKey, KiiBaseBucket <T> bucket, bool trashed) { if (Utils.IsEmpty(paginationKey)) { mNextQuery = null; } else { mNextQuery = KiiQuery.copy(query); mNextQuery.NextPaginationKey = paginationKey; } mBucket = bucket; // mIsTrashed = trashed; }
/// <summary> /// Query KiiObjects in this bucket. /// </summary> /// <remarks> /// Query KiiObjects in this bucket with conditions given by argument. /// </remarks> /// <param name='query'> /// Query conditions. /// </param> /// <returns> /// List of KiiObject. If number of result is big, please call GetNextQueryResult() /// </returns> /// <exception cref='IllegalKiiBaseObjectFormatException'> /// Is thrown when server sends broken Json. /// </exception> /// <exception cref='CloudException'> /// Is thrown when server sends error response. /// </exception> public KiiQueryResult <KiiObject> Query(KiiQuery query) { KiiQueryResult <KiiObject> result = null; ExecQuery(query, Kii.HttpClientFactory, (KiiQueryResult <KiiObject> r, Exception e) => { if (e != null) { throw e; } result = r; }); return(result); }
/// <summary> /// Execute count aggregation of specified query on current bucket. /// </summary> /// <remarks> /// Query generated from <see cref = 'KiiQueryResult.NextKiiQuery'/> is not supported, /// <see cref = 'CloudException'/> will be thrown in this case. /// NOTE: This api access to server. Should not be executed in UI/Main thread. /// </remarks> /// <param name = 'query'> /// query to be executed. If null, the operation will be same as <see cref = 'Count'/>. /// </param> /// <returns> /// number of objects in the bucket. /// </returns> /// <exception cref='CloudException'> /// Is thrown when server sends error response. /// </exception> public int Count(KiiQuery query) { int result = -1; ExecCount(query, Kii.HttpClientFactory, (KiiBucket b, KiiQuery q, int count, Exception e) => { if (e != null) { throw e; } result = count; }); return(result); }
public void Test_0102_query_next() { // set response client.AddResponse(200, "{" + "\"queryDescription\" : \"WHERE ( 1 = 1 )\"," + "\"results\":[" + "{\"_id\":\"497fd6ff-9178-42ec-b6ec-14bce7b5c7c9\",\"name\":\"Nick\",\"age\":18," + "\"_created\":1334505527480,\"_modified\":1334505527480,\"_owner\":\"789399f7-7552-47a8-a524-b9119056edd9\",\"_version\":1}" + "]," + "\"nextPaginationKey\":\"abcd\"" + "}"); KiiBucket bucket = Kii.Bucket("test"); KiiQuery query = new KiiQuery(); bool done = false; int calledCount = 0; KiiQueryCallback <KiiObject> callback = null; callback = (KiiQueryResult <KiiObject> result, Exception e) => { ++calledCount; if (calledCount == 1) { // first result Assert.AreEqual(1, result.Count); Assert.IsTrue(result.HasNext); Assert.AreEqual("Nick", result[0]["name"]); // set response this.SetDefaultQueryResult(); result.GetNextQueryResult(callback); } else { Assert.AreEqual(1, result.Count); Assert.IsFalse(result.HasNext); Assert.AreEqual("John Smith", result[0]["name"]); done = true; } }; bucket.Query(query, callback); Assert.IsTrue(done); }
public void Test_0101_query_all() { Kii.Initialize("appId", "appKey", Kii.Site.US); MockHttpClientFactory factory = new MockHttpClientFactory(); Kii.HttpClientFactory = factory; // set response MockHttpClient client = (MockHttpClient)factory.Client; this.SetDefaultQueryResult(client); KiiBucket bucket = Kii.Bucket("test"); KiiQuery query = new KiiQuery(); KiiQueryResult <KiiObject> result = bucket.Query(query); Assert.AreEqual(1, result.Count); Assert.IsFalse(result.HasNext); }
/// <summary> /// Fetches the query result of next page /// </summary> /// <remarks> /// Same as calling KiiBucket.Query(KiiQuery) with NextKiiQuery /// </remarks> /// <returns> /// The next query result. /// </returns> /// <exception cref='InvalidOperationException'> /// Is thrown when an operation cannot be performed. /// </exception> /// <exception cref='SystemException'> /// <see cref="T:System.SystemException" /> is the base class for all exceptions defined by the system. /// </exception> public KiiQueryResult <T> GetNextQueryResult() { if (!HasNext) { throw new InvalidOperationException("End of the page. no more results."); } KiiQuery query = NextKiiQuery; if (mBucket is KiiBucket) { return(mBucket.Query(query)); // } else if (mBucket is KiiFileBucket) { // KiiFileBucket bucket = (KiiFileBucket) mBucket; // return (KiiQueryResult<T>) bucket.query(query, mIsTrashed); } else { throw new SystemException("Unexpected error! " + mBucket.GetType().ToString()); } }
private string CountAggregationQuery(KiiQuery query) { // generate aggregations JsonArray aggregations = new JsonArray(); JsonObject json = new JsonObject(); json.Put("type", "COUNT"); json.Put("putAggregationInto", "count_field"); aggregations.Put(json); // add aggregations with bucketQuery. JsonObject queryJson = new JsonObject(query.ToString()); JsonObject bucketQueryJson = queryJson.GetJsonObject("bucketQuery"); bucketQueryJson.Put("aggregations", aggregations); // clobbering the new value of bucketQuery queryJson.Put("bucketQuery", bucketQueryJson); return(queryJson.ToString()); }
public void Test_2_2_CountWithQueryWhenObjectExistsInBucket() { string bucketName = "TestBucket" + CurrentTimeMillis(); KiiBucket bucket = Kii.Bucket(bucketName); for (int i = 0; i < 10; i++) { KiiObject obj = bucket.NewKiiObject(); obj ["key"] = "value"; obj.Save(); } KiiBucket callbackBucket = null; KiiQuery callbackQuery = null; int count = -1; Exception exp = null; CountDownLatch cd = new CountDownLatch(1); KiiClause clause = KiiClause.Equals("key", "value"); KiiQuery query = new KiiQuery(clause); bucket.Count(query, (KiiBucket b, KiiQuery q, int c, Exception e) => { callbackBucket = b; callbackQuery = q; count = c; exp = e; cd.Signal(); }); if (!cd.Wait(new TimeSpan(0, 0, 0, 3))) { Assert.Fail("Callback not fired."); } Assert.IsNotNull(callbackBucket); Assert.AreEqual(bucket.Uri, callbackBucket.Uri); Assert.IsNotNull(callbackQuery); Assert.AreEqual(query.ToString(), callbackQuery.ToString()); Assert.IsNull(exp); Assert.AreEqual(10, count); }
public void Test_0002_GeoDistanceQuery_calculatedDistance_nil() { KiiBucket bucket = testUser.Bucket("aBucket"); KiiObject obj = bucket.NewKiiObject(); KiiGeoPoint point = new KiiGeoPoint(35.667983, 139.739356); obj.SetGeoPoint("myLoc", point); obj.Save(); KiiGeoPoint center = new KiiGeoPoint(35.677379, 139.702148); KiiClause clause = KiiClause.GeoDistance("myloc", center, 4000, ""); KiiQuery query = new KiiQuery(clause); KiiQueryResult <KiiObject> result = bucket.Query(query); KiiObject retObj = result [0]; KiiGeoPoint retPoint; retPoint = retObj.GetGeoPoint("myLoc"); Assert.AreEqual(point.Latitude, retPoint.Latitude); Assert.AreEqual(point.Longitude, retPoint.Longitude); Assert.IsFalse(retObj.Has("_calculated")); }
public void NotAndTest() { KiiBucket bucket = KiiUser.CurrentUser.Bucket("my_bucket"); KiiObject obj1 = bucket.NewKiiObject(); obj1["name"] = "foo"; obj1["age"] = 20; obj1.Save(); KiiObject obj2 = bucket.NewKiiObject(); obj2["name"] = "foo"; obj2["age"] = 33; obj2.Save(); KiiQuery query = new KiiQuery(KiiClause.Not(KiiClause.And(KiiClause.Equals("name", "foo"), KiiClause.LessThan("age", 30)))); query.SortByAsc("name"); KiiQueryResult <KiiObject> results = bucket.Query(query); Assert.AreEqual(1, results.Count); Assert.AreEqual(33, results[0].GetInt("age")); }