public static IEnumerable <object[]> ValidateSortedLineNumbers_ThrowsOptionsExceptionIfNumberedLineRangesOverlap_Data() { var dummyNumberedLineRange1 = new NumberedLineRange(11, 16, 15); var dummyNumberedLineRange2 = new NumberedLineRange(16, 20, 20); var dummyNumberedLineRange3 = new NumberedLineRange(14, 20, 11); var dummyNumberedLineRange4 = new NumberedLineRange(22, 56, 17); return(new object[][] { // Start and end lines can't overlap new object[] { new List <NumberedLineRange>() { new NumberedLineRange(1, 10, 1), dummyNumberedLineRange1, // Doesn't overlap with previous range dummyNumberedLineRange2 // Overlaps previous range by 1 line }, string.Format(Strings.OptionsException_OptionsException_InvalidOption, nameof(IFlexiCodeBlockOptions.LineNumbers), string.Format(Strings.OptionsException_FlexiCodeBlocks_OverlappingLineNumbers, dummyNumberedLineRange1, dummyNumberedLineRange2)) }, // Numbers can't overlap new object[] { new List <NumberedLineRange>() { new NumberedLineRange(1, 10, 1), dummyNumberedLineRange3, // Doesn't overlap with previous range dummyNumberedLineRange4 // Overlaps previous range by 1 line }, string.Format(Strings.OptionsException_OptionsException_InvalidOption, nameof(IFlexiCodeBlockOptions.LineNumbers), string.Format(Strings.OptionsException_FlexiCodeBlocks_OverlappingLineNumbers, dummyNumberedLineRange3, dummyNumberedLineRange4)) } }); }
public void GetHashCode_ReturnsSameHashCodeForIdenticalNumberedLineRanges(NumberedLineRange dummyNumberedLineRange1, NumberedLineRange dummyNumberedLineRange2, bool identical) { // Act and assert Assert.Equal(identical, dummyNumberedLineRange1.GetHashCode() == dummyNumberedLineRange2.GetHashCode()); }
public void ToString_ReturnsNumberedLineRangeAsString() { // Arrange var numberedLineRange = new NumberedLineRange(1, 5, 10); // Act string result = numberedLineRange.ToString(); // Assert Assert.Equal("StartLine: 1, EndLine: 5, StartNumber: 10", result); }
public static IEnumerable <object[]> FlexiCodeBlockOptions_CanBePopulated_Data() { const string dummyBlockName = "dummyBlockName"; const string dummyTitle = "dummyTitle"; const string dummyCopyIcon = "dummyCopyIcon"; const bool dummyRenderHeader = false; const string dummyLanguage = "dummyLanguage"; const SyntaxHighlighter dummySyntaxHighlighter = SyntaxHighlighter.HighlightJS; var dummyNumberedLineRange1 = new NumberedLineRange(1, startNumber: 1); var dummyLineNumbers1 = new List <NumberedLineRange> { dummyNumberedLineRange1 }; var dummyNumberedLineRange2 = new NumberedLineRange(10, 15, 8); var dummyLineNumbers2 = new List <NumberedLineRange> { dummyNumberedLineRange2 }; const string dummyOmittedLinesIcon = "dummyOmittedLinesIcon"; var dummyLineRange1 = new LineRange(1); var dummyHighlightedLines1 = new List <LineRange> { dummyLineRange1 }; var dummyLineRange2 = new LineRange(10, 15); var dummyHighlightedLines2 = new List <LineRange> { dummyLineRange2 }; const string dummyAttribute1 = "dummyAttribute1"; const string dummyAttributeValue1 = "dummyAttributeValue1"; var dummyAttributes1 = new Dictionary <string, string> { { dummyAttribute1, dummyAttributeValue1 } }; const string dummyAttribute2 = "dummyAttribute2"; const string dummyAttributeValue2 = "dummyAttributeValue2"; var dummyAttributes2 = new Dictionary <string, string> { { dummyAttribute2, dummyAttributeValue2 } }; var dummyPhraseGroup1 = new PhraseGroup("dummyRegex1", new int[] { 1, 2, 3 }); var dummyHighlightedPhrases1 = new List <PhraseGroup>() { dummyPhraseGroup1 }; var dummyPhraseGroup2 = new PhraseGroup("dummyRegex2", new int[] { -3, -2, -1 }); var dummyHighlightedPhrases2 = new List <PhraseGroup>() { dummyPhraseGroup2 }; const FlexiCodeBlockRenderingMode dummyRenderingMode = FlexiCodeBlockRenderingMode.Classic; return(new object[][] { // Populating FlexiCodeBlockOptions containing default values new object[] { new SerializableWrapper <FlexiCodeBlockOptions>(new FlexiCodeBlockOptions()), new SerializableWrapper <FlexiCodeBlockOptions>(new FlexiCodeBlockOptions( dummyBlockName, dummyTitle, dummyCopyIcon, dummyRenderHeader, dummyLanguage, dummySyntaxHighlighter, dummyLineNumbers1, dummyOmittedLinesIcon, dummyHighlightedLines1, dummyHighlightedPhrases1, dummyRenderingMode, dummyAttributes1)), $@"{{ ""{nameof(FlexiCodeBlockOptions.BlockName)}"": ""{dummyBlockName}"", ""{nameof(FlexiCodeBlockOptions.Title)}"": ""{dummyTitle}"", ""{nameof(FlexiCodeBlockOptions.CopyIcon)}"": ""{dummyCopyIcon}"", ""{nameof(FlexiCodeBlockOptions.RenderHeader)}"": ""{dummyRenderHeader}"", ""{nameof(FlexiCodeBlockOptions.Language)}"": ""{dummyLanguage}"", ""{nameof(FlexiCodeBlockOptions.SyntaxHighlighter)}"": ""{dummySyntaxHighlighter}"", ""{nameof(FlexiCodeBlockOptions.LineNumbers)}"": [ {{ ""{nameof(NumberedLineRange.StartLine)}"": {dummyNumberedLineRange1.StartLine}, ""{nameof(NumberedLineRange.EndLine)}"": {dummyNumberedLineRange1.EndLine}, ""{nameof(NumberedLineRange.StartLine)}"": {dummyNumberedLineRange1.StartLine} }} ], ""{nameof(FlexiCodeBlockOptions.OmittedLinesIcon)}"": ""{dummyOmittedLinesIcon}"", ""{nameof(FlexiCodeBlockOptions.HighlightedLines)}"": [ {{ ""{nameof(LineRange.StartLine)}"": {dummyLineRange1.StartLine}, ""{nameof(LineRange.EndLine)}"": {dummyLineRange1.EndLine} }} ], ""{nameof(FlexiCodeBlockOptions.HighlightedPhrases)}"": [ {{ ""{nameof(PhraseGroup.Regex)}"": ""{dummyPhraseGroup1.Regex}"", ""{nameof(PhraseGroup.IncludedMatches)}"": [{string.Join(",", dummyPhraseGroup1.IncludedMatches)}] }} ], ""{nameof(FlexiCodeBlockOptions.RenderingMode)}"": ""{dummyRenderingMode}"", ""{nameof(FlexiCodeBlockOptions.Attributes)}"": {{ ""{dummyAttribute1}"": ""{dummyAttributeValue1}"" }} }}" }, // Populating FlexiCodeBlockOptions with existing collections (they should be replaced instead of appended to) new object[] { new SerializableWrapper <FlexiCodeBlockOptions>(new FlexiCodeBlockOptions(lineNumbers: dummyLineNumbers1, highlightedLines: dummyHighlightedLines1, highlightedPhrases: dummyHighlightedPhrases1, attributes: dummyAttributes1)), new SerializableWrapper <FlexiCodeBlockOptions>(new FlexiCodeBlockOptions(lineNumbers: dummyLineNumbers2, highlightedLines: dummyHighlightedLines2, highlightedPhrases: dummyHighlightedPhrases2, attributes: dummyAttributes2)), $@"{{ ""{nameof(FlexiCodeBlockOptions.LineNumbers)}"": [ {{ ""{nameof(NumberedLineRange.StartLine)}"": {dummyNumberedLineRange2.StartLine}, ""{nameof(NumberedLineRange.EndLine)}"": {dummyNumberedLineRange2.EndLine}, ""{nameof(NumberedLineRange.StartNumber)}"": {dummyNumberedLineRange2.StartNumber} }} ], ""{nameof(FlexiCodeBlockOptions.HighlightedLines)}"": [ {{ ""{nameof(LineRange.StartLine)}"": {dummyLineRange2.StartLine}, ""{nameof(LineRange.EndLine)}"": {dummyLineRange2.EndLine} }} ], ""{nameof(FlexiCodeBlockOptions.HighlightedPhrases)}"": [ {{ ""{nameof(PhraseGroup.Regex)}"": ""{dummyPhraseGroup2.Regex}"", ""{nameof(PhraseGroup.IncludedMatches)}"": [{string.Join(",", dummyPhraseGroup2.IncludedMatches)}] }} ], ""{nameof(FlexiCodeBlockOptions.Attributes)}"": {{ ""{dummyAttribute2}"": ""{dummyAttributeValue2}"" }} }}" }, // Defaults for LineRanges in HighlightedLines work new object[] { new SerializableWrapper <FlexiCodeBlockOptions>(new FlexiCodeBlockOptions()), new SerializableWrapper <FlexiCodeBlockOptions>(new FlexiCodeBlockOptions(highlightedLines: dummyHighlightedLines1)), $@"{{ ""{nameof(FlexiCodeBlockOptions.HighlightedLines)}"": [{{ }}] }}" }, // Defaults for NumberedLineRanges in NumberedLineRanges work new object[] { new SerializableWrapper <FlexiCodeBlockOptions>(new FlexiCodeBlockOptions()), new SerializableWrapper <FlexiCodeBlockOptions>(new FlexiCodeBlockOptions(lineNumbers: dummyLineNumbers1)), $@"{{ ""{nameof(FlexiCodeBlockOptions.LineNumbers)}"": [{{ }}] }}" }, }); }
public void Equals_ReturnsTrueIfObjIsAnIdenticalNumberedLineRangeOtherwiseReturnsFalse(NumberedLineRange dummyNumberedLineRange, object dummyObj, bool expectedResult) { // Act bool result = dummyNumberedLineRange.Equals(dummyObj); // Assert Assert.Equal(expectedResult, result); }