private BooleanFilterOperationDescriptor CreateOperation( FilterOperationKind operationKind) { var operation = new FilterOperation( typeof(bool), Definition.Kind, operationKind, Definition.Property); return(BooleanFilterOperationDescriptor.New( Context, this, CreateFieldName(operationKind), RewriteType(operationKind), operation, FilterConvention)); }
public void GetOrAddOperation_Should_AddDescriptorIfNotExists() { //arrange IList <FilterOperationDescriptorBase> list = new List <FilterOperationDescriptorBase>(); BooleanFilterOperationDescriptor operation = CreateOperation(FilterOperationKind.Equals); Func <BooleanFilterOperationDescriptor> valueFactory = () => operation; //act BooleanFilterOperationDescriptor result = list.GetOrAddOperation(FilterOperationKind.Equals, valueFactory); //assert Assert.Single(list); Assert.Same(operation, list[0]); Assert.Same(operation, result); }
public void GetOrAddOperation_Throws_ExceptionIfExistingDescriptorIsOfDifferentType() { //arrange IList <FilterOperationDescriptorBase> list = new List <FilterOperationDescriptorBase>(); BooleanFilterOperationDescriptor descriptorShouldNotBeRemoved = CreateOperation(FilterOperationKind.Equals); ComparableFilterOperationDescriptor newDescriptorShouldThrowException = CreateComparableOperation(FilterOperationKind.Equals); Func <ComparableFilterOperationDescriptor> valueFactory = () => newDescriptorShouldThrowException; list.Add(descriptorShouldNotBeRemoved); //act //assert Assert.Throws <SchemaException>(() => list.GetOrAddOperation(FilterOperationKind.Equals, valueFactory)); }
public void GetOrAddOperation_Should_ReturnDescriptorIfAlreadyExists() { //arrange IList <FilterOperationDescriptorBase> list = new List <FilterOperationDescriptorBase>(); BooleanFilterOperationDescriptor descriptorShouldNotBeRemoved = CreateOperation(FilterOperationKind.Equals); BooleanFilterOperationDescriptor newDescriptorShouldNotHaveAnyEffect = CreateOperation(FilterOperationKind.Equals); Func <BooleanFilterOperationDescriptor> valueFactory = () => newDescriptorShouldNotHaveAnyEffect; list.Add(descriptorShouldNotBeRemoved); //act BooleanFilterOperationDescriptor result = list.GetOrAddOperation(FilterOperationKind.Equals, valueFactory); //assert Assert.Single(list); Assert.Same(descriptorShouldNotBeRemoved, list[0]); Assert.Same(descriptorShouldNotBeRemoved, result); Assert.NotSame(newDescriptorShouldNotHaveAnyEffect, result); }