private void VerifyQueryResult(ODataRequest request, ODataResponse response, FunctionSegment functionSegment, IVerifyServiceActionQueryResult verifyServiceQueryResult)
        {
            EntitySet expectedBindingEntitySet = null;
            var actionLessUri = ConstructODataUriWithoutActionInformation(this.entityModelSchema.GetDefaultEntityContainer().EntitySets, request.Uri);
            bool entitySetFound = actionLessUri.TryGetExpectedEntitySet(out expectedBindingEntitySet);
            ExceptionUtilities.Assert(entitySetFound, "EntitySet not found for Uri {0}", actionLessUri.ToString());

            // SDP never applies for actions
            var preActionQueryValueResult = this.ODataUriEvaluator.Evaluate(actionLessUri, true, false);

            IDictionary<string, QueryValue> queryValueParametersLookup = new Dictionary<string, QueryValue>();

            if (request.Body != null)
            {
                queryValueParametersLookup = this.CreateQueryValueParameters(request, functionSegment, queryValueParametersLookup);
            }

            var expected = verifyServiceQueryResult.GetExpectedQueryValue(preActionQueryValueResult, queryValueParametersLookup.Values.ToArray());
            HttpStatusCode expectedStatusCode = CalculateExpectedStatusCode(functionSegment);

            string expectedETag = null;
            SyncHelpers.ExecuteActionAndWait(c => this.Synchronizer.SynchronizeEntireEntitySet(c, expectedBindingEntitySet.Name));

            expectedETag = this.VerifyExpected(request, response, expected, expectedStatusCode, expectedETag);

            ETagHeaderVerifier etagHeaderVerifier = new ETagHeaderVerifier();
            etagHeaderVerifier.Verify(expectedETag, request, response);
        }
        private IDictionary<string, QueryValue> CreateQueryValueParameters(ODataRequest request, FunctionSegment functionSegment, IDictionary<string, QueryValue> queryValueParametersLookup)
        {
            var parameters = request.Body.RootElement as ComplexInstance;

            // Convert the parameters to query values
            ExceptionUtilities.CheckObjectNotNull(parameters, "Expected parameters to not be null for action");
            queryValueParametersLookup = this.ParametersPayloadElementToQueryValuesConverter.Convert(parameters, functionSegment.Function);

            return queryValueParametersLookup;
        }
 internal static HttpStatusCode CalculateExpectedStatusCode(FunctionSegment functionSegment)
 {
     // If the action returns information expect 200, otherwise 204
     if (functionSegment.Function.ReturnType == null)
     {
         return HttpStatusCode.NoContent;
     }
     else
     {
         return HttpStatusCode.OK;
     }
 }