public ParseResult OnParsing(ManagedBlockConfigLine configLine) { switch (configLine.Option) { case "manage": if (configLine.ParamCount != 0) { return(ParseResult.FromError("Usage: \"[<BlockTag>]:manage\"")); } _settings.Manage = true; return(ParseResult.Success); case "ignore": if (configLine.ParamCount != 0) { return(ParseResult.FromError("Usage: \"[<BlockTag>]:ignore\"")); } _settings.Ignore = true; return(ParseResult.Success); default: _settings.Manage = true; return(ParseResult.Ignored); } }
public void MakeParseOperation_Always_SplitsLinesAndParamsCorrectly(string blockTag, string[][] configData) { var testContext = new TestContext() { BlockTag = blockTag, Config = BuildConfig(configData) }; var mockManagedBlockConfigParseHandler = testContext.AddFakeManagedBlockConfigParseHandler(ParseResult.Success); var configLines = new List <ManagedBlockConfigLine>(); mockManagedBlockConfigParseHandler .Setup(x => x.OnParsing(It.IsAny <ManagedBlockConfigLine>())) .Callback <ManagedBlockConfigLine>(x => configLines.Add(x)) .Returns(ParseResult.Success); testContext.Uut.MakeParseOperation(testContext.MockBlock.Object) .ShouldRunToCompletion(testContext.MockBackgroundWorker); configLines.Count.ShouldBe(configData.Length); foreach (var i in Enumerable.Range(0, configLines.Count)) { var expectedConfigLine = new ManagedBlockConfigLine(configData[i]); configLines[i].BlockTag.ShouldBe(expectedConfigLine.BlockTag); configLines[i].Option.ShouldBe(expectedConfigLine.Option); configLines[i].ParamCount.ShouldBe(expectedConfigLine.ParamCount); foreach (var index in Enumerable.Range(0, configLines[i].ParamCount)) { configLines[i].GetParam(index).ShouldBe(expectedConfigLine.GetParam(index)); } } }
public void OnParsing_OptionIsUnknown_ReturnsIgnoredAndDoesNotChangeSettings(params string[] linePieces) { var configLine = new ManagedBlockConfigLine(linePieces); var testContext = new TestContext(); var settings = testContext.Uut.Settings; var result = testContext.Uut.OnParsing(configLine); result.IsIgnored.ShouldBeTrue(); testContext.Uut.Settings.ShouldBe(settings); }
public void OnParsing_ParamsAreValidForManage_ReturnsSuccessAndSetsManage(params string[] linePieces) { var configLine = new ManagedBlockConfigLine(linePieces); var uut = new ManagedBlockSettingsProvider(); var settings = uut.Settings; settings.Manage = true; var result = uut.OnParsing(configLine); result.IsSuccess.ShouldBeTrue(); uut.Settings.ShouldBe(settings); }
public void OnParsing_OptionIsUnknown_ReturnsIgnoredAndSetsManage(params string[] linePieces) { var configLine = new ManagedBlockConfigLine(linePieces); var uut = new ManagedBlockSettingsProvider(); var settings = uut.Settings; settings.Manage = true; var result = uut.OnParsing(configLine); result.IsIgnored.ShouldBeTrue(); uut.Settings.ShouldBe(settings); }
public void OnParsing_ParamsAreValidForAutoCloseInterval_ReturnsSuccessAndSetsAutoCloseInterval(params string[] linePieces) { var configLine = new ManagedBlockConfigLine(linePieces); var testContext = new TestContext(); var settings = testContext.Uut.Settings; settings.AutoCloseInterval = TimeSpan.FromMilliseconds(int.Parse(linePieces[2])); var result = testContext.Uut.OnParsing(configLine); result.IsSuccess.ShouldBeTrue(); testContext.Uut.Settings.ShouldBe(settings); }
public void OnParsing_ParamsAreInvalid_ReturnsErrorAndDoesNotChangeSettings(params string[] linePieces) { var configLine = new ManagedBlockConfigLine(linePieces); var uut = new ManagedBlockSettingsProvider(); var settings = uut.Settings; var result = uut.OnParsing(configLine); result.IsError.ShouldBeTrue(); if (linePieces.Length >= 2) { result.Error.ShouldContain(linePieces[1]); } uut.Settings.ShouldBe(settings); }
public ParseResult OnParsing(ManagedBlockConfigLine configLine) { switch (configLine.Option) { case "auto-close-interval": int autoCloseIntervalMilliseconds; if ((configLine.ParamCount != 1) || !int.TryParse(configLine.GetParam(0), out autoCloseIntervalMilliseconds) || (autoCloseIntervalMilliseconds < 1)) { return(ParseResult.FromError("Usage: \"<BlockTag>:auto-close-interval:<AutoCloseInterval>\" (> 0) (ms)")); } _settings.AutoCloseInterval = TimeSpan.FromMilliseconds(autoCloseIntervalMilliseconds); return(ParseResult.Success); default: return(ParseResult.Ignored); } }
public void GetParam_Always_ReturnsPieceAtIndexPlus2(int index, IReadOnlyList <string> linePieces) { var uut = new ManagedBlockConfigLine(linePieces); uut.GetParam(index).ShouldBe(linePieces[index + 2]); }
public void ParamCount_Always_ReturnsPieceCountMinus2(IReadOnlyList <string> linePieces) { var uut = new ManagedBlockConfigLine(linePieces); uut.ParamCount.ShouldBe(linePieces.Count - 2); }
public void Option_Always_ReturnsPiece1(IReadOnlyList <string> linePieces) { var uut = new ManagedBlockConfigLine(linePieces); uut.Option.ShouldBe(linePieces[1]); }
public void BlockTag_Always_ReturnsPiece0(IReadOnlyList <string> linePieces) { var uut = new ManagedBlockConfigLine(linePieces); uut.BlockTag.ShouldBe(linePieces[0]); }
public static void ShouldHaveReceivedOnParsing(this Mock <IManagedBlockConfigParseHandler> mockHandler, ManagedBlockConfigLine expectedConfigLine) => mockHandler .ShouldHaveReceived(x => x.OnParsing(It.Is <ManagedBlockConfigLine>(configLine => (configLine.BlockTag == expectedConfigLine.BlockTag) && (configLine.Option == expectedConfigLine.Option) && (configLine.ParamCount == expectedConfigLine.ParamCount) && Enumerable.Range(0, configLine.ParamCount) .All(index => configLine.GetParam(index) == expectedConfigLine.GetParam(index)))));