コード例 #1
0
        private static (AssemblyInformation assembly, Assembly?msAssembly) CreateManagedAssemblyInformation(MetadataLoadContext context, AssemblyName assemblyName, string baseDirectory, string extension = "dll")
        {
            var assemblyPath = FilePathProvider.GetAssemblyPath($"{assemblyName.Name}.{extension}", baseDirectory);

            Assembly?assembly = null;

            try
            {
                assembly = File.Exists(assemblyPath) ? context.LoadFromAssemblyPath(assemblyPath ?? string.Empty) : context.LoadFromAssemblyName(assemblyName);
            }
            catch
            {
                // In this case, assembly is not found
            }

            var assemblyShortName = assemblyName.Name ?? string.Empty;
            var assemblyVersion   = assemblyName.Version?.ToString() ?? string.Empty;

            var info = new AssemblyInformation(assemblyShortName, assembly?.GetName().Version?.ToString() ?? assemblyVersion, assemblyPath)
            {
                IsLocalAssembly = assemblyPath != null || assembly == null,
                AssemblyName    = assemblyName.FullName,
                IsResolved      = assembly != null
            };

            info.EnhancePropertiesWithFile();
            info.EnhanceProperties(assembly?.GetModules().First());

            return(info, assembly);
        }
コード例 #2
0
 public void ExecuteBrowseFile()
 {
     if (FilePathProvider != null)
     {
         PathVariable = FilePathProvider.Browse();
     }
 }
コード例 #3
0
        private static (AssemblyInformation assembly, AssemblyDefinition?monoAssembly) CreateManagedAssemblyInformation(AssemblyNameReference assemblyName, string?baseDirectory, string extension = "dll")
        {
            var assemblyPath = FilePathProvider.GetAssemblyPath($"{assemblyName.Name}.{extension}", baseDirectory);

            AssemblyDefinition?assembly = null;

            try
            {
                using var resolver = new DefaultAssemblyResolver();
                assembly           = assemblyPath != null?AssemblyDefinition.ReadAssembly(assemblyPath) : resolver.Resolve(assemblyName);
            }
            catch
            {
                // do nothing, assembly is not found
            }

            var info = new AssemblyInformation(assemblyName.Name, assembly?.Name.Version.ToString() ?? assemblyName.Version.ToString(), assemblyPath)
            {
                IsLocalAssembly = assemblyPath != null || assembly == null,
                AssemblyName    = assembly?.FullName ?? assemblyName.FullName,
                IsResolved      = assembly != null,
                HasEntryPoint   = assembly?.EntryPoint != null
            };

            info.EnhancePropertiesWithFile();
            info.EnhanceProperties(assembly);

            return(info, assembly);
        }
コード例 #4
0
        public void Read_ReturnedTwoProvidedTips()
        {
            string       inputFileName = FilePathProvider.ProvideFullPathToFile("TestTips.json", inputDataDirectoryName);
            var          sut           = new ProvidedTipsReader(inputFileName);
            ProvidedTips providedTips  = sut.Read();

            Assert.That(providedTips.Count, Is.EqualTo(2));
        }
コード例 #5
0
        public void Read_ReturnsProvidedTipsObject()
        {
            string       inputFileName = FilePathProvider.ProvideFullPathToFile("TestTips.json", inputDataDirectoryName);
            var          sut           = new ProvidedTipsReader(inputFileName);
            ProvidedTips providedTips  = sut.Read();

            Assert.That(providedTips, Is.InstanceOf <ProvidedTips>());
        }
コード例 #6
0
ファイル: WriteStore.cs プロジェクト: route56/gyrfalcon
 private void PersistToFile(IEnumerable <DataAtom> finalDataList, string fileName)
 {
     FilePathProvider.EnsureFileWithFolder(fileName);
     using (StreamWriter sw = File.AppendText(fileName))
     {
         foreach (var item in finalDataList)
         {
             sw.WriteLine(item.ToString());
         }
     }
 }
コード例 #7
0
        public void GetPath_Should_Return_CorrectPath()
        {
            // arrange
            FilePathProvider service = new FilePathProvider();

            // act
            var result = service.GetPath();

            // assert
            Assert.Equal("../VCharge.UnitTests/TestData/MeterData.csv", result);
        }
コード例 #8
0
        public void Read_ReturnsCandidateNameElectionGainPairsObject()
        {
            //prepare
            var inputFileNameFullPath = FilePathProvider.ProvideFullPathToFile("TestResults.json", inputDataDirectoryName);
            var sut = new ElectionResultsReader(inputFileNameFullPath);

            //act
            CandidateNameElectionGainPairs candidateNameElectionGainPairs = sut.Read();

            //assert
            Assert.That(candidateNameElectionGainPairs, Is.TypeOf <CandidateNameElectionGainPairs>());
        }
コード例 #9
0
        public void Serialize()
        {
            if (Reflector != null)
            {
                string pathToSaveSerializedFile = FilePathProvider.Browse();

                if (pathToSaveSerializedFile != "")
                {
                    Reflector.SerializeAssembly(pathToSaveSerializedFile);
                }
            }
        }
コード例 #10
0
        public static async Task Main(string[] args)
        {
            var commandLineProvider = new CommandLineProvider();
            var filePathProvider    = new FilePathProvider(commandLineProvider);

            var builder = new HostBuilder()
                          .ConfigureAppConfiguration((hostingContext, config) =>
            {
                ConfigureHost(config, args, filePathProvider);
            })
                          .ConfigureServices((hostContext, services) =>
            {
                services.AddOptions();
                services.Configure <BotConfig>(hostContext.Configuration.GetSection("config"));

                services.AddSingleton <IHostedService, BotService>();
                services.AddSingleton <IDataStorage, DataStorage>();
                services.AddSingleton <IConfigProvider, ConfigProvider>();
                services.AddSingleton <BotTelegramClient, BotTelegramClient>();
                services.AddSingleton <IBotTelegramClient>(s => s.GetRequiredService <BotTelegramClient>());
                services.AddSingleton <IBotTelegramClientControl>(s => s.GetRequiredService <BotTelegramClient>());
                services.AddSingleton(commandLineProvider);
                services.AddSingleton(filePathProvider);

                //services.AddSingleton<AsusRouterRequestService>();
                services.AddSingleton <KeeneticRouterRequestService>();
                services.AddSingleton <TransmissionService>();

                var types = Assembly.GetExecutingAssembly()
                            .GetTypes()
                            .ToArray();

                // Поиск и регистрация обработчиков команд.
                foreach (var type in types)
                {
                    if (!typeof(IBotCommandHandler).IsAssignableFrom(type) || !type.IsClass)
                    {
                        continue;
                    }

                    services.AddSingleton(typeof(IBotCommandHandler), type);
                    services.AddSingleton(type, type);
                }

                services.AddSingleton <IBotDocumentHandler, TorrentDocumentHandler>();
            })
                          .ConfigureLogging((hostingContext, logging) =>
            {
                ConfigureLogging(logging);
            });

            await builder.RunConsoleAsync();
        }
コード例 #11
0
        public void ElectionResultsReaderObject_InitializedCorrectly()
        {
            //prepare
            var inputFileNameFullPath = FilePathProvider.ProvideFullPathToFile("TestResults.json", inputDataDirectoryName);

            //act
            var sut = new ElectionResultsReader(inputFileNameFullPath);

            Console.WriteLine($"Full file name: {sut.InputFileName}");

            //assert
            Assert.That(sut.InputFileName, Is.EqualTo(inputFileNameFullPath));
        }
コード例 #12
0
        public void Deserialize()
        {
            string pathToSerializedFile = FilePathProvider.Browse();

            if (pathToSerializedFile != null)
            {
                Reflector = new Reflector();
                Reflector.DeserializeAssembly(pathToSerializedFile);

                HierarchicalAreas.Clear();
                TreeViewLoaded();
            }
        }
コード例 #13
0
        public void ProvidedTipsReaderObject_InitializedCorrectly()
        {
            //prepare
            string inputFileName = FilePathProvider.ProvideFullPathToFile("TestTips.json", inputDataDirectoryName);

            //act
            var sut = new ProvidedTipsReader(inputFileName);

            Console.Error.WriteLine($"Full file name: {sut.InputFileName}");

            //verify
            Assert.That(sut.InputFileName, Is.EqualTo(inputFileName));
        }
コード例 #14
0
        public void Read_ReadoutValuesFitWithValuesInFile_Tip2()
        {
            string       inputFileName = FilePathProvider.ProvideFullPathToFile("TestTips.json", inputDataDirectoryName);
            var          sut           = new ProvidedTipsReader(inputFileName);
            ProvidedTips providedTips  = sut.Read();

            Assert.That(providedTips[1].TipperName, Is.EqualTo("Miso"));
            Assert.That(providedTips[1].Tips[0].CandidateName, Is.EqualTo("TestCandidate1"));
            Assert.That(providedTips[1].Tips[0].ElectionGainInPercent, Is.EqualTo(40));
            Assert.That(providedTips[1].Tips[1].CandidateName, Is.EqualTo("TestCandidate2"));
            Assert.That(providedTips[1].Tips[1].ElectionGainInPercent, Is.EqualTo(25));
            Assert.That(providedTips[1].Tips[2].CandidateName, Is.EqualTo("TestCandidate3"));
            Assert.That(providedTips[1].Tips[2].ElectionGainInPercent, Is.EqualTo(20));
        }
コード例 #15
0
        private static EncodingTaskBase ConvertToAssemblyLineIfNeeded(EncodingTask[] encodingSteps, string file)
        {
            var filePathProvider = new FilePathProvider(file);

            if (encodingSteps.Length == 1)
            {
                // Only a single task so we don't need an assembly line. Just return the task.
                var task = encodingSteps[0];
                task.FileProvider = filePathProvider;
                return(task);
            }

            return(new AssemblyLine(filePathProvider, encodingSteps));
        }
コード例 #16
0
        static void Main(string[] args)
        {
            IPathProvider pathProvider   = new FilePathProvider();
            string        sourceFilePath = pathProvider.GetSourcePath();
            string        targetFilePath = pathProvider.GetTargetPath();

            IDataProvider dataProvider = resolver.Get <IDataProvider>(new Ninject.Parameters.ConstructorArgument("filePath", sourceFilePath));
            ILogger       logger       = resolver.Get <ILogger>();
            var           firstP       = new Ninject.Parameters.ConstructorArgument("dataProvider", dataProvider);
            var           secondP      = new Ninject.Parameters.ConstructorArgument("logger", logger);

            Converter <XDocument> converter = resolver.Get <Converter <XDocument> >(firstP, secondP);

            Console.WriteLine(converter.Convert());
            converter.SaveToFile(targetFilePath);
        }
コード例 #17
0
ファイル: WriteStore.cs プロジェクト: route56/gyrfalcon
        private void PersistPerHour(IEnumerable <DataAtom> finalDataList)
        {
            if (finalDataList.Count() == 0)
            {
                return;
            }

            var start = finalDataList.Min(s => s.Time);
            var end   = finalDataList.Max(s => s.Time);

            for (DateTime i = start; i < end.AddHours(1); i = i.AddHours(1))
            {
                PersistToFile(
                    finalDataList.Where(s => s.Time >= i && s.Time < i.AddHours(1)),
                    FilePathProvider.GetHourSummary(i));
            }
        }
コード例 #18
0
        public void Read_ReadOutValuesFitWithValuesInFile()
        {
            //prepare
            var inputFileNameFullPath = FilePathProvider.ProvideFullPathToFile("TestResults.json", inputDataDirectoryName);
            var sut = new ElectionResultsReader(inputFileNameFullPath);

            //act
            CandidateNameElectionGainPairs candidateNameElectionGainPairs = sut.Read();

            //assert
            Assert.That(candidateNameElectionGainPairs[0].CandidateName, Is.EqualTo("TestCandidate1"));
            Assert.That(candidateNameElectionGainPairs[1].CandidateName, Is.EqualTo("TestCandidate2"));
            Assert.That(candidateNameElectionGainPairs[2].CandidateName, Is.EqualTo("TestCandidate3"));
            Assert.That(candidateNameElectionGainPairs[0].ElectionGainInPercent, Is.EqualTo(40));
            Assert.That(candidateNameElectionGainPairs[1].ElectionGainInPercent, Is.EqualTo(30));
            Assert.That(candidateNameElectionGainPairs[2].ElectionGainInPercent, Is.EqualTo(20));
        }
コード例 #19
0
        public void WhenRunIsCalledThenScreenshotEngineTakesASnapshotForEachUrl()
        {
            var mockScreenshotProvider = new Mock <IScreenshotProvider>();
            var filePathProvider       = new FilePathProvider("TestDirectory");

            var sut = new ScreenshotRunner(mockScreenshotProvider.Object, filePathProvider);

            var screenshotDefinitions = new[]
            {
                new ScreenshotDefinition("url1", "fileName1"),
                new ScreenshotDefinition("url2", "fileName2")
            };

            sut.CreateScreenshots(screenshotDefinitions);

            mockScreenshotProvider.Verify(x => x.SaveScreenshot("url1", @"TestDirectory\fileName1"), Times.Once);
            mockScreenshotProvider.Verify(x => x.SaveScreenshot("url2", @"TestDirectory\fileName2"), Times.Once);
        }
コード例 #20
0
        public void Count_RealResults_ForParliamentElections2020()
        {
            //prepare
            var realElectionResultsFile = FilePathProvider.ProvideFullPathToFile("ParliamentElections2020Results.json", @"Source\PresidentElection\InputData");
            var realTipsFile            = FilePathProvider.ProvideFullPathToFile("ParliamentElections2020Tips.json", @"Source\PresidentElection\InputData");
            var sut = new ContestEvaluation(realElectionResultsFile, realTipsFile);

            //act
            var result = sut.CountScore(1, 6).OrderBy(x => x.Score).ToList();
            int i      = 0;

            Console.WriteLine("{0} {1,6} {2,7}", "Place", "Name", "Score");
            Console.WriteLine("--------------------");
            foreach (var evaluatedTip in result)
            {
                Console.WriteLine($"{++i,3}. {evaluatedTip.TipperName,7} {evaluatedTip.Score,7}");
            }
        }
コード例 #21
0
        public void Read_ReturnedThreeCandidateNameElectionGainPairs()
        {
            //prepare
            var inputFileNameFullPath = FilePathProvider.ProvideFullPathToFile("TestResults.json", inputDataDirectoryName);
            var sut = new ElectionResultsReader(inputFileNameFullPath);

            //act
            CandidateNameElectionGainPairs candidateNameElectionGainPairs = sut.Read();

            foreach (var candidateNameElectionGainPair in candidateNameElectionGainPairs)
            {
                Console.Error.WriteLine($"candidate name: {candidateNameElectionGainPair.CandidateName}");
                Console.Error.WriteLine($"result in percent : {candidateNameElectionGainPair.ElectionGainInPercent}");
            }

            //assert
            Assert.That(candidateNameElectionGainPairs.Count, Is.EqualTo(3));
        }
コード例 #22
0
ファイル: WriteStore.cs プロジェクト: route56/gyrfalcon
        private void PersistPerDay(IEnumerable <DataAtom> finalDataList)
        {
            if (finalDataList.Count() == 0)
            {
                return;
            }

            // TODO This method needs to be called by writestore sometime.
            var start = finalDataList.Min(s => s.Time);
            var end   = finalDataList.Max(s => s.Time);

            for (DateTime i = start; i < end.AddDays(1); i = i.AddDays(1))
            {
                PersistToFile(
                    finalDataList.Where(s => s.Time >= i && s.Time < i.AddDays(1)),
                    FilePathProvider.GetDaySummary(i));
            }
        }
コード例 #23
0
        public void RunTests()
        {
            var screenshots = new[]
            {
                new ScreenshotDefinition(
                    @"http://www.thelondonclinic.co.uk/patient-care/your-stay-at-the-london-clinic", "Your_Stay.png"),
                new ScreenshotDefinition(@"http://www.thelondonclinic.co.uk/eye-centre", "Eye_Centre.png")
            };

            var oldFilePath        = new FilePathProvider("Original");
            var newFilePath        = new FilePathProvider("New");
            var screenshotProvider = new ScreenshotProvider(new ChromeDriver(@"Drivers/"));

            var runner = new ScreenshotRunner(screenshotProvider, oldFilePath);

            runner.CreateScreenshots(screenshots);

            var screenshotEngine = new ScreenshotTestEngine(oldFilePath, newFilePath, screenshotProvider);

            var testRunner = new ScreenshotTestRunner(screenshotEngine, screenshots);
            var results    = testRunner.Run();
        }
コード例 #24
0
        public void Open(FilePathProvider filePathProvider)
        {
            string newFilePath = filePathProvider(FilePath);

            if (newFilePath != null)
            {
                using (var stream = File.OpenRead(newFilePath))
                {
                    World worldModel = DogFight.World.LoadFrom(stream);
                    var worldContext = new WorldContext(this, worldModel);
                    New(worldContext);

                    FilePath = newFilePath;
                }
            }
        }
コード例 #25
0
ファイル: QueryStore.cs プロジェクト: route56/gyrfalcon
 private IEnumerable <DataAtom> GetData(DateTime start, DateTime end)
 {
     return(FilePathProvider.GetFilesToRead(start, end)
            .SelectMany(file => LoadDataFromFile(file))
            .Where(data => data.Time >= start && data.Time <= end));
 }
コード例 #26
0
        private static void ConfigureHost(IConfigurationBuilder builder, string[] args, FilePathProvider filePathProvider)
        {
            var configDirectoryPath = filePathProvider.GetConfigDirectoryPath();

            if (!Directory.Exists(configDirectoryPath))
            {
                Directory.CreateDirectory(configDirectoryPath);
            }

            var configFilePath = Path.Combine(configDirectoryPath, AppSettingsFilename);

            if (!File.Exists(configFilePath))
            {
                var assembly = Assembly.GetEntryAssembly();
                using (var resource = assembly.GetManifestResourceStream("iznakurnoz.Bot.Resources.iznakurnozbot.conf"))
                {
                    using (var textStream = new FileStream(configFilePath, FileMode.Create))
                    {
                        resource.Seek(0, SeekOrigin.Begin);
                        resource.CopyTo(textStream);
                        textStream.Flush();
                        textStream.Close();
                    }
                }
            }

            builder
            .AddJsonFile(configFilePath, optional: false, reloadOnChange: true)
            .Build();

            builder.AddEnvironmentVariables();

            if (args != null)
            {
                builder.AddCommandLine(args);
            }
        }
コード例 #27
0
 public void SetUp()
 {
     electionResultsFile = FilePathProvider.ProvideFullPathToFile("TestResults.json", @"Tests\PresidentElection\InputData");
     providedTipsFile    = FilePathProvider.ProvideFullPathToFile("TestTips.json", @"Tests\PresidentElection\InputData");
 }
コード例 #28
0
        public void NominalTest()
        {
            var rootFolder = Guid.NewGuid().ToString("N");

            try
            {
                var filePathProvider = new FilePathProvider(rootFolder);
                var dataProvider     = Substitute.For <IDataProvider>();
                dataProvider.Fetch(Arg.Any <string>(), Arg.Any <DateTime>(), Arg.Any <DateTime>())
                .ReturnsForAnyArgs(p => p.ArgAt <DateTime>(1).SplitDaysTo(p.ArgAt <DateTime>(2))
                                   .SelectMany(d => Fmds(filePathProvider, p.ArgAt <string>(0), new[] { "Column_1", "Column_2", "Column_3" }, d))
                                   .Select(CreateFile));

                var streamFactory = Substitute.For <IStreamFactory <IStream> >();
                var mockStream    = Substitute.For <IStream>();
                streamFactory.CreateReader(Arg.Any <string>()).Returns(mockStream);

                var provider = new StreamProvider <IStream>(filePathProvider, streamFactory, dataProvider);

                var symbol = "Symbol";

                // Initial request
                CheckDataCollect("2018-03-01", "2018-03-31");

                // 2nd request in the future from the first one
                CheckDataCollect("2018-05-01", "2018-05-31");

                // 3th request in the past from the first one
                CheckDataCollect("2018-01-01", "2018-01-31");

                // 4th request between 1st and 2nd
                CheckDataCollect("2018-04-01", "2018-04-30");

                // Request already collected data
                CheckDataReadOnly("2018-03-15", "2018-05-15");

                // Request both
                CheckMixed("2018-01-15", "2018-03-15", "2018-02-01", "2018-03-01");

                void CheckDataCollect(string startStr, string endStr)
                {
                    var start = startStr.ToDateTime();
                    var end   = endStr.ToDateTime();
                    var dates = start.SplitDaysTo(end).ToArray();
                    var idx   = 0;

                    foreach (var stream in provider.Fetch("Symbol", "Column_2", start, end))
                    {
                        var date = dates[idx++];

                        var filePath = filePathProvider.GetFilePath("Symbol", "Column_2", date);
                        streamFactory.Received(1).CreateReader(Arg.Is <string>(p => string.Equals(p, filePath)));

                        streamFactory.Received(1).CreateReader(Arg.Any <string>());

                        streamFactory.ClearReceivedCalls();
                        Assert.AreEqual(mockStream, stream);
                    }

                    Assert.AreEqual(dates.Length, idx);
                    dataProvider.Received(1).Fetch(
                        Arg.Is <string>(p => p == symbol),
                        Arg.Is <DateTime>(p => p == start),
                        Arg.Is <DateTime>(p => p == end));
                    dataProvider.ClearReceivedCalls();
                }

                void CheckDataReadOnly(string startStr, string endStr)
                {
                    var start = startStr.ToDateTime();
                    var end   = endStr.ToDateTime();
                    var dates = start.SplitDaysTo(end).ToArray();
                    var idx   = 0;

                    foreach (var stream in provider.Fetch("Symbol", "Column_2", start, end))
                    {
                        var date     = dates[idx++];
                        var filePath = filePathProvider.GetFilePath("Symbol", "Column_2", date);
                        streamFactory.Received(1).CreateReader(Arg.Is <string>(p => string.Equals(p, filePath)));

                        streamFactory.Received(1).CreateReader(Arg.Any <string>());

                        streamFactory.ClearReceivedCalls();
                        Assert.AreEqual(mockStream, stream);
                    }

                    Assert.AreEqual(dates.Length, idx);
                    dataProvider.DidNotReceive().Fetch(Arg.Any <string>(), Arg.Any <DateTime>(), Arg.Any <DateTime>());
                }

                void CheckMixed(string startStr, string endStr, string collectStartStr, string collectEndStr)
                {
                    var start = startStr.ToDateTime();
                    var end   = endStr.ToDateTime();
                    var dates = start.SplitDaysTo(end).ToArray();
                    var idx   = 0;

                    foreach (var stream in provider.Fetch("Symbol", "Column_2", start, end))
                    {
                        var date     = dates[idx++];
                        var filePath = filePathProvider.GetFilePath("Symbol", "Column_2", date);
                        streamFactory.Received(1).CreateReader(Arg.Is <string>(p => string.Equals(p, filePath)));

                        streamFactory.Received(1).CreateReader(Arg.Any <string>());

                        streamFactory.ClearReceivedCalls();
                        Assert.AreEqual(mockStream, stream);
                    }

                    Assert.AreEqual(dates.Length, idx);
                    dataProvider.Received(1).Fetch(
                        Arg.Is <string>(p => p == symbol),
                        Arg.Is <DateTime>(p => p == collectStartStr.ToDateTime()),
                        Arg.Is <DateTime>(p => p == collectEndStr.ToDateTime().AddTicks(-1)));
                    dataProvider.ClearReceivedCalls();
                }
            }
            finally
            {
                Directory.Delete(rootFolder, true);
            }
        }
コード例 #29
0
 internal FilePersister(string filename)
 {
     filePathProvider = new FilePathProvider(filename);
     reader           = new FileReader();
     writer           = new FileWriter();
 }
コード例 #30
0
        public void SaveAs(FilePathProvider filePathProvider)
        {
            string newFilePath = filePathProvider(FilePath);

            if (newFilePath != null)
            {
                FilePath = newFilePath;
                Save();
            }
        }
コード例 #31
0
 public void SetUp()
 {
     provider = new FilePathProvider(Filename);
 }