Ejemplo n.º 1
0
        public void TestOpen2()
        {
            var fname   = @"D:\some awesome log file.db";
            var plugin  = new Mock <IFileFormatPlugin>();
            var logFile = new Mock <ILogFile>();

            plugin.Setup(x => x.SupportedExtensions).Returns(new[] { ".db" });
            plugin.Setup(x => x.Open(It.IsAny <IServiceContainer>(), It.Is <string>(y => y == fname)))
            .Returns(() => logFile.Object);

            var factory       = new PluginLogFileFactory(_scheduler, plugin.Object);
            var actualLogFile = factory.Open(fname, out _);

            actualLogFile.Should().BeOfType <NoThrowLogFile>("because PluginLogFileFactory should protect us from buggy plugin implementations");

            actualLogFile.GetLine(42);
            logFile.Verify(x => x.GetLine(It.Is <int>(y => y == 42)), Times.Once,
                           "because even though we've been given a proxy, it should nevertheless forward all calls to the actual implementation");
        }
Ejemplo n.º 2
0
        public void TestOpenDontMatchRegex()
        {
            var plugin  = new Mock <IFileFormatPlugin2>();
            var logFile = new Mock <ILogFile>();

            plugin.Setup(x => x.SupportedFileNames).Returns(new[]
            {
                new Regex("txt"),
                new Regex("sfa_[^\\.]*\\.log")
            });
            plugin.Setup(x => x.SupportedExtensions).Returns(new[] { ".db" });
            plugin.Setup(x => x.Open(It.IsAny <IServiceContainer>(), It.IsAny <string>()))
            .Returns(() => logFile.Object);

            var factory  = new PluginLogFileFactory(_scheduler, plugin.Object);
            var filename = @"C:\sfa_12345.log\.db\txt\foo.log";

            factory.Open(filename, out _);
            plugin.Verify(x => x.Open(It.IsAny <IServiceContainer>(), filename), Times.Never,
                          "because neither regex nor file extension match (only the filename should be matched, not the path) and therefore the plugin may not have been used");
        }
Ejemplo n.º 3
0
        public void TestOpenMatchRegex()
        {
            var plugin  = new Mock <IFileFormatPlugin2>();
            var logFile = new Mock <ILogFile>();

            plugin.Setup(x => x.SupportedFileNames).Returns(new[]
            {
                new Regex("txt"),
                new Regex("sfa_[^\\.]*\\.log")
            });
            plugin.Setup(x => x.SupportedExtensions).Returns(new[] { ".db" });
            plugin.Setup(x => x.Open(It.IsAny <IServiceContainer>(), It.IsAny <string>()))
            .Returns(() => logFile.Object);

            var factory       = new PluginLogFileFactory(_scheduler, plugin.Object);
            var filename      = @"C:\logs\sfa_12345.log";
            var actualLogFile = factory.Open(filename, out _);

            plugin.Verify(x => x.Open(It.IsAny <IServiceContainer>(), filename), Times.Once);
            actualLogFile.GetLine(42);
            logFile.Verify(x => x.GetLine(It.Is <int>(y => y == 42)), Times.Once,
                           "because even though we've been given a proxy, it should nevertheless forward all calls to the actual implementation");
        }