A builder type to make it easier to construct AndroidStudioProblem objects.
示例#1
0
        public void AndroidStudioProblem_BuilderWithProblemClassIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder();

            uut.ProblemClass = "Foo";
            Assert.IsFalse(uut.IsEmpty);
        }
示例#2
0
        public void AndroidStudioProblem_BuilderWithLineIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder();

            uut.Line = 42;
            Assert.IsFalse(uut.IsEmpty);
        }
示例#3
0
        public void AndroidStudioProblem_BuilderWithSeverityIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder();

            uut.Severity = "Sev";
            Assert.IsFalse(uut.IsEmpty);
        }
示例#4
0
        public void AndroidStudioProblem_BuilderWithEntryPointTypeIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder();

            uut.EntryPointType = "TYPE";
            Assert.IsFalse(uut.IsEmpty);
        }
示例#5
0
        public void AndroidStudioProblem_BuilderWithAttributeKeyIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder();

            uut.AttributeKey = "Key";
            Assert.IsFalse(uut.IsEmpty);
        }
 public void AndroidStudioProblem_RejectsLinePresentButNotFile()
 {
     AndroidStudioProblem.Builder builder = GetDefaultProblemBuilder();
     builder.File = null;
     builder.Line = 42;
     Assert.Throws <ArgumentException>(() => new AndroidStudioProblem(builder));
 }
        public void AndroidStudioConverter_ConvertSarifResult_RecordsModuleAsTopLevelIfPresent()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.File           = null;
            builder.Module         = "my_fancy_binary";
            builder.EntryPointType = "method";
            builder.EntryPointName = "my_method";

            var expectedLocation = new Location
            {
                LogicalLocation = new LogicalLocation
                {
                    FullyQualifiedName = "my_fancy_binary\\my_method",
                    Index = 1
                }
            };

            var expectedLogicalLocations = new List <LogicalLocation>
            {
                new LogicalLocation {
                    ParentIndex = -1, FullyQualifiedName = "my_fancy_binary", Kind = LogicalLocationKind.Module
                },
                new LogicalLocation {
                    ParentIndex = 0, Name = "my_method", FullyQualifiedName = @"my_fancy_binary\my_method", Kind = LogicalLocationKind.Member
                }
            };

            var    converter = new AndroidStudioConverter();
            Result result    = converter.ConvertProblemToSarifResult(new AndroidStudioProblem(builder));

            result.Locations[0].ValueEquals(expectedLocation).Should().BeTrue();

            ValidateLogicalLocations(expectedLogicalLocations, converter.LogicalLocations);
        }
        public void AndroidStudioConverter_ConvertSarifResult_GeneratesLocationWithOnlyPackage()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.File           = null;
            builder.Package        = "FancyPackageName";
            builder.Module         = null;
            builder.EntryPointName = null;

            var expectedLocation = new Location
            {
                LogicalLocation = new LogicalLocation
                {
                    FullyQualifiedName = "FancyPackageName",
                    Index = 0
                }
            };

            var expectedLogicalLocations = new List <LogicalLocation>
            {
                new LogicalLocation {
                    Kind = LogicalLocationKind.Package, FullyQualifiedName = "FancyPackageName"
                }
            };

            var    converter = new AndroidStudioConverter();
            Result result    = converter.ConvertProblemToSarifResult(new AndroidStudioProblem(builder));

            result.Locations[0].ValueEquals(expectedLocation).Should().BeTrue();

            ValidateLogicalLocations(expectedLogicalLocations, converter.LogicalLocations);
        }
示例#9
0
        public void AndroidStudioProblem_BuilderWithPackageIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder();

            uut.Package = "package";
            Assert.IsFalse(uut.IsEmpty);
        }
示例#10
0
        public void AndroidStudioProblem_BuilderWithModuleIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder();

            uut.Module = "mod";
            Assert.IsFalse(uut.IsEmpty);
        }
示例#11
0
        public void AndroidStudioProblem_BuilderWithDescritionIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder();

            uut.Description = "You broke things";
            Assert.IsFalse(uut.IsEmpty);
        }
示例#12
0
        public void AndroidStudioProblem_BuilderWithEntryPointNameIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder();

            uut.EntryPointName = "Some name";
            Assert.IsFalse(uut.IsEmpty);
        }
示例#13
0
 public void AndroidStudioProblem_RejectsLinePresentButNotFile()
 {
     AndroidStudioProblem.Builder builder = GetDefaultProblemBuilder();
     builder.File = null;
     builder.Line = 42;
     new AndroidStudioProblem(builder);
 }
        public void AndroidStudioProblem_RequiresEntryPointTypeIfEntryPointNameSet()
        {
            AndroidStudioProblem.Builder builder = GetDefaultProblemBuilder();
            builder.EntryPointType = "Class";

            // Error: No location info, should throw
            Assert.Throws <ArgumentException>(() => new AndroidStudioProblem(builder));
        }
示例#15
0
        public void AndroidStudioProblem_RequiresEntryPointNameIfEntryPointTypeSet()
        {
            AndroidStudioProblem.Builder builder = GetDefaultProblemBuilder();
            builder.EntryPointName = "Frobinate.java";

            // Error: No location info, should throw
            new AndroidStudioProblem(builder);
        }
        public void AndroidStudioConverter_ConvertSarifResult_PersistsSourceLineInfo()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.Line = 42;
            LocationInfo locationInfo = GetLocationInfoForBuilder(builder);

            locationInfo.Location.PhysicalLocation.Region.StartLine.Should().Be(42);
        }
        public void AndroidStudioConverter_ConvertSarifResult_RemovesProjectDirPrefix()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.File = "file://$PROJECT_DIR$/mydir/myfile.xml";
            LocationInfo locationInfo = GetLocationInfoForBuilder(builder);

            locationInfo.Location.PhysicalLocation.ArtifactLocation.Uri.ToString().Should().Be("mydir/myfile.xml");
        }
        public void AndroidStudioConverter_GetShortDescription_UsesDescriptionIfPresent()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.Description = "Cute fluffy kittens";
            var    uut    = new AndroidStudioProblem(builder);
            string result = AndroidStudioConverter.GetShortDescriptionForProblem(uut);

            Assert.Equal("Cute fluffy kittens", result);
        }
        public void AndroidStudioProblem_BuilderWithFileIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder
            {
                File = "file"
            };

            Assert.False(uut.IsEmpty);
        }
        public void AndroidStudioConverter_ConvertToSarifResult_AttributeKeyIsPersistedInProperties()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.AttributeKey = "key";
            var    uut    = new AndroidStudioProblem(builder);
            Result result = new AndroidStudioConverter().ConvertProblemToSarifResult(uut);

            result.PropertyNames.Count.Should().Be(1);
            result.GetProperty("attributeKey").Should().Be("key");
        }
        public void AndroidStudioConverter_ConvertSarifResult_RecordsTopLevelFileAsSourceFile()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.File           = "expected_file.java";
            builder.EntryPointType = "file";
            builder.EntryPointName = "bad_file.java";
            Location loc = GetLocationInfoForBuilder(builder).Location;

            loc.PhysicalLocation.ArtifactLocation.Uri.ToString().Should().Be("expected_file.java");
        }
        public void AndroidStudioConverter_ConvertSarifResult_DoesNotRecordTopLevelEntryPointAsSourceFile()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.File           = null;
            builder.EntryPointType = "file";
            builder.EntryPointName = "expected_file.java";
            Location loc = GetLocationInfoForBuilder(builder).Location;

            loc.PhysicalLocation.Should().BeNull();
        }
        public void AndroidStudioConverter_ConvertToSarifResult_EmptyHintsDoNotAffectDescription()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.Description = "hungry EVIL zombies";
            var uut = new AndroidStudioProblem(builder);

            Result result = new AndroidStudioConverter().ConvertProblemToSarifResult(uut);

            Assert.Equal("hungry EVIL zombies", result.Message.Text);
        }
示例#24
0
 public void AndroidStudioProblem_AcceptsPackageAsLocationInformation()
 {
     AndroidStudioProblem.Builder builder = GetDefaultProblemBuilder();
     builder.File           = null;
     builder.Module         = null;
     builder.Package        = "Pack";
     builder.EntryPointName = null;
     // Assert does not throw:
     new AndroidStudioProblem(builder);
 }
        public void AndroidStudioConverter_ConvertToSarifResult_SeverityIsPersistedInProperties()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.Severity = "warning";
            var    uut    = new AndroidStudioProblem(builder);
            Result result = new AndroidStudioConverter().ConvertProblemToSarifResult(uut);

            result.PropertyNames.Count.Should().Be(1);
            result.GetProperty("severity").Should().Be("warning");
        }
示例#26
0
        public void AndroidStudioProblem_RejectsLackOfLocationInformation()
        {
            AndroidStudioProblem.Builder builder = GetDefaultProblemBuilder();
            builder.File           = null;
            builder.Module         = null;
            builder.Package        = null;
            builder.EntryPointName = null;

            // Error: No location info, should throw
            new AndroidStudioProblem(builder);
        }
示例#27
0
        public void AndroidStudioProblem_BuilderWithHintsIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder();

            uut.Hints = ImmutableArray <string> .Empty;
            Assert.IsFalse(uut.IsEmpty);
            uut.Hints = ImmutableArray.Create("a", "b", "c");
            Assert.IsFalse(uut.IsEmpty);
            uut.Hints = default(ImmutableArray <string>);
            Assert.IsTrue(uut.IsEmpty);
        }
        public void AndroidStudioConverter_ConvertToSarifResult_MultiplePropertiesArePersisted()
        {
            AndroidStudioProblem.Builder builder = AndroidStudioProblemTests.GetDefaultProblemBuilder();
            builder.AttributeKey = "key";
            builder.Severity     = "warning";
            var    uut    = new AndroidStudioProblem(builder);
            Result result = new AndroidStudioConverter().ConvertProblemToSarifResult(uut);

            result.PropertyNames.Count.Should().Be(2);
            result.GetProperty("severity").Should().Be("warning");
            result.GetProperty("attributeKey").Should().Be("key");
        }
        public void AndroidStudioConverter_ConvertToSarifResult_HintsAreStapledToDescription()
        {
            var builder = new AndroidStudioProblem.Builder
            {
                ProblemClass = "Unused",
                File         = "Unused",
                Description  = "hungry EVIL zombies",
                Hints        = ImmutableArray.Create("comment", "delete")
            };

            var    uut    = new AndroidStudioProblem(builder);
            Result result = new AndroidStudioConverter().ConvertProblemToSarifResult(uut);

            Assert.AreEqual(@"hungry EVIL zombies
Possible resolution: comment
Possible resolution: delete", result.Message);
        }
        private static LocationInfo GetLocationInfoForBuilder(AndroidStudioProblem.Builder builder)
        {
            var    converter = new AndroidStudioConverter();
            Result result    = converter.ConvertProblemToSarifResult(new AndroidStudioProblem(builder));

            Location        location        = result.Locations.First();
            LogicalLocation logicalLocation =
                location.LogicalLocation.Index > -1
                ? converter.LogicalLocations[location.LogicalLocation.Index]
                : null;

            return(new LocationInfo
            {
                Location = location,
                LogicalLocation = logicalLocation
            });
        }
 public void AndroidStudioProblem_BuilderWithPackageIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Package = "package";
     Assert.IsFalse(uut.IsEmpty);
 }
 public void AndroidStudioProblem_BuilderWithEntryPointTypeIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.EntryPointType = "TYPE";
     Assert.IsFalse(uut.IsEmpty);
 }
 public void AndroidStudioProblem_BuilderWithHintsIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Hints = ImmutableArray<string>.Empty;
     Assert.IsFalse(uut.IsEmpty);
     uut.Hints = ImmutableArray.Create("a", "b", "c");
     Assert.IsFalse(uut.IsEmpty);
     uut.Hints = default(ImmutableArray<string>);
     Assert.IsTrue(uut.IsEmpty);
 }
 public void AndroidStudioProblem_BuilderWithLineIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Line = 42;
     Assert.IsFalse(uut.IsEmpty);
 }
 public void AndroidStudioProblem_BuilderWithModuleIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Module = "mod";
     Assert.IsFalse(uut.IsEmpty);
 }
 public void AndroidStudioProblem_BuilderWithSeverityIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Severity = "Sev";
     Assert.IsFalse(uut.IsEmpty);
 }
 public void AndroidStudioProblem_DefaultConstructedBuilderIsEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     Assert.IsTrue(uut.IsEmpty);
 }
 public void AndroidStudioProblem_BuilderWithAttributeKeyIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.AttributeKey = "Key";
     Assert.IsFalse(uut.IsEmpty);
 }
 public void AndroidStudioProblem_BuilderWithDescritionIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Description = "You broke things";
     Assert.IsFalse(uut.IsEmpty);
 }
 public void AndroidStudioProblem_BuilderWithEntryPointNameIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.EntryPointName = "Some name";
     Assert.IsFalse(uut.IsEmpty);
 }
 public void AndroidStudioProblem_BuilderWithProblemClassIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.ProblemClass = "Foo";
     Assert.IsFalse(uut.IsEmpty);
 }
        public void AndroidStudioConverter_ConvertToSarifResult_HintsAreStapledToDescription()
        {
            var builder = new AndroidStudioProblem.Builder
            {
                ProblemClass = "Unused",
                File = "Unused",
                Description = "hungry EVIL zombies",
                Hints = ImmutableArray.Create("comment", "delete")
            };

            var uut = new AndroidStudioProblem(builder);
            Result result = new AndroidStudioConverter().ConvertProblemToSarifResult(uut);
            Assert.AreEqual(@"hungry EVIL zombies
            Possible resolution: comment
            Possible resolution: delete", result.Message);
        }