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);
        }
コード例 #6
0
 public void AndroidStudioProblem_RejectsLinePresentButNotFile()
 {
     AndroidStudioProblem.Builder builder = GetDefaultProblemBuilder();
     builder.File = null;
     builder.Line = 42;
     Assert.Throws <ArgumentException>(() => new AndroidStudioProblem(builder));
 }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
 }
コード例 #14
0
        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);
        }
コード例 #16
0
        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);
        }
コード例 #17
0
        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");
        }
コード例 #18
0
        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);
        }
コード例 #19
0
        public void AndroidStudioProblem_BuilderWithFileIsNotEmpty()
        {
            var uut = new AndroidStudioProblem.Builder
            {
                File = "file"
            };

            Assert.False(uut.IsEmpty);
        }
コード例 #20
0
        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");
        }
コード例 #21
0
        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");
        }
コード例 #22
0
        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();
        }
コード例 #23
0
        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);
 }
コード例 #25
0
        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);
        }
コード例 #28
0
        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");
        }
コード例 #29
0
        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);
        }
コード例 #30
0
        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
            });
        }
コード例 #31
0
 public void AndroidStudioProblem_BuilderWithPackageIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Package = "package";
     Assert.IsFalse(uut.IsEmpty);
 }
コード例 #32
0
 public void AndroidStudioProblem_BuilderWithEntryPointTypeIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.EntryPointType = "TYPE";
     Assert.IsFalse(uut.IsEmpty);
 }
コード例 #33
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);
 }
コード例 #34
0
 public void AndroidStudioProblem_BuilderWithLineIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Line = 42;
     Assert.IsFalse(uut.IsEmpty);
 }
コード例 #35
0
 public void AndroidStudioProblem_BuilderWithModuleIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Module = "mod";
     Assert.IsFalse(uut.IsEmpty);
 }
コード例 #36
0
 public void AndroidStudioProblem_BuilderWithSeverityIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Severity = "Sev";
     Assert.IsFalse(uut.IsEmpty);
 }
コード例 #37
0
 public void AndroidStudioProblem_DefaultConstructedBuilderIsEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     Assert.IsTrue(uut.IsEmpty);
 }
コード例 #38
0
 public void AndroidStudioProblem_BuilderWithAttributeKeyIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.AttributeKey = "Key";
     Assert.IsFalse(uut.IsEmpty);
 }
コード例 #39
0
 public void AndroidStudioProblem_BuilderWithDescritionIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.Description = "You broke things";
     Assert.IsFalse(uut.IsEmpty);
 }
コード例 #40
0
 public void AndroidStudioProblem_BuilderWithEntryPointNameIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.EntryPointName = "Some name";
     Assert.IsFalse(uut.IsEmpty);
 }
コード例 #41
0
 public void AndroidStudioProblem_BuilderWithProblemClassIsNotEmpty()
 {
     var uut = new AndroidStudioProblem.Builder();
     uut.ProblemClass = "Foo";
     Assert.IsFalse(uut.IsEmpty);
 }
コード例 #42
0
        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);
        }