public static bool AreEquivalent <T>(string actualSarif, string expectedSarif, IContractResolver contractResolver = null) { expectedSarif = expectedSarif ?? "{}"; var expectedToken = SarifUtilities.DeserializeObject <JToken>(expectedSarif); var actualToken = SarifUtilities.DeserializeObject <JToken>(actualSarif); if (!JToken.DeepEquals(actualToken, expectedToken)) { return(false); } // Make sure we can successfully roundtrip what was just generated. JsonSerializerSettings settings = new JsonSerializerSettings() { ContractResolver = contractResolver, Formatting = Formatting.Indented, DateParseHandling = DateParseHandling.None }; T actualSarifObject = JsonConvert.DeserializeObject <T>(actualSarif, settings); string roundTrippedSarif = JsonConvert.SerializeObject(actualSarifObject, settings); var roundTrippedToken = SarifUtilities.DeserializeObject <JToken>(roundTrippedSarif); if (!JToken.DeepEquals(actualToken, roundTrippedToken)) { return(false); } return(true); }
public void GetEncodingFromNameProducesExpectedEncoding() { var sb = new StringBuilder(); foreach (GetEncodingFromNameTestCase testCase in s_getEncodingFromNameTestCases) { Encoding actualEncoding = SarifUtilities.GetEncodingFromName(testCase.EncodingName); if (actualEncoding != testCase.ExpectedEncoding) { sb.AppendLine($" {testCase.TestCaseName}"); } } sb.Length.Should().Be(0, $"expected all test cases to pass, but the following test cases failed:\n{sb}"); }
private void PopulateCharLength(NewLineIndex lineIndex, Region region) { // Populated at this point: StartLine, EndLine, StartColumn, EndColumn, CharOffset Debug.Assert(region.StartLine > 0); Debug.Assert(region.EndLine > 0); Debug.Assert(region.StartColumn > 0); Debug.Assert(region.EndColumn > 0); Debug.Assert(region.CharOffset > 0 || (region.StartLine == 1 && region.StartColumn == 1)); LineInfo lineInfo = lineIndex.GetLineInfoForLine(region.EndLine); int charLength = lineInfo.StartOffset; charLength -= region.CharOffset; charLength += region.EndColumn - 1; if (region.CharLength == 0) { region.CharLength = charLength; } SarifUtilities.DebugAssert(region.CharLength == charLength); }
private static void PopulateCharOffset(NewLineIndex lineIndex, Region region) { // Populated at this point: StartLine, EndLine, StartColumn, EndColumn Debug.Assert(region.StartLine > 0); Debug.Assert(region.EndLine > 0); Debug.Assert(region.StartColumn > 0); Debug.Assert(region.EndColumn > 0); LineInfo lineInfo = lineIndex.GetLineInfoForLine(region.StartLine); // Now we have the offset of the starting line. Populate region.CharOffset. int offset = lineInfo.StartOffset; offset += region.StartColumn - 1; if (region.CharOffset == 0 || region.CharOffset == -1) { region.CharOffset = offset; } SarifUtilities.DebugAssert(region.CharOffset == offset); }