public void Equals_CompareCollectionFieldsSet_MatchExpectation() { var cacheControl1 = new CacheControlHeaderValue(); var cacheControl2 = new CacheControlHeaderValue(); var cacheControl3 = new CacheControlHeaderValue(); var cacheControl4 = new CacheControlHeaderValue(); var cacheControl5 = new CacheControlHeaderValue(); var cacheControl6 = new CacheControlHeaderValue(); cacheControl1.NoCache = true; cacheControl1.NoCacheHeaders.Add("token2"); Assert.False(cacheControl1.Equals(null), "Compare with 'null'"); cacheControl2.NoCache = true; cacheControl2.NoCacheHeaders.Add("token1"); cacheControl2.NoCacheHeaders.Add("token2"); CompareValues(cacheControl1 !, cacheControl2, false); cacheControl1 !.NoCacheHeaders.Add("token1"); CompareValues(cacheControl1, cacheControl2, true); // Since NoCache and Private generate different hash codes, even if NoCacheHeaders and PrivateHeaders // have the same values, the hash code will be different. cacheControl3.Private = true; cacheControl3.PrivateHeaders.Add("token2"); CompareValues(cacheControl1, cacheControl3, false); cacheControl4.Private = true; cacheControl4.PrivateHeaders.Add("token3"); CompareValues(cacheControl3, cacheControl4, false); cacheControl5.Extensions.Add(new NameValueHeaderValue("custom")); CompareValues(cacheControl1, cacheControl5, false); cacheControl6.Extensions.Add(new NameValueHeaderValue("customN", "customV")); cacheControl6.Extensions.Add(new NameValueHeaderValue("custom")); CompareValues(cacheControl5, cacheControl6, false); cacheControl5.Extensions.Add(new NameValueHeaderValue("customN", "customV")); CompareValues(cacheControl5, cacheControl6, true); }
private CacheControlHeaderValue(CacheControlHeaderValue source) { Debug.Assert(source != null); _noCache = source._noCache; _noStore = source._noStore; _maxAge = source._maxAge; _sharedMaxAge = source._sharedMaxAge; _maxStale = source._maxStale; _maxStaleLimit = source._maxStaleLimit; _minFresh = source._minFresh; _noTransform = source._noTransform; _onlyIfCached = source._onlyIfCached; _publicField = source._publicField; _privateField = source._privateField; _mustRevalidate = source._mustRevalidate; _proxyRevalidate = source._proxyRevalidate; if (source._noCacheHeaders != null) { foreach (var noCacheHeader in source._noCacheHeaders) { NoCacheHeaders.Add(noCacheHeader); } } if (source._privateHeaders != null) { foreach (var privateHeader in source._privateHeaders) { PrivateHeaders.Add(privateHeader); } } if (source._extensions != null) { foreach (var extension in source._extensions) { Extensions.Add((NameValueHeaderValue)((ICloneable)extension).Clone()); } } }
private CacheControlHeaderValue(CacheControlHeaderValue source) { Contract.Requires(source != null); noCache = source.noCache; noStore = source.noStore; maxAge = source.maxAge; sharedMaxAge = source.sharedMaxAge; maxStale = source.maxStale; maxStaleLimit = source.maxStaleLimit; minFresh = source.minFresh; noTransform = source.noTransform; onlyIfCached = source.onlyIfCached; publicField = source.publicField; privateField = source.privateField; mustRevalidate = source.mustRevalidate; proxyRevalidate = source.proxyRevalidate; if (source.noCacheHeaders != null) { foreach (var noCacheHeader in source.noCacheHeaders) { NoCacheHeaders.Add(noCacheHeader); } } if (source.privateHeaders != null) { foreach (var privateHeader in source.privateHeaders) { PrivateHeaders.Add(privateHeader); } } if (source.extensions != null) { foreach (var extension in source.extensions) { Extensions.Add((NameValueHeaderValue)((ICloneable)extension).Clone()); } } }