public void ConstructQueryFiltersTest() { const String KEY1 = "key1"; const String VALUE1_A = "value1a"; const String VALUE1_B = "value1b"; const String VALUE1_C = "value1c"; const String KEY2 = "key2"; const Byte LOWER_BOUND_VALUE2 = 1; const Byte UPPER_BOUND_VALUE2 = 3; const String KEY3 = "key3"; const String VALUE3 = "value3"; const String KEY4 = "key4"; const String VALUE4 = "value4"; const String EXPECTED_KEY_EXISTS_VALUE = ":key1=*"; const String EXPECTED_VALUE1 = ":key1=value1a,value1b,value1c"; const String EXPECTED_VALUE2 = ":key2=1..3"; const String EXPECTED_VALUE3 = ":key3=value3"; const String EXPECTED_VALUE4 = ":key4=!value4"; IList<String> expected = new List<String>(); expected.Add(EXPECTED_KEY_EXISTS_VALUE); expected.Add(EXPECTED_VALUE1); expected.Add(EXPECTED_VALUE2); expected.Add(EXPECTED_VALUE3); expected.Add(EXPECTED_VALUE4); IStretchrRequest target = new StretchrRequest<String>(new StretchrClient(), response => { }, (request, statusCode, exception) => { }); target.Where(KEY1.KeyExists() .And(KEY1.IsEqualTo(VALUE1_A) .Or(VALUE1_B) .Or(VALUE1_C)) .And(KEY2.IsBetween(LOWER_BOUND_VALUE2, UPPER_BOUND_VALUE2)) .And(KEY3.IsEqualTo(VALUE3)) .And(KEY4.IsNotEqualTo(VALUE4))); PrivateObject privateTarget = new PrivateObject(target); privateTarget.Invoke("ConstructQueryFilters"); IList<String> actual = (IList<String>)privateTarget.GetField("_queryStringFieldValuesList"); Assert.IsNotNull(actual); Assert.AreEqual(expected.Count, actual.Count); Assert.AreEqual(expected[0], actual[0]); Assert.AreEqual(expected[1], actual[1]); Assert.AreEqual(expected[2], actual[2]); Assert.AreEqual(expected[3], actual[3]); Assert.AreEqual(expected[4], actual[4]); }
public void WhereTest() { const String KEY1 = "key1"; const String VALUE1_A = "value1a"; const String VALUE1_B = "value1b"; const String VALUE1_C = "value1c"; const String KEY2 = "key2"; const Byte LOWER_BOUND_VALUE2 = 1; const Byte UPPER_BOUND_VALUE2 = 3; const String KEY3 = "key3"; const String VALUE3 = "value3"; const String KEY4 = "key4"; const String VALUE4 = "value4"; const String EXPECTED_KEY_EXISTS_VALUE = "*"; const String EXPECTED_VALUE1 = "value1a,value1b,value1c"; const String EXPECTED_VALUE2 = "1..3"; const String EXPECTED_VALUE3 = VALUE3; const String EXPECTED_VALUE4 = "!value4"; IList<KeyValuePair<String, String>> expected = new List<KeyValuePair<String, String>>(); expected.Add(new KeyValuePair<String, String>(KEY1, EXPECTED_KEY_EXISTS_VALUE)); expected.Add(new KeyValuePair<String, String>(KEY1, EXPECTED_VALUE1)); expected.Add(new KeyValuePair<String, String>(KEY2, EXPECTED_VALUE2)); expected.Add(new KeyValuePair<String, String>(KEY3, EXPECTED_VALUE3)); expected.Add(new KeyValuePair<String, String>(KEY4, EXPECTED_VALUE4)); StretchrRequest<String> stretchrQuery = new StretchrRequest<String>(new StretchrClient(), response => { }, (request, statusCode, exception) => { }); IList<KeyValuePair<String, String>> actual = stretchrQuery.Where(KEY1.KeyExists() .And(KEY1.IsEqualTo(VALUE1_A) .Or(VALUE1_B) .Or(VALUE1_C)) .And(KEY2.IsBetween(LOWER_BOUND_VALUE2, UPPER_BOUND_VALUE2)) .And(KEY3.IsEqualTo(VALUE3)) .And(KEY4.IsNotEqualTo(VALUE4))).FilterParameterList; Assert.IsNotNull(actual); Assert.AreEqual(expected.Count, actual.Count); Assert.AreEqual(expected[0], actual[0]); Assert.AreEqual(expected[1], actual[1]); Assert.AreEqual(expected[2], actual[2]); Assert.AreEqual(expected[3], actual[3]); Assert.AreEqual(expected[4], actual[4]); }