Пример #1
0
        public static int Main(string[] args)
        {
            try
            {
                Configuration c = new Configuration(args);
                c.CheckValid();

                foreach (string s in c.Files)
                {
                    try
                    {
                        string fileName       = Path.GetFileNameWithoutExtension(s);
                        string outputFileName = Path.Combine(c.OutputDir, fileName + ".cs");
                        new XmlParser(s).Generate(outputFileName);
                    }
                    catch (Exception ex)
                    {
                        Console.Error.WriteLine("Error in [{0}]: {1} ", s, ex.Message);
                    }
                }

                SummaryGenerator.Write(c.OutputDir);

                return(0);
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex.Message);
                return(1);
            }
        }
Пример #2
0
        public Measurement ReadMeasurement(MeasurementFile measurementFile)
        {
            var ticketFile = BillettServiceXmlFile.LoadFile(measurementFile.FullPath);

            if (ticketFile == null)
            {
                return(null);
            }

            var summary = new SummaryGenerator().CreateSummary(ticketFile);

            Measurement measurement = new Measurement
            {
                MeasurementTime    = measurementFile.MeasurementTime,
                AmountSold         = summary.ContainsKey(SeatStatus.Sold) ? summary[SeatStatus.Sold] : 0,
                AmountSeasonTicket = summary.ContainsKey(SeatStatus.SeasonTicket) ? summary[SeatStatus.SeasonTicket] : 0,
                AmountAvailable    =
                    summary.ContainsKey(SeatStatus.AvailableForPurchase) ? summary[SeatStatus.AvailableForPurchase] : 0,
                AmountReserved     = summary.ContainsKey(SeatStatus.Reserved) ? summary[SeatStatus.Reserved] : 0,
                AmountUnavailable  = summary.ContainsKey(SeatStatus.Unavailable) ? summary[SeatStatus.Unavailable] : 0,
                AmountTicketMaster =
                    summary.ContainsKey(SeatStatus.HeldByTicketMasterApplication)
                        ? summary[SeatStatus.HeldByTicketMasterApplication]
                        : 0,
                AmountUnknown = summary.ContainsKey(SeatStatus.Unknown) ? summary[SeatStatus.Unknown] : 0
            };

            return(measurement);
        }
Пример #3
0
        public void GroupMatchPositions()
        {
            IDictionary <string, IEnumerable <int> > matchPositions =
                new Dictionary <string, IEnumerable <int> > {
                { "ala", new List <int> {
                      0, 20, 100
                  } },
                { "ma", new List <int> {
                      10, 30
                  } },
                { "kota", new List <int> {
                      5, 40, 80
                  } }
            };

            List <PositionTextPairGroup> groups = SummaryGenerator.GroupMatchPositions(matchPositions, 0);

            Assert.AreEqual(8, groups.Count);
            Assert.IsTrue(groups.All(group => group.pairs.Count == 1));
            Assert.AreEqual(3, groups.Count(group => group.pairs.First().text == "ala"));
            Assert.AreEqual(2, groups.Count(group => group.pairs.First().text == "ma"));
            Assert.AreEqual(3, groups.Count(group => group.pairs.First().text == "kota"));

            groups = SummaryGenerator.GroupMatchPositions(matchPositions, 10);
            Assert.AreEqual(2, groups.Count);
            Assert.AreEqual(6, groups[0].pairs.Count);
            Assert.AreEqual(2, groups[1].pairs.Count);
        }
Пример #4
0
        public void GenerateContext()
        {
            int contextSizeChars = 5;
            List <PositionTextPairGroup> groups =
                new List <PositionTextPairGroup> {
                new PositionTextPairGroup(new PositionTextPair(0, "ala"), contextSizeChars)
                .Extend(new PositionTextPair(5, "ma"), contextSizeChars),
                new PositionTextPairGroup(new PositionTextPair(20, "ala"), contextSizeChars)
                .Extend(new PositionTextPair(23, "ma"), contextSizeChars)
                .Extend(new PositionTextPair(24, "ala"), contextSizeChars)
                .Extend(new PositionTextPair(30, "kota"), contextSizeChars)
            };
            StreamReader reader = new StreamReader(new MemoryStream(
                                                       Encoding.UTF8.GetBytes("ala12ma1234567890123alamala123kota1234567890")));

            Mock <IDocumentBuilder> builder = mockFactory.CreateMock <IDocumentBuilder>();

            builder.Expects.One
            .Method(b => b.BeginContextBlock());
            builder.Expects.One
            .Method(b => b.EndContextBlock());
            builder.Expects.AtMostOne
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("", TextStyle.Normal);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("ala", TextStyle.Bold);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("12", TextStyle.Normal);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("ma", TextStyle.Bold);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("12345", TextStyle.Normal);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("90123", TextStyle.Normal);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("alamala", TextStyle.Bold);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("123", TextStyle.Normal);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("kota", TextStyle.Bold);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("12345", TextStyle.Normal);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With(" ... ", TextStyle.Normal);
            builder.Expects.One
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With(" ...", TextStyle.Normal);

            SummaryGenerator.GenerateContext(builder.MockObject, groups, reader);
        }
        public void SummaryGenerator_should_be_thread_safe()
        {
            var writer  = MockRepository.GenerateMock <ISummaryWriter>();
            var subject = new SummaryGenerator(writer);

            Enumerable.Range(0, _elementsCount)
            .Select(i => MockRepository.GenerateMock <IFeatureResult>())
            .ToArray()
            .AsParallel()
            .ForAll(subject.AddFeature);

            subject.Finished();
            writer.AssertWasCalled(w => w.Save(Arg <IFeatureResult[]> .Matches(r => r.Length == _elementsCount)));
        }
        public SummaryGenerator_Tests()
        {
            var testClockProvider = new TestClockProvider();

            testClockProvider.Now = new DateTime(2020, 4, 1);

            _summaryGenerator = new SummaryGenerator(testClockProvider);

            _crawlerMeta = new[]
            {
                new CrawlerMetaItem
                {
                    CrawlerName        = "cr1",
                    CrawlerTitle       = "Cr1",
                    Url                = "",
                    CrawlerDescription = "",
                    IsVirtualJudge     = false,
                },
                new CrawlerMetaItem
                {
                    CrawlerName        = "cr2",
                    CrawlerTitle       = "Cr2",
                    Url                = "",
                    CrawlerDescription = "",
                    IsVirtualJudge     = false,
                },
                new CrawlerMetaItem
                {
                    CrawlerName        = "cr3",
                    CrawlerTitle       = "Cr3",
                    Url                = "",
                    CrawlerDescription = "",
                    IsVirtualJudge     = true,
                },
                new CrawlerMetaItem
                {
                    CrawlerName        = "cr4",
                    CrawlerTitle       = "Cr4",
                    Url                = "",
                    CrawlerDescription = "",
                    IsVirtualJudge     = true,
                },
            };
        }
Пример #7
0
        public void Generate()
        {
            Mock <IDocumentBuilder> builder = mockFactory.CreateMock <IDocumentBuilder>();

            builder.Expects.One
            .Method(b => b.AddReportHeader(new DateTime(), null, null))
            .WithAnyArguments();
            builder.Expects.AtLeast(2)
            .Method(b => b.AddSectionHeader(null))
            .WithAnyArguments();
            builder.Expects.Exactly(matchingFiles.Count)
            .Method(b => b.AddSearchResult(new SearchResult()))
            .WithAnyArguments();
            builder.Expects.One
            .Method(b => b.AddReportFooter());
            builder.Expects.One
            .Method(b => b.Save(null))
            .With(outputFilename);
            builder.Expects.Exactly(matchingFiles.Count)
            .Method(b => b.BeginContextBlock());
            builder.Expects.Exactly(matchingFiles.Count)
            .Method(b => b.EndContextBlock());
            builder.Expects.Exactly(matchingFiles.Count)
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("string", TextStyle.Bold);
            builder.Expects.Exactly(matchingFiles.Count)
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With("... ", TextStyle.Normal);
            builder.Expects.Exactly(matchingFiles.Count * 2)
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With(" ... ", TextStyle.Normal);
            builder.Expects.Exactly(matchingFiles.Count)
            .Method(b => b.AddContextText(null, TextStyle.Normal))
            .With(" ...", TextStyle.Normal);

            SummaryGenerator generator = new SummaryGenerator();
            ReportOptions    options   = new ReportOptions();

            options.outputFilePath   = outputFilename;
            options.contextSizeChars = 0;

            generator.Generate(builder.MockObject, options, searchQuery, inputPaths, matchingFiles);
        }
Пример #8
0
        public void Generate()
        {
            Mock<IDocumentBuilder> builder = mockFactory.CreateMock<IDocumentBuilder>();
            builder.Expects.One
                           .Method(b => b.AddReportHeader(new DateTime(), null, null))
                           .WithAnyArguments();
            builder.Expects.AtLeast(2)
                           .Method(b => b.AddSectionHeader(null))
                           .WithAnyArguments();
            builder.Expects.Exactly(matchingFiles.Count)
                           .Method(b => b.AddSearchResult(new SearchResult()))
                           .WithAnyArguments();
            builder.Expects.One
                           .Method(b => b.AddReportFooter());
            builder.Expects.One
                           .Method(b => b.Save(null))
                           .With(outputFilename);
            builder.Expects.Exactly(matchingFiles.Count)
                           .Method(b => b.BeginContextBlock());
            builder.Expects.Exactly(matchingFiles.Count)
                           .Method(b => b.EndContextBlock());
            builder.Expects.Exactly(matchingFiles.Count)
                           .Method(b => b.AddContextText(null, TextStyle.Normal))
                           .With("string", TextStyle.Bold);
            builder.Expects.Exactly(matchingFiles.Count)
                           .Method(b => b.AddContextText(null, TextStyle.Normal))
                           .With("... ", TextStyle.Normal);
            builder.Expects.Exactly(matchingFiles.Count * 2)
                           .Method(b => b.AddContextText(null, TextStyle.Normal))
                           .With(" ... ", TextStyle.Normal);
            builder.Expects.Exactly(matchingFiles.Count)
                           .Method(b => b.AddContextText(null, TextStyle.Normal))
                           .With(" ...", TextStyle.Normal);

            SummaryGenerator generator = new SummaryGenerator();
            ReportOptions options = new ReportOptions();
            options.outputFilePath = outputFilename;
            options.contextSizeChars = 0;

            generator.Generate(builder.MockObject, options, searchQuery, inputPaths, matchingFiles);
        }
Пример #9
0
        static void Main(string[] args)
        {
            var(inputFile, outputFile, T1_THRESHOLD, typeToGenerate) = CommandLineParams.Parse(args);
            Console.WriteLine($"{inputFile} {outputFile} {T1_THRESHOLD} {typeToGenerate}");

            var players = new List <Player>();

            using (var textReader = File.OpenText("../../../raw_data/parsed_fifa.csv"))
            {
                CsvReader csvReader = new CsvReader(textReader);
                csvReader.Configuration.Delimiter         = ",";
                csvReader.Configuration.MissingFieldFound = null;

                int i = 0;
                while (csvReader.Read())
                {
                    Player player = csvReader.GetRecord <Player>();
                    players.Add(player);
                    i++;
                }
            }

            var(quants, quals, summs, logicalOperation) = FuzzySetParser.ParseFuzzySetFile(players.Count, inputFile);

            List <LinguisticSummary> summaries;

            if (typeToGenerate == SummaryType.First)
            {
                summaries = SummaryGenerator.GetFirstTypeSummaries(quants, summs, players, logicalOperation);
            }
            else
            {
                summaries = SummaryGenerator.GetSecondTypeSummaries(quants, summs, players, quals, logicalOperation);
            }

            SummaryResultWriter.Write(
                summaries.Select(sum => (sum, new QualityMeasures().CalculateAll(sum)))
                .Where(t1 => t1.Item2.T1 > T1_THRESHOLD), outputFile);
        }
Пример #10
0
        public string CreateCountSummary(BillettServiceXmlFile ticketFile)
        {
            var stats = new SummaryGenerator().CreateSummary(ticketFile);

            var builder   = new StringBuilder();
            var sum       = 0;
            var tilskuere = 0;

            foreach (var kvp in stats)
            {
                builder.AppendLine(kvp.Key.ToString().PadRight(30) + kvp.Value.ToString().PadLeft(5));
                sum += kvp.Value;
                if (kvp.Key == SeatStatus.Sold || kvp.Key == SeatStatus.SeasonTicket)
                {
                    tilskuere += kvp.Value;
                }
            }
            builder.AppendLine("-----------------------------------");
            builder.AppendLine("Tilskuere                     " + tilskuere.ToString().PadLeft(5));
            builder.AppendLine("Totale seter                  " + sum.ToString().PadLeft(5));

            return(builder.ToString());
        }
Пример #11
0
 public void SetUp()
 {
     _writer  = MockRepository.GenerateMock <ISummaryWriter>();
     _subject = new SummaryGenerator(_writer);
 }