public void Equals_Same_Value_Returns_True()
        {
            // Arrange
            var options1 = new ProxyHttpRequestOptions
            {
                RequestTimeout = TimeSpan.FromSeconds(60),
                Version        = HttpVersion.Version11,
#if NET
                VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher
#endif
            };

            var options2 = new ProxyHttpRequestOptions
            {
                RequestTimeout = TimeSpan.FromSeconds(60),
                Version        = HttpVersion.Version11,
#if NET
                VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher
#endif
            };

            // Act
            var equals = ProxyHttpRequestOptions.Equals(options1, options2);

            // Assert
            Assert.True(equals);
        }
        public void Equals_Second_Null_Returns_False()
        {
            var options1 = new ProxyHttpRequestOptions
            {
                RequestTimeout = TimeSpan.FromSeconds(60),
                Version        = HttpVersion.Version11,
#if NET
                VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher
#endif
            };

            var equals = ProxyHttpRequestOptions.Equals(options1, null);

            Assert.False(equals);
        }
        public void Equals_First_Null_Returns_False()
        {
            // Arrange
            var options2 = new ProxyHttpRequestOptions
            {
                RequestTimeout = TimeSpan.FromSeconds(60),
                Version        = HttpVersion.Version11,
#if NET
                VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher
#endif
            };

            // Act
            var equals = ProxyHttpRequestOptions.Equals(null, options2);

            // Assert
            Assert.False(equals);
        }
        public void Equals_Different_Value_Returns_False()
        {
            // Arrange
            var options1 = new ProxyHttpRequestOptions
            {
                RequestTimeout = TimeSpan.FromSeconds(60),
                Version        = HttpVersion.Version11,
#if NET
                VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher
#endif
            };

            var options2 = new ProxyHttpRequestOptions
            {
                RequestTimeout = TimeSpan.FromSeconds(60),
                Version        = HttpVersion.Version20,
#if NET
                VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher
#endif
            };

            var options3 = new ProxyHttpRequestOptions
            {
                RequestTimeout = TimeSpan.FromSeconds(60),
                Version        = HttpVersion.Version11,
#if NET
                VersionPolicy = HttpVersionPolicy.RequestVersionOrLower
#endif
            };

            // Act
            var equals1 = ProxyHttpRequestOptions.Equals(options1, options2);
            var equals2 = ProxyHttpRequestOptions.Equals(options1, options3);

            // Assert
            Assert.False(equals1);
#if NET
            Assert.False(equals2);
#else
            Assert.True(equals2);
#endif
        }
        public void DeepClone_Works()
        {
            var options = new ProxyHttpRequestOptions
            {
                RequestTimeout = TimeSpan.FromSeconds(60),
                Version        = HttpVersion.Version11,
#if NET
                VersionPolicy = HttpVersionPolicy.RequestVersionOrHigher
#endif
            };

            var clone = options.DeepClone();

            Assert.NotSame(options, clone);
            Assert.Equal(options.RequestTimeout, clone.RequestTimeout);
            Assert.Equal(options.Version, clone.Version);
#if NET
            Assert.Equal(options.VersionPolicy, clone.VersionPolicy);
#endif
        }