Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/Http/Headers/test/CacheControlHeaderValueTest.cs')
-rw-r--r--src/Http/Headers/test/CacheControlHeaderValueTest.cs1013
1 files changed, 506 insertions, 507 deletions
diff --git a/src/Http/Headers/test/CacheControlHeaderValueTest.cs b/src/Http/Headers/test/CacheControlHeaderValueTest.cs
index bd40a63345..f2f077c705 100644
--- a/src/Http/Headers/test/CacheControlHeaderValueTest.cs
+++ b/src/Http/Headers/test/CacheControlHeaderValueTest.cs
@@ -5,593 +5,592 @@ using System;
using System.Linq;
using Xunit;
-namespace Microsoft.Net.Http.Headers
+namespace Microsoft.Net.Http.Headers;
+
+public class CacheControlHeaderValueTest
{
- public class CacheControlHeaderValueTest
+ [Fact]
+ public void Properties_SetAndGetAllProperties_SetValueReturnedInGetter()
{
- [Fact]
- public void Properties_SetAndGetAllProperties_SetValueReturnedInGetter()
- {
- var cacheControl = new CacheControlHeaderValue();
-
- // Bool properties
- cacheControl.NoCache = true;
- Assert.True(cacheControl.NoCache, "NoCache");
- cacheControl.NoStore = true;
- Assert.True(cacheControl.NoStore, "NoStore");
- cacheControl.MaxStale = true;
- Assert.True(cacheControl.MaxStale, "MaxStale");
- cacheControl.NoTransform = true;
- Assert.True(cacheControl.NoTransform, "NoTransform");
- cacheControl.OnlyIfCached = true;
- Assert.True(cacheControl.OnlyIfCached, "OnlyIfCached");
- cacheControl.Public = true;
- Assert.True(cacheControl.Public, "Public");
- cacheControl.Private = true;
- Assert.True(cacheControl.Private, "Private");
- cacheControl.MustRevalidate = true;
- Assert.True(cacheControl.MustRevalidate, "MustRevalidate");
- cacheControl.ProxyRevalidate = true;
- Assert.True(cacheControl.ProxyRevalidate, "ProxyRevalidate");
-
- // TimeSpan properties
- TimeSpan timeSpan = new TimeSpan(1, 2, 3);
- cacheControl.MaxAge = timeSpan;
- Assert.Equal(timeSpan, cacheControl.MaxAge);
- cacheControl.SharedMaxAge = timeSpan;
- Assert.Equal(timeSpan, cacheControl.SharedMaxAge);
- cacheControl.MaxStaleLimit = timeSpan;
- Assert.Equal(timeSpan, cacheControl.MaxStaleLimit);
- cacheControl.MinFresh = timeSpan;
- Assert.Equal(timeSpan, cacheControl.MinFresh);
-
- // String collection properties
- Assert.NotNull(cacheControl.NoCacheHeaders);
- Assert.Throws<ArgumentException>(() => cacheControl.NoCacheHeaders.Add(null));
- Assert.Throws<FormatException>(() => cacheControl.NoCacheHeaders.Add("invalid PLACEHOLDER"));
- cacheControl.NoCacheHeaders.Add("PLACEHOLDER");
- Assert.Equal(1, cacheControl.NoCacheHeaders.Count);
- Assert.Equal("PLACEHOLDER", cacheControl.NoCacheHeaders.First());
-
- Assert.NotNull(cacheControl.PrivateHeaders);
- Assert.Throws<ArgumentException>(() => cacheControl.PrivateHeaders.Add(null));
- Assert.Throws<FormatException>(() => cacheControl.PrivateHeaders.Add("invalid PLACEHOLDER"));
- cacheControl.PrivateHeaders.Add("PLACEHOLDER");
- Assert.Equal(1, cacheControl.PrivateHeaders.Count);
- Assert.Equal("PLACEHOLDER", cacheControl.PrivateHeaders.First());
-
- // NameValueHeaderValue collection property
- Assert.NotNull(cacheControl.Extensions);
- Assert.Throws<ArgumentNullException>(() => cacheControl.Extensions.Add(null!));
- cacheControl.Extensions.Add(new NameValueHeaderValue("name", "value"));
- Assert.Equal(1, cacheControl.Extensions.Count);
- Assert.Equal(new NameValueHeaderValue("name", "value"), cacheControl.Extensions.First());
- }
+ var cacheControl = new CacheControlHeaderValue();
+
+ // Bool properties
+ cacheControl.NoCache = true;
+ Assert.True(cacheControl.NoCache, "NoCache");
+ cacheControl.NoStore = true;
+ Assert.True(cacheControl.NoStore, "NoStore");
+ cacheControl.MaxStale = true;
+ Assert.True(cacheControl.MaxStale, "MaxStale");
+ cacheControl.NoTransform = true;
+ Assert.True(cacheControl.NoTransform, "NoTransform");
+ cacheControl.OnlyIfCached = true;
+ Assert.True(cacheControl.OnlyIfCached, "OnlyIfCached");
+ cacheControl.Public = true;
+ Assert.True(cacheControl.Public, "Public");
+ cacheControl.Private = true;
+ Assert.True(cacheControl.Private, "Private");
+ cacheControl.MustRevalidate = true;
+ Assert.True(cacheControl.MustRevalidate, "MustRevalidate");
+ cacheControl.ProxyRevalidate = true;
+ Assert.True(cacheControl.ProxyRevalidate, "ProxyRevalidate");
+
+ // TimeSpan properties
+ TimeSpan timeSpan = new TimeSpan(1, 2, 3);
+ cacheControl.MaxAge = timeSpan;
+ Assert.Equal(timeSpan, cacheControl.MaxAge);
+ cacheControl.SharedMaxAge = timeSpan;
+ Assert.Equal(timeSpan, cacheControl.SharedMaxAge);
+ cacheControl.MaxStaleLimit = timeSpan;
+ Assert.Equal(timeSpan, cacheControl.MaxStaleLimit);
+ cacheControl.MinFresh = timeSpan;
+ Assert.Equal(timeSpan, cacheControl.MinFresh);
+
+ // String collection properties
+ Assert.NotNull(cacheControl.NoCacheHeaders);
+ Assert.Throws<ArgumentException>(() => cacheControl.NoCacheHeaders.Add(null));
+ Assert.Throws<FormatException>(() => cacheControl.NoCacheHeaders.Add("invalid PLACEHOLDER"));
+ cacheControl.NoCacheHeaders.Add("PLACEHOLDER");
+ Assert.Equal(1, cacheControl.NoCacheHeaders.Count);
+ Assert.Equal("PLACEHOLDER", cacheControl.NoCacheHeaders.First());
+
+ Assert.NotNull(cacheControl.PrivateHeaders);
+ Assert.Throws<ArgumentException>(() => cacheControl.PrivateHeaders.Add(null));
+ Assert.Throws<FormatException>(() => cacheControl.PrivateHeaders.Add("invalid PLACEHOLDER"));
+ cacheControl.PrivateHeaders.Add("PLACEHOLDER");
+ Assert.Equal(1, cacheControl.PrivateHeaders.Count);
+ Assert.Equal("PLACEHOLDER", cacheControl.PrivateHeaders.First());
+
+ // NameValueHeaderValue collection property
+ Assert.NotNull(cacheControl.Extensions);
+ Assert.Throws<ArgumentNullException>(() => cacheControl.Extensions.Add(null!));
+ cacheControl.Extensions.Add(new NameValueHeaderValue("name", "value"));
+ Assert.Equal(1, cacheControl.Extensions.Count);
+ Assert.Equal(new NameValueHeaderValue("name", "value"), cacheControl.Extensions.First());
+ }
- [Fact]
- public void ToString_UseRequestDirectiveValues_AllSerializedCorrectly()
- {
- var cacheControl = new CacheControlHeaderValue();
- Assert.Equal("", cacheControl.ToString());
-
- // Note that we allow all combinations of all properties even though the RFC specifies rules what value
- // can be used together.
- // Also for property pairs (bool property + collection property) like 'NoCache' and 'NoCacheHeaders' the
- // caller needs to set the bool property in order for the collection to be populated as string.
-
- // Cache Request Directive sample
- cacheControl.NoStore = true;
- Assert.Equal("no-store", cacheControl.ToString());
- cacheControl.NoCache = true;
- Assert.Equal("no-store, no-cache", cacheControl.ToString());
- cacheControl.MaxAge = new TimeSpan(0, 1, 10);
- Assert.Equal("no-store, no-cache, max-age=70", cacheControl.ToString());
- cacheControl.MaxStale = true;
- Assert.Equal("no-store, no-cache, max-age=70, max-stale", cacheControl.ToString());
- cacheControl.MaxStaleLimit = new TimeSpan(0, 2, 5);
- Assert.Equal("no-store, no-cache, max-age=70, max-stale=125", cacheControl.ToString());
- cacheControl.MinFresh = new TimeSpan(0, 3, 0);
- Assert.Equal("no-store, no-cache, max-age=70, max-stale=125, min-fresh=180", cacheControl.ToString());
-
- cacheControl = new CacheControlHeaderValue();
- cacheControl.NoTransform = true;
- Assert.Equal("no-transform", cacheControl.ToString());
- cacheControl.OnlyIfCached = true;
- Assert.Equal("no-transform, only-if-cached", cacheControl.ToString());
- cacheControl.Extensions.Add(new NameValueHeaderValue("custom"));
- cacheControl.Extensions.Add(new NameValueHeaderValue("customName", "customValue"));
- Assert.Equal("no-transform, only-if-cached, custom, customName=customValue", cacheControl.ToString());
-
- cacheControl = new CacheControlHeaderValue();
- cacheControl.Extensions.Add(new NameValueHeaderValue("custom"));
- Assert.Equal("custom", cacheControl.ToString());
- }
+ [Fact]
+ public void ToString_UseRequestDirectiveValues_AllSerializedCorrectly()
+ {
+ var cacheControl = new CacheControlHeaderValue();
+ Assert.Equal("", cacheControl.ToString());
+
+ // Note that we allow all combinations of all properties even though the RFC specifies rules what value
+ // can be used together.
+ // Also for property pairs (bool property + collection property) like 'NoCache' and 'NoCacheHeaders' the
+ // caller needs to set the bool property in order for the collection to be populated as string.
+
+ // Cache Request Directive sample
+ cacheControl.NoStore = true;
+ Assert.Equal("no-store", cacheControl.ToString());
+ cacheControl.NoCache = true;
+ Assert.Equal("no-store, no-cache", cacheControl.ToString());
+ cacheControl.MaxAge = new TimeSpan(0, 1, 10);
+ Assert.Equal("no-store, no-cache, max-age=70", cacheControl.ToString());
+ cacheControl.MaxStale = true;
+ Assert.Equal("no-store, no-cache, max-age=70, max-stale", cacheControl.ToString());
+ cacheControl.MaxStaleLimit = new TimeSpan(0, 2, 5);
+ Assert.Equal("no-store, no-cache, max-age=70, max-stale=125", cacheControl.ToString());
+ cacheControl.MinFresh = new TimeSpan(0, 3, 0);
+ Assert.Equal("no-store, no-cache, max-age=70, max-stale=125, min-fresh=180", cacheControl.ToString());
+
+ cacheControl = new CacheControlHeaderValue();
+ cacheControl.NoTransform = true;
+ Assert.Equal("no-transform", cacheControl.ToString());
+ cacheControl.OnlyIfCached = true;
+ Assert.Equal("no-transform, only-if-cached", cacheControl.ToString());
+ cacheControl.Extensions.Add(new NameValueHeaderValue("custom"));
+ cacheControl.Extensions.Add(new NameValueHeaderValue("customName", "customValue"));
+ Assert.Equal("no-transform, only-if-cached, custom, customName=customValue", cacheControl.ToString());
+
+ cacheControl = new CacheControlHeaderValue();
+ cacheControl.Extensions.Add(new NameValueHeaderValue("custom"));
+ Assert.Equal("custom", cacheControl.ToString());
+ }
+
+ [Fact]
+ public void ToString_UseResponseDirectiveValues_AllSerializedCorrectly()
+ {
+ var cacheControl = new CacheControlHeaderValue();
+ Assert.Equal("", cacheControl.ToString());
+
+ cacheControl.NoCache = true;
+ Assert.Equal("no-cache", cacheControl.ToString());
+ cacheControl.NoCacheHeaders.Add("PLACEHOLDER1");
+ Assert.Equal("no-cache=\"PLACEHOLDER1\"", cacheControl.ToString());
+ cacheControl.Public = true;
+ Assert.Equal("public, no-cache=\"PLACEHOLDER1\"", cacheControl.ToString());
+
+ cacheControl = new CacheControlHeaderValue();
+ cacheControl.Private = true;
+ Assert.Equal("private", cacheControl.ToString());
+ cacheControl.PrivateHeaders.Add("PLACEHOLDER2");
+ cacheControl.PrivateHeaders.Add("PLACEHOLDER3");
+ Assert.Equal("private=\"PLACEHOLDER2, PLACEHOLDER3\"", cacheControl.ToString());
+ cacheControl.MustRevalidate = true;
+ Assert.Equal("must-revalidate, private=\"PLACEHOLDER2, PLACEHOLDER3\"", cacheControl.ToString());
+ cacheControl.ProxyRevalidate = true;
+ Assert.Equal("must-revalidate, proxy-revalidate, private=\"PLACEHOLDER2, PLACEHOLDER3\"", cacheControl.ToString());
+ }
- [Fact]
- public void ToString_UseResponseDirectiveValues_AllSerializedCorrectly()
+ [Fact]
+ public void GetHashCode_CompareValuesWithBoolFieldsSet_MatchExpectation()
+ {
+ // Verify that different bool fields return different hash values.
+ var values = new CacheControlHeaderValue[9];
+
+ for (int i = 0; i < values.Length; i++)
{
- var cacheControl = new CacheControlHeaderValue();
- Assert.Equal("", cacheControl.ToString());
-
- cacheControl.NoCache = true;
- Assert.Equal("no-cache", cacheControl.ToString());
- cacheControl.NoCacheHeaders.Add("PLACEHOLDER1");
- Assert.Equal("no-cache=\"PLACEHOLDER1\"", cacheControl.ToString());
- cacheControl.Public = true;
- Assert.Equal("public, no-cache=\"PLACEHOLDER1\"", cacheControl.ToString());
-
- cacheControl = new CacheControlHeaderValue();
- cacheControl.Private = true;
- Assert.Equal("private", cacheControl.ToString());
- cacheControl.PrivateHeaders.Add("PLACEHOLDER2");
- cacheControl.PrivateHeaders.Add("PLACEHOLDER3");
- Assert.Equal("private=\"PLACEHOLDER2, PLACEHOLDER3\"", cacheControl.ToString());
- cacheControl.MustRevalidate = true;
- Assert.Equal("must-revalidate, private=\"PLACEHOLDER2, PLACEHOLDER3\"", cacheControl.ToString());
- cacheControl.ProxyRevalidate = true;
- Assert.Equal("must-revalidate, proxy-revalidate, private=\"PLACEHOLDER2, PLACEHOLDER3\"", cacheControl.ToString());
+ values[i] = new CacheControlHeaderValue();
}
- [Fact]
- public void GetHashCode_CompareValuesWithBoolFieldsSet_MatchExpectation()
+ values[0].ProxyRevalidate = true;
+ values[1].NoCache = true;
+ values[2].NoStore = true;
+ values[3].MaxStale = true;
+ values[4].NoTransform = true;
+ values[5].OnlyIfCached = true;
+ values[6].Public = true;
+ values[7].Private = true;
+ values[8].MustRevalidate = true;
+
+ // Only one bool field set. All hash codes should differ
+ for (int i = 0; i < values.Length; i++)
{
- // Verify that different bool fields return different hash values.
- var values = new CacheControlHeaderValue[9];
-
- for (int i = 0; i < values.Length; i++)
+ for (int j = 0; j < values.Length; j++)
{
- values[i] = new CacheControlHeaderValue();
- }
-
- values[0].ProxyRevalidate = true;
- values[1].NoCache = true;
- values[2].NoStore = true;
- values[3].MaxStale = true;
- values[4].NoTransform = true;
- values[5].OnlyIfCached = true;
- values[6].Public = true;
- values[7].Private = true;
- values[8].MustRevalidate = true;
-
- // Only one bool field set. All hash codes should differ
- for (int i = 0; i < values.Length; i++)
- {
- for (int j = 0; j < values.Length; j++)
+ if (i != j)
{
- if (i != j)
- {
- CompareHashCodes(values[i], values[j], false);
- }
+ CompareHashCodes(values[i], values[j], false);
}
}
-
- // Validate that two instances with the same bool fields set are equal.
- values[0].NoCache = true;
- CompareHashCodes(values[0], values[1], false);
- values[1].ProxyRevalidate = true;
- CompareHashCodes(values[0], values[1], true);
}
- [Fact]
- public void GetHashCode_CompareValuesWithTimeSpanFieldsSet_MatchExpectation()
- {
- // Verify that different timespan fields return different hash values.
- var values = new CacheControlHeaderValue[4];
+ // Validate that two instances with the same bool fields set are equal.
+ values[0].NoCache = true;
+ CompareHashCodes(values[0], values[1], false);
+ values[1].ProxyRevalidate = true;
+ CompareHashCodes(values[0], values[1], true);
+ }
- for (int i = 0; i < values.Length; i++)
- {
- values[i] = new CacheControlHeaderValue();
- }
+ [Fact]
+ public void GetHashCode_CompareValuesWithTimeSpanFieldsSet_MatchExpectation()
+ {
+ // Verify that different timespan fields return different hash values.
+ var values = new CacheControlHeaderValue[4];
+
+ for (int i = 0; i < values.Length; i++)
+ {
+ values[i] = new CacheControlHeaderValue();
+ }
- values[0].MaxAge = new TimeSpan(0, 1, 1);
- values[1].MaxStaleLimit = new TimeSpan(0, 1, 1);
- values[2].MinFresh = new TimeSpan(0, 1, 1);
- values[3].SharedMaxAge = new TimeSpan(0, 1, 1);
+ values[0].MaxAge = new TimeSpan(0, 1, 1);
+ values[1].MaxStaleLimit = new TimeSpan(0, 1, 1);
+ values[2].MinFresh = new TimeSpan(0, 1, 1);
+ values[3].SharedMaxAge = new TimeSpan(0, 1, 1);
- // Only one timespan field set. All hash codes should differ
- for (int i = 0; i < values.Length; i++)
+ // Only one timespan field set. All hash codes should differ
+ for (int i = 0; i < values.Length; i++)
+ {
+ for (int j = 0; j < values.Length; j++)
{
- for (int j = 0; j < values.Length; j++)
+ if (i != j)
{
- if (i != j)
- {
- CompareHashCodes(values[i], values[j], false);
- }
+ CompareHashCodes(values[i], values[j], false);
}
}
+ }
- values[0].MaxStaleLimit = new TimeSpan(0, 1, 2);
- CompareHashCodes(values[0], values[1], false);
+ values[0].MaxStaleLimit = new TimeSpan(0, 1, 2);
+ CompareHashCodes(values[0], values[1], false);
- values[1].MaxAge = new TimeSpan(0, 1, 1);
- values[1].MaxStaleLimit = new TimeSpan(0, 1, 2);
- CompareHashCodes(values[0], values[1], true);
- }
+ values[1].MaxAge = new TimeSpan(0, 1, 1);
+ values[1].MaxStaleLimit = new TimeSpan(0, 1, 2);
+ CompareHashCodes(values[0], values[1], true);
+ }
- [Fact]
- public void GetHashCode_CompareCollectionFieldsSet_MatchExpectation()
- {
- var cacheControl1 = new CacheControlHeaderValue();
- var cacheControl2 = new CacheControlHeaderValue();
- var cacheControl3 = new CacheControlHeaderValue();
- var cacheControl4 = new CacheControlHeaderValue();
- var cacheControl5 = new CacheControlHeaderValue();
+ [Fact]
+ public void GetHashCode_CompareCollectionFieldsSet_MatchExpectation()
+ {
+ var cacheControl1 = new CacheControlHeaderValue();
+ var cacheControl2 = new CacheControlHeaderValue();
+ var cacheControl3 = new CacheControlHeaderValue();
+ var cacheControl4 = new CacheControlHeaderValue();
+ var cacheControl5 = new CacheControlHeaderValue();
- cacheControl1.NoCache = true;
- cacheControl1.NoCacheHeaders.Add("PLACEHOLDER2");
+ cacheControl1.NoCache = true;
+ cacheControl1.NoCacheHeaders.Add("PLACEHOLDER2");
- cacheControl2.NoCache = true;
- cacheControl2.NoCacheHeaders.Add("PLACEHOLDER1");
- cacheControl2.NoCacheHeaders.Add("PLACEHOLDER2");
+ cacheControl2.NoCache = true;
+ cacheControl2.NoCacheHeaders.Add("PLACEHOLDER1");
+ cacheControl2.NoCacheHeaders.Add("PLACEHOLDER2");
- CompareHashCodes(cacheControl1, cacheControl2, false);
+ CompareHashCodes(cacheControl1, cacheControl2, false);
- cacheControl1.NoCacheHeaders.Add("PLACEHOLDER1");
- CompareHashCodes(cacheControl1, cacheControl2, true);
+ cacheControl1.NoCacheHeaders.Add("PLACEHOLDER1");
+ CompareHashCodes(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("PLACEHOLDER2");
- CompareHashCodes(cacheControl1, cacheControl3, false);
+ // 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("PLACEHOLDER2");
+ CompareHashCodes(cacheControl1, cacheControl3, false);
- cacheControl4.Extensions.Add(new NameValueHeaderValue("custom"));
- CompareHashCodes(cacheControl1, cacheControl4, false);
+ cacheControl4.Extensions.Add(new NameValueHeaderValue("custom"));
+ CompareHashCodes(cacheControl1, cacheControl4, false);
- cacheControl5.Extensions.Add(new NameValueHeaderValue("customN", "customV"));
- cacheControl5.Extensions.Add(new NameValueHeaderValue("custom"));
- CompareHashCodes(cacheControl4, cacheControl5, false);
+ cacheControl5.Extensions.Add(new NameValueHeaderValue("customN", "customV"));
+ cacheControl5.Extensions.Add(new NameValueHeaderValue("custom"));
+ CompareHashCodes(cacheControl4, cacheControl5, false);
- cacheControl4.Extensions.Add(new NameValueHeaderValue("customN", "customV"));
- CompareHashCodes(cacheControl4, cacheControl5, true);
- }
+ cacheControl4.Extensions.Add(new NameValueHeaderValue("customN", "customV"));
+ CompareHashCodes(cacheControl4, cacheControl5, true);
+ }
- [Fact]
- public void Equals_CompareValuesWithBoolFieldsSet_MatchExpectation()
- {
- // Verify that different bool fields return different hash values.
- var values = new CacheControlHeaderValue[9];
+ [Fact]
+ public void Equals_CompareValuesWithBoolFieldsSet_MatchExpectation()
+ {
+ // Verify that different bool fields return different hash values.
+ var values = new CacheControlHeaderValue[9];
- for (int i = 0; i < values.Length; i++)
- {
- values[i] = new CacheControlHeaderValue();
- }
+ for (int i = 0; i < values.Length; i++)
+ {
+ values[i] = new CacheControlHeaderValue();
+ }
- values[0].ProxyRevalidate = true;
- values[1].NoCache = true;
- values[2].NoStore = true;
- values[3].MaxStale = true;
- values[4].NoTransform = true;
- values[5].OnlyIfCached = true;
- values[6].Public = true;
- values[7].Private = true;
- values[8].MustRevalidate = true;
-
- // Only one bool field set. All hash codes should differ
- for (int i = 0; i < values.Length; i++)
+ values[0].ProxyRevalidate = true;
+ values[1].NoCache = true;
+ values[2].NoStore = true;
+ values[3].MaxStale = true;
+ values[4].NoTransform = true;
+ values[5].OnlyIfCached = true;
+ values[6].Public = true;
+ values[7].Private = true;
+ values[8].MustRevalidate = true;
+
+ // Only one bool field set. All hash codes should differ
+ for (int i = 0; i < values.Length; i++)
+ {
+ for (int j = 0; j < values.Length; j++)
{
- for (int j = 0; j < values.Length; j++)
+ if (i != j)
{
- if (i != j)
- {
- CompareValues(values[i], values[j], false);
- }
+ CompareValues(values[i], values[j], false);
}
}
-
- // Validate that two instances with the same bool fields set are equal.
- values[0].NoCache = true;
- CompareValues(values[0], values[1], false);
- values[1].ProxyRevalidate = true;
- CompareValues(values[0], values[1], true);
}
- [Fact]
- public void Equals_CompareValuesWithTimeSpanFieldsSet_MatchExpectation()
- {
- // Verify that different timespan fields return different hash values.
- var values = new CacheControlHeaderValue[4];
+ // Validate that two instances with the same bool fields set are equal.
+ values[0].NoCache = true;
+ CompareValues(values[0], values[1], false);
+ values[1].ProxyRevalidate = true;
+ CompareValues(values[0], values[1], true);
+ }
- for (int i = 0; i < values.Length; i++)
- {
- values[i] = new CacheControlHeaderValue();
- }
+ [Fact]
+ public void Equals_CompareValuesWithTimeSpanFieldsSet_MatchExpectation()
+ {
+ // Verify that different timespan fields return different hash values.
+ var values = new CacheControlHeaderValue[4];
- values[0].MaxAge = new TimeSpan(0, 1, 1);
- values[1].MaxStaleLimit = new TimeSpan(0, 1, 1);
- values[2].MinFresh = new TimeSpan(0, 1, 1);
- values[3].SharedMaxAge = new TimeSpan(0, 1, 1);
+ for (int i = 0; i < values.Length; i++)
+ {
+ values[i] = new CacheControlHeaderValue();
+ }
+
+ values[0].MaxAge = new TimeSpan(0, 1, 1);
+ values[1].MaxStaleLimit = new TimeSpan(0, 1, 1);
+ values[2].MinFresh = new TimeSpan(0, 1, 1);
+ values[3].SharedMaxAge = new TimeSpan(0, 1, 1);
- // Only one timespan field set. All hash codes should differ
- for (int i = 0; i < values.Length; i++)
+ // Only one timespan field set. All hash codes should differ
+ for (int i = 0; i < values.Length; i++)
+ {
+ for (int j = 0; j < values.Length; j++)
{
- for (int j = 0; j < values.Length; j++)
+ if (i != j)
{
- if (i != j)
- {
- CompareValues(values[i], values[j], false);
- }
+ CompareValues(values[i], values[j], false);
}
}
+ }
- values[0].MaxStaleLimit = new TimeSpan(0, 1, 2);
- CompareValues(values[0], values[1], false);
+ values[0].MaxStaleLimit = new TimeSpan(0, 1, 2);
+ CompareValues(values[0], values[1], false);
- values[1].MaxAge = new TimeSpan(0, 1, 1);
- values[1].MaxStaleLimit = new TimeSpan(0, 1, 2);
- CompareValues(values[0], values[1], true);
+ values[1].MaxAge = new TimeSpan(0, 1, 1);
+ values[1].MaxStaleLimit = new TimeSpan(0, 1, 2);
+ CompareValues(values[0], values[1], true);
- var value1 = new CacheControlHeaderValue();
- value1.MaxStale = true;
- var value2 = new CacheControlHeaderValue();
- value2.MaxStale = true;
- CompareValues(value1, value2, true);
+ var value1 = new CacheControlHeaderValue();
+ value1.MaxStale = true;
+ var value2 = new CacheControlHeaderValue();
+ value2.MaxStale = true;
+ CompareValues(value1, value2, true);
- value2.MaxStaleLimit = new TimeSpan(1, 2, 3);
- CompareValues(value1, value2, false);
- }
+ value2.MaxStaleLimit = new TimeSpan(1, 2, 3);
+ CompareValues(value1, value2, false);
+ }
- [Fact]
- 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();
+ [Fact]
+ 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("PLACEHOLDER2");
+ cacheControl1.NoCache = true;
+ cacheControl1.NoCacheHeaders.Add("PLACEHOLDER2");
- Assert.False(cacheControl1.Equals(null), "Compare with 'null'");
+ Assert.False(cacheControl1.Equals(null), "Compare with 'null'");
- cacheControl2.NoCache = true;
- cacheControl2.NoCacheHeaders.Add("PLACEHOLDER1");
- cacheControl2.NoCacheHeaders.Add("PLACEHOLDER2");
+ cacheControl2.NoCache = true;
+ cacheControl2.NoCacheHeaders.Add("PLACEHOLDER1");
+ cacheControl2.NoCacheHeaders.Add("PLACEHOLDER2");
- CompareValues(cacheControl1!, cacheControl2, false);
+ CompareValues(cacheControl1!, cacheControl2, false);
- cacheControl1!.NoCacheHeaders.Add("PLACEHOLDER1");
- CompareValues(cacheControl1, cacheControl2, true);
+ cacheControl1!.NoCacheHeaders.Add("PLACEHOLDER1");
+ 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("PLACEHOLDER2");
- CompareValues(cacheControl1, cacheControl3, false);
+ // 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("PLACEHOLDER2");
+ CompareValues(cacheControl1, cacheControl3, false);
- cacheControl4.Private = true;
- cacheControl4.PrivateHeaders.Add("PLACEHOLDER3");
- CompareValues(cacheControl3, cacheControl4, false);
+ cacheControl4.Private = true;
+ cacheControl4.PrivateHeaders.Add("PLACEHOLDER3");
+ CompareValues(cacheControl3, cacheControl4, false);
- cacheControl5.Extensions.Add(new NameValueHeaderValue("custom"));
- CompareValues(cacheControl1, cacheControl5, 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);
+ 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);
- }
+ cacheControl5.Extensions.Add(new NameValueHeaderValue("customN", "customV"));
+ CompareValues(cacheControl5, cacheControl6, true);
+ }
- [Fact]
- public void TryParse_DifferentValidScenarios_AllReturnTrue()
- {
- var expected = new CacheControlHeaderValue();
- expected.NoCache = true;
- CheckValidTryParse(" , no-cache ,,", expected);
-
- expected = new CacheControlHeaderValue();
- expected.NoCache = true;
- expected.NoCacheHeaders.Add("PLACEHOLDER1");
- expected.NoCacheHeaders.Add("PLACEHOLDER2");
- CheckValidTryParse("no-cache=\"PLACEHOLDER1, PLACEHOLDER2\"", expected);
-
- expected = new CacheControlHeaderValue();
- expected.NoStore = true;
- expected.MaxAge = new TimeSpan(0, 0, 125);
- expected.MaxStale = true;
- CheckValidTryParse(" no-store , max-age = 125, max-stale,", expected);
-
- expected = new CacheControlHeaderValue();
- expected.MinFresh = new TimeSpan(0, 0, 123);
- expected.NoTransform = true;
- expected.OnlyIfCached = true;
- expected.Extensions.Add(new NameValueHeaderValue("custom"));
- CheckValidTryParse("min-fresh=123, no-transform, only-if-cached, custom", expected);
-
- expected = new CacheControlHeaderValue();
- expected.Public = true;
- expected.Private = true;
- expected.PrivateHeaders.Add("PLACEHOLDER1");
- expected.MustRevalidate = true;
- expected.ProxyRevalidate = true;
- expected.Extensions.Add(new NameValueHeaderValue("c", "d"));
- expected.Extensions.Add(new NameValueHeaderValue("a", "b"));
- CheckValidTryParse(",public, , private=\"PLACEHOLDER1\", must-revalidate, c=d, proxy-revalidate, a=b", expected);
-
- expected = new CacheControlHeaderValue();
- expected.Private = true;
- expected.SharedMaxAge = new TimeSpan(0, 0, 1234567890);
- expected.MaxAge = new TimeSpan(0, 0, 987654321);
- CheckValidTryParse("s-maxage=1234567890, private, max-age = 987654321,", expected);
-
- expected = new CacheControlHeaderValue();
- expected.Extensions.Add(new NameValueHeaderValue("custom", ""));
- CheckValidTryParse("custom=", expected);
- }
+ [Fact]
+ public void TryParse_DifferentValidScenarios_AllReturnTrue()
+ {
+ var expected = new CacheControlHeaderValue();
+ expected.NoCache = true;
+ CheckValidTryParse(" , no-cache ,,", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.NoCache = true;
+ expected.NoCacheHeaders.Add("PLACEHOLDER1");
+ expected.NoCacheHeaders.Add("PLACEHOLDER2");
+ CheckValidTryParse("no-cache=\"PLACEHOLDER1, PLACEHOLDER2\"", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.NoStore = true;
+ expected.MaxAge = new TimeSpan(0, 0, 125);
+ expected.MaxStale = true;
+ CheckValidTryParse(" no-store , max-age = 125, max-stale,", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.MinFresh = new TimeSpan(0, 0, 123);
+ expected.NoTransform = true;
+ expected.OnlyIfCached = true;
+ expected.Extensions.Add(new NameValueHeaderValue("custom"));
+ CheckValidTryParse("min-fresh=123, no-transform, only-if-cached, custom", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.Public = true;
+ expected.Private = true;
+ expected.PrivateHeaders.Add("PLACEHOLDER1");
+ expected.MustRevalidate = true;
+ expected.ProxyRevalidate = true;
+ expected.Extensions.Add(new NameValueHeaderValue("c", "d"));
+ expected.Extensions.Add(new NameValueHeaderValue("a", "b"));
+ CheckValidTryParse(",public, , private=\"PLACEHOLDER1\", must-revalidate, c=d, proxy-revalidate, a=b", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.Private = true;
+ expected.SharedMaxAge = new TimeSpan(0, 0, 1234567890);
+ expected.MaxAge = new TimeSpan(0, 0, 987654321);
+ CheckValidTryParse("s-maxage=1234567890, private, max-age = 987654321,", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.Extensions.Add(new NameValueHeaderValue("custom", ""));
+ CheckValidTryParse("custom=", expected);
+ }
- [Theory]
- [InlineData(null)]
- [InlineData("")]
- [InlineData(" ")]
- // PLACEHOLDER-only values
- [InlineData("no-store=15")]
- [InlineData("no-store=")]
- [InlineData("no-transform=a")]
- [InlineData("no-transform=")]
- [InlineData("only-if-cached=\"x\"")]
- [InlineData("only-if-cached=")]
- [InlineData("public=\"x\"")]
- [InlineData("public=")]
- [InlineData("must-revalidate=\"1\"")]
- [InlineData("must-revalidate=")]
- [InlineData("proxy-revalidate=x")]
- [InlineData("proxy-revalidate=")]
- // PLACEHOLDER with optional field-name list
- [InlineData("no-cache=")]
- [InlineData("no-cache=PLACEHOLDER")]
- [InlineData("no-cache=\"PLACEHOLDER")]
- [InlineData("no-cache=\"\"")] // at least one PLACEHOLDER expected as value
- [InlineData("private=")]
- [InlineData("private=PLACEHOLDER")]
- [InlineData("private=\"PLACEHOLDER")]
- [InlineData("private=\",\"")] // at least one PLACEHOLDER expected as value
- [InlineData("private=\"=\"")]
- // PLACEHOLDER with delta-seconds value
- [InlineData("max-age")]
- [InlineData("max-age=")]
- [InlineData("max-age=a")]
- [InlineData("max-age=\"1\"")]
- [InlineData("max-age=1.5")]
- [InlineData("max-stale=")]
- [InlineData("max-stale=a")]
- [InlineData("max-stale=\"1\"")]
- [InlineData("max-stale=1.5")]
- [InlineData("min-fresh")]
- [InlineData("min-fresh=")]
- [InlineData("min-fresh=a")]
- [InlineData("min-fresh=\"1\"")]
- [InlineData("min-fresh=1.5")]
- [InlineData("s-maxage")]
- [InlineData("s-maxage=")]
- [InlineData("s-maxage=a")]
- [InlineData("s-maxage=\"1\"")]
- [InlineData("s-maxage=1.5")]
- // Invalid Extension values
- [InlineData("custom value")]
- public void TryParse_DifferentInvalidScenarios_ReturnsFalse(string input)
- {
- CheckInvalidTryParse(input);
- }
+ [Theory]
+ [InlineData(null)]
+ [InlineData("")]
+ [InlineData(" ")]
+ // PLACEHOLDER-only values
+ [InlineData("no-store=15")]
+ [InlineData("no-store=")]
+ [InlineData("no-transform=a")]
+ [InlineData("no-transform=")]
+ [InlineData("only-if-cached=\"x\"")]
+ [InlineData("only-if-cached=")]
+ [InlineData("public=\"x\"")]
+ [InlineData("public=")]
+ [InlineData("must-revalidate=\"1\"")]
+ [InlineData("must-revalidate=")]
+ [InlineData("proxy-revalidate=x")]
+ [InlineData("proxy-revalidate=")]
+ // PLACEHOLDER with optional field-name list
+ [InlineData("no-cache=")]
+ [InlineData("no-cache=PLACEHOLDER")]
+ [InlineData("no-cache=\"PLACEHOLDER")]
+ [InlineData("no-cache=\"\"")] // at least one PLACEHOLDER expected as value
+ [InlineData("private=")]
+ [InlineData("private=PLACEHOLDER")]
+ [InlineData("private=\"PLACEHOLDER")]
+ [InlineData("private=\",\"")] // at least one PLACEHOLDER expected as value
+ [InlineData("private=\"=\"")]
+ // PLACEHOLDER with delta-seconds value
+ [InlineData("max-age")]
+ [InlineData("max-age=")]
+ [InlineData("max-age=a")]
+ [InlineData("max-age=\"1\"")]
+ [InlineData("max-age=1.5")]
+ [InlineData("max-stale=")]
+ [InlineData("max-stale=a")]
+ [InlineData("max-stale=\"1\"")]
+ [InlineData("max-stale=1.5")]
+ [InlineData("min-fresh")]
+ [InlineData("min-fresh=")]
+ [InlineData("min-fresh=a")]
+ [InlineData("min-fresh=\"1\"")]
+ [InlineData("min-fresh=1.5")]
+ [InlineData("s-maxage")]
+ [InlineData("s-maxage=")]
+ [InlineData("s-maxage=a")]
+ [InlineData("s-maxage=\"1\"")]
+ [InlineData("s-maxage=1.5")]
+ // Invalid Extension values
+ [InlineData("custom value")]
+ public void TryParse_DifferentInvalidScenarios_ReturnsFalse(string input)
+ {
+ CheckInvalidTryParse(input);
+ }
- [Fact]
- public void Parse_SetOfValidValueStrings_ParsedCorrectly()
- {
- // Just verify parser is implemented correctly. Don't try to test syntax parsed by CacheControlHeaderValue.
- var expected = new CacheControlHeaderValue();
- expected.NoStore = true;
- expected.MinFresh = new TimeSpan(0, 2, 3);
- CheckValidParse(" , no-store, min-fresh=123", expected);
-
- expected = new CacheControlHeaderValue();
- expected.MaxStale = true;
- expected.NoCache = true;
- expected.NoCacheHeaders.Add("t");
- CheckValidParse("max-stale, no-cache=\"t\", ,,", expected);
-
- expected = new CacheControlHeaderValue();
- expected.Extensions.Add(new NameValueHeaderValue("custom"));
- CheckValidParse("custom =", expected);
-
- expected = new CacheControlHeaderValue();
- expected.Extensions.Add(new NameValueHeaderValue("custom", ""));
- CheckValidParse("custom =", expected);
- }
+ [Fact]
+ public void Parse_SetOfValidValueStrings_ParsedCorrectly()
+ {
+ // Just verify parser is implemented correctly. Don't try to test syntax parsed by CacheControlHeaderValue.
+ var expected = new CacheControlHeaderValue();
+ expected.NoStore = true;
+ expected.MinFresh = new TimeSpan(0, 2, 3);
+ CheckValidParse(" , no-store, min-fresh=123", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.MaxStale = true;
+ expected.NoCache = true;
+ expected.NoCacheHeaders.Add("t");
+ CheckValidParse("max-stale, no-cache=\"t\", ,,", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.Extensions.Add(new NameValueHeaderValue("custom"));
+ CheckValidParse("custom =", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.Extensions.Add(new NameValueHeaderValue("custom", ""));
+ CheckValidParse("custom =", expected);
+ }
- [Fact]
- public void Parse_SetOfInvalidValueStrings_Throws()
- {
- CheckInvalidParse(null);
- CheckInvalidParse("");
- CheckInvalidParse(" ");
- CheckInvalidParse("no-cache,=");
- CheckInvalidParse("max-age=123x");
- CheckInvalidParse("=no-cache");
- CheckInvalidParse("no-cache no-store");
- CheckInvalidParse("会");
- }
+ [Fact]
+ public void Parse_SetOfInvalidValueStrings_Throws()
+ {
+ CheckInvalidParse(null);
+ CheckInvalidParse("");
+ CheckInvalidParse(" ");
+ CheckInvalidParse("no-cache,=");
+ CheckInvalidParse("max-age=123x");
+ CheckInvalidParse("=no-cache");
+ CheckInvalidParse("no-cache no-store");
+ CheckInvalidParse("会");
+ }
- [Fact]
- public void TryParse_SetOfValidValueStrings_ParsedCorrectly()
- {
- // Just verify parser is implemented correctly. Don't try to test syntax parsed by CacheControlHeaderValue.
- var expected = new CacheControlHeaderValue();
- expected.NoStore = true;
- expected.MinFresh = new TimeSpan(0, 2, 3);
- CheckValidTryParse(" , no-store, min-fresh=123", expected);
-
- expected = new CacheControlHeaderValue();
- expected.MaxStale = true;
- expected.NoCache = true;
- expected.NoCacheHeaders.Add("t");
- CheckValidTryParse("max-stale, no-cache=\"t\", ,,", expected);
-
- expected = new CacheControlHeaderValue();
- expected.Extensions.Add(new NameValueHeaderValue("custom"));
- CheckValidTryParse("custom = ", expected);
-
- expected = new CacheControlHeaderValue();
- expected.Extensions.Add(new NameValueHeaderValue("custom", ""));
- CheckValidTryParse("custom =", expected);
- }
+ [Fact]
+ public void TryParse_SetOfValidValueStrings_ParsedCorrectly()
+ {
+ // Just verify parser is implemented correctly. Don't try to test syntax parsed by CacheControlHeaderValue.
+ var expected = new CacheControlHeaderValue();
+ expected.NoStore = true;
+ expected.MinFresh = new TimeSpan(0, 2, 3);
+ CheckValidTryParse(" , no-store, min-fresh=123", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.MaxStale = true;
+ expected.NoCache = true;
+ expected.NoCacheHeaders.Add("t");
+ CheckValidTryParse("max-stale, no-cache=\"t\", ,,", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.Extensions.Add(new NameValueHeaderValue("custom"));
+ CheckValidTryParse("custom = ", expected);
+
+ expected = new CacheControlHeaderValue();
+ expected.Extensions.Add(new NameValueHeaderValue("custom", ""));
+ CheckValidTryParse("custom =", expected);
+ }
- [Fact]
- public void TryParse_SetOfInvalidValueStrings_ReturnsFalse()
- {
- CheckInvalidTryParse("no-cache,=");
- CheckInvalidTryParse("max-age=123x");
- CheckInvalidTryParse("=no-cache");
- CheckInvalidTryParse("no-cache no-store");
- CheckInvalidTryParse("会");
- }
+ [Fact]
+ public void TryParse_SetOfInvalidValueStrings_ReturnsFalse()
+ {
+ CheckInvalidTryParse("no-cache,=");
+ CheckInvalidTryParse("max-age=123x");
+ CheckInvalidTryParse("=no-cache");
+ CheckInvalidTryParse("no-cache no-store");
+ CheckInvalidTryParse("会");
+ }
- #region Helper methods
+ #region Helper methods
- private void CompareHashCodes(CacheControlHeaderValue x, CacheControlHeaderValue y, bool areEqual)
+ private void CompareHashCodes(CacheControlHeaderValue x, CacheControlHeaderValue y, bool areEqual)
+ {
+ if (areEqual)
{
- if (areEqual)
- {
- Assert.Equal(x.GetHashCode(), y.GetHashCode());
- }
- else
- {
- Assert.NotEqual(x.GetHashCode(), y.GetHashCode());
- }
+ Assert.Equal(x.GetHashCode(), y.GetHashCode());
}
-
- private void CompareValues(CacheControlHeaderValue x, CacheControlHeaderValue y, bool areEqual)
+ else
{
- Assert.Equal(areEqual, x.Equals(y));
- Assert.Equal(areEqual, y.Equals(x));
+ Assert.NotEqual(x.GetHashCode(), y.GetHashCode());
}
+ }
- private void CheckValidParse(string? input, CacheControlHeaderValue expectedResult)
- {
- var result = CacheControlHeaderValue.Parse(input);
- Assert.Equal(expectedResult, result);
- }
+ private void CompareValues(CacheControlHeaderValue x, CacheControlHeaderValue y, bool areEqual)
+ {
+ Assert.Equal(areEqual, x.Equals(y));
+ Assert.Equal(areEqual, y.Equals(x));
+ }
- private void CheckInvalidParse(string? input)
- {
- Assert.Throws<FormatException>(() => CacheControlHeaderValue.Parse(input));
- }
+ private void CheckValidParse(string? input, CacheControlHeaderValue expectedResult)
+ {
+ var result = CacheControlHeaderValue.Parse(input);
+ Assert.Equal(expectedResult, result);
+ }
- private void CheckValidTryParse(string? input, CacheControlHeaderValue expectedResult)
- {
- Assert.True(CacheControlHeaderValue.TryParse(input, out var result));
- Assert.Equal(expectedResult, result);
- }
+ private void CheckInvalidParse(string? input)
+ {
+ Assert.Throws<FormatException>(() => CacheControlHeaderValue.Parse(input));
+ }
- private void CheckInvalidTryParse(string? input)
- {
- Assert.False(CacheControlHeaderValue.TryParse(input, out var result));
- Assert.Null(result);
- }
+ private void CheckValidTryParse(string? input, CacheControlHeaderValue expectedResult)
+ {
+ Assert.True(CacheControlHeaderValue.TryParse(input, out var result));
+ Assert.Equal(expectedResult, result);
+ }
- #endregion
+ private void CheckInvalidTryParse(string? input)
+ {
+ Assert.False(CacheControlHeaderValue.TryParse(input, out var result));
+ Assert.Null(result);
}
+
+ #endregion
}