Example #1
0
            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);
                }
            }
Example #2
0
        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));
                }
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
                }
            }
Example #9
0
        public void GetParam_Always_ReturnsPieceAtIndexPlus2(int index, IReadOnlyList <string> linePieces)
        {
            var uut = new ManagedBlockConfigLine(linePieces);

            uut.GetParam(index).ShouldBe(linePieces[index + 2]);
        }
Example #10
0
        public void ParamCount_Always_ReturnsPieceCountMinus2(IReadOnlyList <string> linePieces)
        {
            var uut = new ManagedBlockConfigLine(linePieces);

            uut.ParamCount.ShouldBe(linePieces.Count - 2);
        }
Example #11
0
        public void Option_Always_ReturnsPiece1(IReadOnlyList <string> linePieces)
        {
            var uut = new ManagedBlockConfigLine(linePieces);

            uut.Option.ShouldBe(linePieces[1]);
        }
Example #12
0
        public void BlockTag_Always_ReturnsPiece0(IReadOnlyList <string> linePieces)
        {
            var uut = new ManagedBlockConfigLine(linePieces);

            uut.BlockTag.ShouldBe(linePieces[0]);
        }
Example #13
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)))));