public void Should_build_a_single_expression_when_given_two_query_parameters_with_an_and( ) { var r = new Recipe<SampleData>( "Address lk 'Test' and Value gt '20'" ); var data = new SampleRepository { DataSource = new[ ] { new SampleData {Address = "Test 2", Value = 21}, new SampleData {Address = "Test 3", Value = 19}, new SampleData {Address = "Not like anything else", Value = 30}, } }.DataSource; data = data.Where( r.Prepare( ) ); Assert.AreEqual( 1, data.Count( ) ); }
public void Should_filter_list_given_single_decimal_property_equals( ) { const string instruction = "Value eq '23.95'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository { DataSource = new[ ] { new SampleData {Value = 100}, new SampleData {Value = 23.95M} } }.DataSource; data = data.Where( result.Compile( ) ); Assert.AreEqual( 1, data.Count( ) ); }
public void Should_filter_list_given_single_date_when_asked_for_only_date_property_equals( ) { const string instruction = "AddDate.Date eq '1/1/2012'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository { DataSource = new[ ] { new SampleData {AddDate = new DateTime(2012, 1, 3)}, new SampleData {AddDate = new DateTime(2012, 1, 1, 23, 55, 0, 0)} } }.DataSource; data = data.Where( result.Compile( ) ); Assert.AreEqual( 1, data.Count( ) ); }
public void Should_return_only_items_greater_than( ) { const string instruction = "Value gt '50'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository { DataSource = new[ ] { new SampleData() {Value = 25M}, new SampleData() {Value = 51M}, new SampleData() {Value = 100M} } }.DataSource; data = data.Where( result.Compile( ) ); Assert.AreEqual( 2, data.Count( ) ); }
public void Should_filter_list_given_integer_property_in( ) { const string instruction = "Id in '22','1'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository { DataSource = new[ ] { new SampleData() {Id = 1}, new SampleData() {Id = 22}, new SampleData() {Id = 1023} } }.DataSource; data = data.Where( result.Compile( ) ); Assert.AreEqual( 2, data.Count( ) ); }
public void Should_filter_list_given_date_property_in( ) { const string instruction = "AddDate.Date in '1/1/2012','1/1/2011'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository { DataSource = new[ ] { new SampleData() {AddDate = new DateTime(2012, 1, 1)}, new SampleData() {AddDate = new DateTime(2011, 1, 1)}, new SampleData() {AddDate = new DateTime(2010, 1, 1)} } }.DataSource; data = data.Where( result.Compile( ) ); Assert.AreEqual( 2, data.Count( ) ); }
public void Should_return_items_less_than_or_equal_to_when_specified( ) { const string instruction = "Value lte '51'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository { DataSource = new[ ] { new SampleData() {Value = 10M}, new SampleData() {Value = 25M}, new SampleData() {Value = 51M}, new SampleData() {Value = 100M} } }.DataSource; data = data.Where( result.Compile( ) ); Assert.AreEqual( 3, data.Count( ) ); }
public void Should_build_a_single_expression_when_given_a_complex_parameter_string( ) { var r = new Recipe<SampleData>( "Address lk 'Test' and (Value gt '20' or Id eq '1')" ); var data = new SampleRepository { DataSource = new[ ] { new SampleData {Address = "Test 2", Value = 21, Id = 2}, new SampleData {Address = "Test 3", Value = 19, Id = 13}, new SampleData {Address = "Test else", Value = 18, Id = 1}, new SampleData {Address = "Not like anything else", Value = 30, Id = 4}, } }.DataSource; data = data.Where( r.Prepare( ) ); Assert.AreEqual( 2, data.Count( ) ); }
public void Should_return_items_as_expected_when_provided_date_range( ) { const string instruction = "AddDate bt '1/1/2012','5/1/2012'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository { DataSource = new[ ] { new SampleData() {AddDate = new DateTime(2011,1,1)}, new SampleData() {AddDate = new DateTime(2012,1,1)}, new SampleData() {AddDate = new DateTime(2012,4,1)}, new SampleData() {AddDate = new DateTime(2013,1,1)}, } }.DataSource; data = data.Where( result.Compile( ) ); Assert.AreEqual( 2, data.Count( ) ); }
public void Should_return_items_greater_than_or_equal_to_and_less_than_or_equal_to( ) { const string instruction = "Id bt '5','20'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository { DataSource = new[ ] { new SampleData() {Id = 3}, new SampleData() {Id = 5}, new SampleData() {Id = 10}, new SampleData() {Id = 20}, new SampleData() {Id= 24} } }.DataSource; data = data.Where( result.Compile( ) ); Assert.AreEqual( 3, data.Count( ) ); }
public void Should_return_items_as_expected_when_provided_decimal( ) { const string instruction = "Value bt '15.5','21'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository { DataSource = new[ ] { new SampleData() {Value = 3}, new SampleData() {Value = 15.499999996M}, new SampleData() {Value = 15.51M}, new SampleData() {Value = 20}, new SampleData() {Value = 24} } }.DataSource; data = data.Where( result.Compile( ) ); Assert.AreEqual( 2, data.Count( ) ); }
public void Should_filter_list_given_string_property_equals( ) { const string instruction = "Address eq 'Test 1'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository( ).GetSampleData( ); data = data.Where( result.Compile( ) ); Assert.AreEqual( 1, data.Count( ) ); }
public void Should_build_a_working_expression_given_one_value_query( ) { var r = new Recipe<SampleData>( "Address lk 'Test'" ); var data = new SampleRepository { DataSource = new[ ] { new SampleData {Address = "Test 2"}, new SampleData {Address = "Test 3"}, new SampleData {Address = "Not like anything else"}, } }.DataSource; data = data.Where( r.Prepare( ) ); Assert.AreEqual( 2, data.Count( ) ); }
public void Should_filter_list_given_in_string_property_in( ) { const string instruction = "Address in 'Test 1','Test 2'"; var result = instruction.AsExpressionOf<SampleData>( ); var data = new SampleRepository { DataSource = new[ ] { new SampleData() {Address = "Test 1"}, new SampleData() {Address = "Test 2"}, new SampleData() {Address = "Test 4"} } }.DataSource; data = data.Where( result.Compile( ) ); Assert.AreEqual( 2, data.Count( ) ); }