Exemplo n.º 1
0
            public void Run()
            {
                BatchOperationHeadersWrapper headers = new BatchOperationHeadersWrapper();

                this.settings.Assert.ExpectedException(
                    () =>
                {
                    if (this.InitialHeaders != null)
                    {
                        foreach (var kvp in this.InitialHeaders)
                        {
                            headers.Add(kvp.Key, kvp.Value);
                        }
                    }

                    if (this.CustomizationFunc != null)
                    {
                        this.CustomizationFunc(headers);
                    }

                    this.VerifyResult(headers);
                },
                    this.ExpectedException,
                    this.settings.ExceptionVerifier);
            }
            /// <summary>
            /// Runs the test action of this test after setting up the batch reader stream.
            /// </summary>
            /// <param name="streamWrapper">The batch reader stream to test.</param>
            protected override void RunTestAction(BatchReaderStreamWrapper streamWrapper)
            {
                // Set a batch encoding since we assert that it is set before callign ProcessPartHeader
                streamWrapper.SetBatchEncoding(this.Encoding);

                bool isChangeSetPart;
                BatchOperationHeadersWrapper headers = streamWrapper.ReadPartHeaders(out isChangeSetPart);

                this.VerifyResult(streamWrapper, headers, isChangeSetPart);
            }
            /// <summary>
            /// Verifies the result of reading the part headers.
            /// </summary>
            /// <param name="streamWrapper">The stream buffer used to read the headers from.</param>
            /// <param name="headers">The headers read from the part.</param>
            /// <param name="isChangeSetPart">true if we detected a changeset part; otherwise false.</param>
            private void VerifyResult(BatchReaderStreamWrapper streamWrapper, BatchOperationHeadersWrapper headers, bool isChangeSetPart)
            {
                base.VerifyResult(streamWrapper.BatchBuffer);

                if (this.ExpectChangeSetPart.HasValue)
                {
                    this.Assert.AreEqual(this.ExpectChangeSetPart.Value, isChangeSetPart,
                                         string.Format("\r\n{0}:\r\nExpected changeset part is '{1}' but reported value is '{2}'.", this.DebugDescription, this.ExpectChangeSetPart.Value, isChangeSetPart));
                }

                if (this.ExpectedHeaders != null)
                {
                    this.Assert.IsNotNull(headers, string.Format("Expected {0} headers but none were found.", this.ExpectedHeaders.Count()));

                    foreach (KeyValuePair <string, string> expectedHeader in this.ExpectedHeaders)
                    {
                        // check that the expected header is present
                        string actualHeaderValue;
                        if (headers.TryGetValue(expectedHeader.Key, out actualHeaderValue))
                        {
                            this.Assert.AreEqual(expectedHeader.Value, actualHeaderValue,
                                                 string.Format("Expected value '{0}' for header '{1}' but found '{2}'.", expectedHeader.Value, expectedHeader.Key, actualHeaderValue));
                        }
                        else
                        {
                            this.Assert.Fail(string.Format("Did not find expected header '{0}'.", expectedHeader.Key));
                        }
                    }

                    if (headers.Any(kvp => !this.ExpectedHeaders.Any(kvp2 => string.Compare(kvp.Key, kvp2.Key, /*ignoreCase*/ true) == 0)))
                    {
                        string expectedHeaders = string.Join(", ", this.ExpectedHeaders.Select(kvp => kvp.Key).ToArray());
                        string actualHeaders   = string.Join(", ", headers.Select(kvp => kvp.Key).ToArray());
                        this.Assert.Fail("Found unexpected headers in the message headers.\r\n"
                                         + "Expected headers: " + expectedHeaders + "\r\n"
                                         + "Actual headers: " + actualHeaders);
                    }
                }
            }
Exemplo n.º 4
0
            /// <summary>
            /// Verifies the result.
            /// </summary>
            /// <param name="headers">The headers read from the part.</param>
            private void VerifyResult(BatchOperationHeadersWrapper headers)
            {
                if (this.ExpectedHeaders != null)
                {
                    this.settings.Assert.IsNotNull(headers, string.Format("Expected {0} headers but none were found.", this.ExpectedHeaders.Count()));

                    foreach (KeyValuePair <string, string> expectedHeader in this.ExpectedHeaders)
                    {
                        // check that the expected header is present
                        if (!headers.ContainsKeyOrdinal(expectedHeader.Key))
                        {
                            this.settings.Assert.Fail(string.Format("Did not find expected header '{0}'.", expectedHeader.Key));
                        }

                        string actualValue;
                        headers.TryGetValue(expectedHeader.Key, out actualValue);
                        this.settings.Assert.AreEqual(expectedHeader.Value, actualValue, "Expected value '{0}' but found value '{1}'.", expectedHeader.Value, actualValue);
                    }

                    int headerCount = headers.Count();
                    this.settings.Assert.AreEqual(this.ExpectedHeaders.Count, headerCount, "Expected {0} headers but found {1}.", this.ExpectedHeaders.Count, headerCount);

                    // Make sure the enumerable works the same way in expected and actual enumerables
                    IEnumerator <KeyValuePair <string, string> > expectedEnumerator = this.ExpectedHeaders.GetEnumerator();
                    IEnumerator <KeyValuePair <string, string> > actualEnumerator   = headers.GetEnumerator();
                    using (expectedEnumerator)
                        using (actualEnumerator)
                        {
                            while (expectedEnumerator.MoveNext())
                            {
                                this.settings.Assert.IsTrue(actualEnumerator.MoveNext(), "Differing numbers of items should have been checked before.");

                                this.settings.Assert.AreEqual(expectedEnumerator.Current, actualEnumerator.Current, "Items don't match.");
                            }
                        }
                }
            }