public void ExtractPathNoWarnProperties_CorrectlyReadsPackageSpecificAndProjectWideNoWarns()
        {
            // Arrange
            var packageId         = "test_package";
            var expectedNoWarnSet = new HashSet <NuGetLogCode> {
                NuGetLogCode.NU1601, NuGetLogCode.NU1603, NuGetLogCode.NU1605, NuGetLogCode.NU1107
            };
            var projectWideNoWarnSet = new HashSet <NuGetLogCode> {
                NuGetLogCode.NU1601, NuGetLogCode.NU1605
            };
            var packageSpecificNoWarnSet = new HashSet <NuGetLogCode> {
                NuGetLogCode.NU1603, NuGetLogCode.NU1107
            };
            var otherPackageSpecificNoWarnSet = new HashSet <NuGetLogCode> {
                NuGetLogCode.NU1603, NuGetLogCode.NU1701
            };

            var pathWarningProperties = new TransitiveNoWarnUtils.NodeWarningProperties(
                projectWideNoWarnSet,
                new Dictionary <string, HashSet <NuGetLogCode> >
            {
                { packageId, packageSpecificNoWarnSet },
                { "other_package", otherPackageSpecificNoWarnSet }
            });

            // Act
            var extractedNoWarnSet = TransitiveNoWarnUtils.ExtractPathNoWarnProperties(
                pathWarningProperties,
                packageId);

            // Assert
            extractedNoWarnSet.Should().NotBeNullOrEmpty();
            extractedNoWarnSet.Should().BeEquivalentTo(expectedNoWarnSet);
        }
        public void ExtractPathNoWarnProperties_CorrectlyReadsPackageSpecificNoWarns()
        {
            // Arrange
            var packageId         = "test_package";
            var framework         = NuGetFramework.Parse("net461");
            var expectedNoWarnSet = new HashSet <NuGetLogCode> {
                NuGetLogCode.NU1603, NuGetLogCode.NU1605
            };

            var pathWarningProperties = new TransitiveNoWarnUtils.NodeWarningProperties(
                null,
                new Dictionary <string, HashSet <NuGetLogCode> >
            {
                { packageId, expectedNoWarnSet }
            });

            // Act
            var extractedNoWarnSet = TransitiveNoWarnUtils.ExtractPathNoWarnProperties(
                pathWarningProperties,
                packageId);

            // Assert
            extractedNoWarnSet.Should().NotBeNullOrEmpty();
            extractedNoWarnSet.Should().BeEquivalentTo(expectedNoWarnSet);
        }
        public void NodeWarningPropertiesIsSubSetOf_WithNullAndEmptyProjectWideNoWarns_Succeeds(bool nullFirst)
        {
            // Arrange
            var first = new TransitiveNoWarnUtils.NodeWarningProperties(
                nullFirst ? null : new HashSet <NuGetLogCode>(),
                null);
            var second = new TransitiveNoWarnUtils.NodeWarningProperties(
                nullFirst ? new HashSet <NuGetLogCode>() : null,
                null);

            // Act
            var result = first.IsSubSetOf(second);

            // Assert
            result.Should().Be(true);
        }
        public void NodeWarningPropertiesIsSubSetOf_FirstPackageSpecificNoWarnIsNotEmptySecondPackageSpecificNoWarnIsEmpty_Succeeds(
            string[] secondNoWarn)
        {
            // Arrange
            var first = new TransitiveNoWarnUtils.NodeWarningProperties(
                null,
                GetPackageSpecificNoWarn(new[] { "test_id1:NU1000" }));
            var second = new TransitiveNoWarnUtils.NodeWarningProperties(
                null,
                GetPackageSpecificNoWarn(secondNoWarn));

            // Act
            var result = first.IsSubSetOf(second);

            // Assert
            result.Should().Be(true);
        }
        public void NodeWarningPropertiesIsSubSetOf_WithEqualProjectWideNoWarns_Succeeds(
            string noWarn)
        {
            // Arrange
            var first = new TransitiveNoWarnUtils.NodeWarningProperties(
                noWarn == null ? null : MSBuildStringUtility.GetNuGetLogCodes(noWarn).ToHashSet(),
                null);
            var second = new TransitiveNoWarnUtils.NodeWarningProperties(
                noWarn == null ? null : MSBuildStringUtility.GetNuGetLogCodes(noWarn).ToHashSet(),
                null);

            // Act
            var result = first.IsSubSetOf(second);

            // Assert
            result.Should().Be(true);
        }
        public void NodeWarningPropertiesIsSubSetOf_EmptyPackageSpecificNoWarns_Succeeds(
            string[] firstNoWarn,
            string[] secondNoWarn)
        {
            // Arrange
            var first = new TransitiveNoWarnUtils.NodeWarningProperties(
                null,
                GetPackageSpecificNoWarn(firstNoWarn));
            var second = new TransitiveNoWarnUtils.NodeWarningProperties(
                null,
                GetPackageSpecificNoWarn(secondNoWarn));

            // Act
            var result = first.IsSubSetOf(second);

            // Assert
            result.Should().Be(true);
        }
        public void NodeWarningPropertiesIsSubSetOf_WithSecondProjectWideNoWarnNotASubsetOfFirst_Fails(
            string firstNoWarn,
            string secondNoWarn)
        {
            // Arrange
            var first = new TransitiveNoWarnUtils.NodeWarningProperties(
                firstNoWarn == null ? null : MSBuildStringUtility.GetNuGetLogCodes(firstNoWarn).ToHashSet(),
                null);
            var second = new TransitiveNoWarnUtils.NodeWarningProperties(
                MSBuildStringUtility.GetNuGetLogCodes(secondNoWarn).ToHashSet(),
                null);

            // Act
            var result = first.IsSubSetOf(second);

            // Assert
            result.Should().Be(false);
        }
        public void ExtractPathNoWarnProperties_CorrectlyReadsProjectWideNoWarns()
        {
            // Arrange
            var projectWideNoWarn = new HashSet <NuGetLogCode> {
                NuGetLogCode.NU1601, NuGetLogCode.NU1603
            };
            var pathWarningProperties = new TransitiveNoWarnUtils.NodeWarningProperties(
                projectWideNoWarn,
                null);

            // Act
            var extractedNoWarnSet = TransitiveNoWarnUtils.ExtractPathNoWarnProperties(
                pathWarningProperties,
                "test_id");

            // Assert
            extractedNoWarnSet.Should().NotBeNullOrEmpty();
            extractedNoWarnSet.Should().BeEquivalentTo(projectWideNoWarn);
        }