public void FindMany_Filter_Success(object value, IcarusEqualityFilter filter, int expectedAmount, bool isNull) { var icarus = IcarusClient.Instance; var obj1 = new SomeObject() { SomeInt = 1, SomeString = "Hello1", Temp = "Anything1" }; var obj2 = new SomeObject() { SomeInt = 2, SomeString = "Hello2", Temp = "Anything2" }; var items = icarus.GetDataStore(_dataStore).GetCollection <SomeObject>(_collection).InsertMany(new[] { obj1, obj2 }); Assert.AreEqual(2, items.Count); Assert.AreEqual(1, items[0]._id); Assert.AreEqual(2, items[1]._id); var items2 = icarus.GetDataStore(_dataStore).GetCollection <SomeObject>(_collection).FindMany("SomeInt", value, filter); if (isNull) { Assert.IsNull(items2); } else { Assert.IsNotNull(items2); Assert.AreEqual(expectedAmount, items2.Count); } }
/// <summary> /// Finds the items using the specified field name, value and equality filter. /// </summary> /// <param name="fieldName">Name of the field.</param> /// <param name="value">The value of the field.</param> /// <param name="filter">The filter to use when searching.</param> /// <returns> /// A list of items found with their identifiers /// </returns> public IList <T> FindMany(string fieldName, object value, IcarusEqualityFilter filter = IcarusEqualityFilter.Equal) { if (string.IsNullOrWhiteSpace(fieldName)) { return(default(IList <T>)); } return(FindMany(ConstructJsonPathFromFieldValuePair(fieldName, value, filter))); }
public void Find_Filter_SuccessOnDates(IcarusEqualityFilter filter, bool isNull) { var icarus = IcarusClient.Instance; var now = DateTime.Now; var obj1 = new SomeObject() { SomeDate = now, Temp = "Anything1" }; var obj2 = new SomeObject() { SomeDate = now.AddDays(1), Temp = "Anything2" }; var items = icarus.GetDataStore(_dataStore).GetCollection <SomeObject>(_collection).InsertMany(new[] { obj1, obj2 }); Assert.AreEqual(2, items.Count); Assert.AreEqual(1, items[0]._id); Assert.AreEqual(2, items[1]._id); var item = default(SomeObject); switch (filter) { case IcarusEqualityFilter.Equal: item = icarus.GetDataStore(_dataStore).GetCollection <SomeObject>(_collection).Find("SomeDate", now, filter); break; case IcarusEqualityFilter.NotEqual: item = icarus.GetDataStore(_dataStore).GetCollection <SomeObject>(_collection).Find("SomeDate", now.AddDays(-1), filter); break; case IcarusEqualityFilter.GreaterThan: item = icarus.GetDataStore(_dataStore).GetCollection <SomeObject>(_collection).Find("SomeDate", now.AddMinutes(5), filter); break; } if (isNull) { Assert.IsNull(item); } else { Assert.IsNotNull(item); } }
public void Find_Filter_FailForMultiple(object value, IcarusEqualityFilter filter) { var icarus = IcarusClient.Instance; var obj1 = new SomeObject() { SomeInt = 1, SomeString = "Hello1", Temp = "Anything1" }; var obj2 = new SomeObject() { SomeInt = 2, SomeString = "Hello2", Temp = "Anything2" }; var items = icarus.GetDataStore(_dataStore).GetCollection <SomeObject>(_collection).InsertMany(new[] { obj1, obj2 }); Assert.AreEqual(2, items.Count); Assert.AreEqual(1, items[0]._id); Assert.AreEqual(2, items[1]._id); var item = icarus.GetDataStore(_dataStore).GetCollection <SomeObject>(_collection).Find("SomeInt", value, filter); }
private string MapEqualityFilter(IcarusEqualityFilter filter) { switch (filter) { default: case IcarusEqualityFilter.Equal: return("=="); case IcarusEqualityFilter.GreaterThan: return(">"); case IcarusEqualityFilter.GreaterThanOrEqual: return(">="); case IcarusEqualityFilter.LessThan: return("<"); case IcarusEqualityFilter.LessThanOrEqual: return("<="); case IcarusEqualityFilter.NotEqual: return("!="); } }
public void Find_Filter_Boolean_Success(IcarusEqualityFilter filter, bool value) { var icarus = IcarusClient.Instance; var obj1 = new SomeObject() { SomeInt = 1, SomeBool = true, Temp = "Anything1" }; var obj2 = new SomeObject() { SomeInt = 1, SomeBool = false, Temp = "Anything2" }; var collection = icarus.GetDataStore(_dataStore).GetCollection <SomeObject>(_collection); var items = collection.InsertMany(new[] { obj1, obj2 }); Assert.AreEqual(2, items.Count); Assert.AreEqual(1, items[0]._id); Assert.AreEqual(2, items[1]._id); var item = collection.Find("SomeBool", value, filter); Assert.IsNotNull(item); Assert.AreEqual(1, item.SomeInt); if (filter == IcarusEqualityFilter.Equal) { Assert.AreEqual(value, item.SomeBool); Assert.AreEqual(value ? 1 : 2, item._id); } else { Assert.AreEqual(!value, item.SomeBool); Assert.AreEqual(value ? 2 : 1, item._id); } }
private string ConstructJsonPathFromFieldValuePair(string fieldName, object value, IcarusEqualityFilter filter) { return("$[?(@." + fieldName + " " + MapEqualityFilter(filter) + " " + MapValueObjectType(value) + ")]"); }