public void TestSetAndGetKnownProperties()
        {
            string value1         = Guid.NewGuid().ToString();
            string value2         = Guid.NewGuid().ToString();
            string value3         = Guid.NewGuid().ToString();
            var    requestHeaders = new CosmosRequestMessageHeaders();

            requestHeaders.Continuation        = value1;
            requestHeaders.PartitionKey        = value2;
            requestHeaders.PartitionKeyRangeId = value3;
            Assert.AreEqual(value1, requestHeaders.Continuation);
            Assert.AreEqual(value2, requestHeaders.PartitionKey);
            Assert.AreEqual(value3, requestHeaders.PartitionKeyRangeId);
            Assert.AreEqual(value1, requestHeaders[HttpConstants.HttpHeaders.Continuation]);
            Assert.AreEqual(value2, requestHeaders[HttpConstants.HttpHeaders.PartitionKey]);
            Assert.AreEqual(value3, requestHeaders[WFConstants.BackendHeaders.PartitionKeyRangeId]);
            value1 = Guid.NewGuid().ToString();
            value2 = Guid.NewGuid().ToString();
            value3 = Guid.NewGuid().ToString();
            requestHeaders.CosmosMessageHeaders[HttpConstants.HttpHeaders.Continuation]         = value1;
            requestHeaders.CosmosMessageHeaders[HttpConstants.HttpHeaders.PartitionKey]         = value2;
            requestHeaders.CosmosMessageHeaders[WFConstants.BackendHeaders.PartitionKeyRangeId] = value3;
            Assert.AreEqual(value1, requestHeaders.Continuation);
            Assert.AreEqual(value2, requestHeaders.PartitionKey);
            Assert.AreEqual(value3, requestHeaders.PartitionKeyRangeId);
            Assert.AreEqual(value1, requestHeaders[HttpConstants.HttpHeaders.Continuation]);
            Assert.AreEqual(value2, requestHeaders[HttpConstants.HttpHeaders.PartitionKey]);
            Assert.AreEqual(value3, requestHeaders[WFConstants.BackendHeaders.PartitionKeyRangeId]);
        }
        public void TestAllKeys()
        {
            var requestHeaders = new CosmosRequestMessageHeaders();

            requestHeaders.CosmosMessageHeaders[Key] = Guid.NewGuid().ToString();
            Assert.AreEqual(Key, requestHeaders.AllKeys().First());
        }
        public void TestCount()
        {
            var requestHeaders = new CosmosRequestMessageHeaders();

            requestHeaders.CosmosMessageHeaders[Key] = Guid.NewGuid().ToString();
            Assert.AreEqual(1, requestHeaders.CosmosMessageHeaders.Count());
        }
        public void TestClear()
        {
            var requestHeaders = new CosmosRequestMessageHeaders();

            requestHeaders.CosmosMessageHeaders[Key] = Guid.NewGuid().ToString();
            requestHeaders.CosmosMessageHeaders.Clear();
            Assert.IsNull(requestHeaders[Key]);
        }
        public void TestIndexer()
        {
            var    requestHeaders = new CosmosRequestMessageHeaders();
            string value          = Guid.NewGuid().ToString();

            requestHeaders.CosmosMessageHeaders[Key] = value;
            Assert.AreEqual(value, requestHeaders[Key]);
        }
        public void TestCountWithKnownProperties()
        {
            var requestHeaders = new CosmosRequestMessageHeaders();

            requestHeaders.CosmosMessageHeaders[Key] = Guid.NewGuid().ToString();
            requestHeaders.PartitionKey = Guid.NewGuid().ToString();
            Assert.AreEqual(2, requestHeaders.CosmosMessageHeaders.Count());
        }
        public void TestGetValues()
        {
            var    requestHeaders = new CosmosRequestMessageHeaders();
            string value1         = Guid.NewGuid().ToString();

            requestHeaders.Add(Key, value1);
            IEnumerable <string> values = requestHeaders.GetValues(Key);

            Assert.AreEqual(1, values.Count());
        }
        public void TestRemove()
        {
            var    requestHeaders = new CosmosRequestMessageHeaders();
            string value          = Guid.NewGuid().ToString();

            requestHeaders.CosmosMessageHeaders[Key] = value;
            Assert.AreEqual(value, requestHeaders[Key]);
            requestHeaders.Remove(Key);
            Assert.IsNull(requestHeaders[Key]);
        }
        public void TestClearWithKnownProperties()
        {
            var requestHeaders = new CosmosRequestMessageHeaders();

            requestHeaders.CosmosMessageHeaders[Key] = Guid.NewGuid().ToString();
            requestHeaders.PartitionKey = Guid.NewGuid().ToString();
            requestHeaders.CosmosMessageHeaders.Clear();
            Assert.IsNull(requestHeaders[Key]);
            Assert.IsNull(requestHeaders.PartitionKey);
        }
        public void TestGetToNameValueCollection()
        {
            var    requestHeaders = new CosmosRequestMessageHeaders();
            string value          = Guid.NewGuid().ToString();

            requestHeaders.CosmosMessageHeaders[Key] = value;
            NameValueCollection anotherCollection = requestHeaders.CosmosMessageHeaders.ToNameValueCollection();

            Assert.AreEqual(value, anotherCollection[Key]);
        }
        public void TestAddAndGetAndSet()
        {
            string value1         = Guid.NewGuid().ToString();
            string value2         = Guid.NewGuid().ToString();
            var    requestHeaders = new CosmosRequestMessageHeaders();

            requestHeaders.Add(Key, value1);
            Assert.AreEqual(value1, requestHeaders.Get(Key));
            requestHeaders.Set(Key, value2);
            Assert.AreEqual(value2, requestHeaders.Get(Key));
        }
        public void TestAllKeysWithKnownProperties()
        {
            var requestHeaders = new CosmosRequestMessageHeaders();

            requestHeaders.CosmosMessageHeaders[Key] = Guid.NewGuid().ToString();
            requestHeaders.PartitionKey = Guid.NewGuid().ToString();
            var allKeys = requestHeaders.AllKeys();

            Assert.IsTrue(allKeys.Contains(Key));
            Assert.IsTrue(allKeys.Contains(HttpConstants.HttpHeaders.PartitionKey));
        }
        public void TestGetIEnumerableKeys()
        {
            var    requestHeaders = new CosmosRequestMessageHeaders();
            string value          = Guid.NewGuid().ToString();

            requestHeaders.CosmosMessageHeaders[Key] = value;
            foreach (var header in requestHeaders)
            {
                Assert.AreEqual(value, requestHeaders[header]);
                return;
            }
        }
        public void AllKnownPropertiesHaveGetAndSetAndIndexed()
        {
            var requestHeaders        = new CosmosRequestMessageHeaders();
            var knownHeaderProperties = typeof(CosmosRequestMessageHeaders)
                                        .GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
                                        .Where(p => p.GetCustomAttributes(typeof(CosmosKnownHeaderAttribute), false).Any());

            foreach (var knownHeaderProperty in knownHeaderProperties)
            {
                string value  = Guid.NewGuid().ToString();
                string header = ((CosmosKnownHeaderAttribute)knownHeaderProperty.GetCustomAttributes(typeof(CosmosKnownHeaderAttribute), false).First()).HeaderName;
                requestHeaders.CosmosMessageHeaders[header] = value;                          // Using indexer

                Assert.AreEqual(value, (string)knownHeaderProperty.GetValue(requestHeaders)); // Verify getter

                value = Guid.NewGuid().ToString();
                knownHeaderProperty.SetValue(requestHeaders, value);
                Assert.AreEqual(value, requestHeaders[header]);
            }
        }