public void Allows_WithFloats(float[] restrict, float[] exclude, float[] test, bool expectedResult)
        {
            // arrange
            ConstraintSet <float> set = this.CreateAndAssertSet <float>();

            set.AddBound(restrict);
            set.Exclude(exclude);
            this.AssertBounds(set, restrict, exclude);

            // act/assert
            foreach (float value in test)
            {
                set.Allows(value).Should().Be(expectedResult, $"expected '{value}' to {(expectedResult ? "be allowed" : "be excluded")}");
            }
        }
        public void Allows_WithCaseSensitiveComparer(string[] restrict, string[] exclude, string?[] test, bool expectedResult)
        {
            // arrange
            ConstraintSet <string?> set = this.CreateAndAssertSet <string?>();

            set.AddBound(restrict);
            set.Exclude(exclude);
            this.AssertBounds(set, restrict, exclude);

            // act/assert
            foreach (string?value in test)
            {
                set.Allows(value).Should().Be(expectedResult, $"expected '{value}' to {(expectedResult ? "be allowed" : "be excluded")}");
            }
        }
        public void Allows_WithCaseInsensitiveComparer(string[] restrict, string[] exclude, string[] test, bool expectedResult)
        {
            // arrange
            ConstraintSet <string> set = this.CreateAndAssertSet(StringComparer.OrdinalIgnoreCase);

            set.AddBound(restrict);
            set.Exclude(exclude);
            this.AssertBounds(
                set,
                new HashSet <string>(restrict, StringComparer.OrdinalIgnoreCase).ToArray(),
                new HashSet <string>(exclude, StringComparer.OrdinalIgnoreCase).ToArray()
                );

            // act/assert
            foreach (string value in test)
            {
                set.Allows(value).Should().Be(expectedResult, $"expected '{value}' to {(expectedResult ? "be allowed" : "be excluded")}");
            }
        }