Example #1
0
        public void TestFromFile(string fileName)
        {
            var data = TestDataParser.Parse <AstoInfo>((option) =>
            {
                option.ParseByLine = true;
                option.FileName    = fileName;
                option.Initialize  = () => new AstoInfo();
                option.ByLineParse = (astoInfo, line, lineNumber) =>
                {
                    var datas = line.Split(" ");
                    if (lineNumber == 0)
                    {
                        var pairs               = int.Parse(datas[1]);
                        astoInfo.AstroCount     = int.Parse(datas[0]);
                        astoInfo.ExpectedResult = int.Parse(datas[2]);
                        astoInfo.Input          = new int[pairs][];
                    }
                    else
                    {
                        var astro1 = int.Parse(datas[0]);
                        var astro2 = int.Parse(datas[1]);
                        astoInfo.Input[lineNumber - 1] = new[] { astro1, astro2 };
                    }
                };
            });

            var result = journeyToMoon(data.AstroCount, data.Input);

            Assert.AreEqual(data.ExpectedResult, result);
        }
Example #2
0
        private static IEnumerable <object[]> Data()
        {
            Func <string, PairsTestData> parser =
                (fileName) => TestDataParser.Parse <PairsTestData>((option) =>
            {
                option.ParseByLine = true;
                option.FileName    = fileName;
                option.Initialize  = () => new PairsTestData();
                option.ByLineParse = (data, line, lineNumber) =>
                {
                    var datas = line.Split(" ");
                    if (lineNumber == 0)
                    {
                        data.ExpectedResult = int.Parse(datas[1]);
                    }
                    else if (lineNumber == 1)
                    {
                        data.A = line.Split(" ").Select(x => int.Parse(x)).ToArray();
                    }
                    else
                    {
                        data.B = line.Split(" ").Select(x => int.Parse(x)).ToArray();
                    }
                };
            });

            return(new[] { @"Coding\Tasks\TestData\beautiful-pairs.txt" }
                   .Select(x => parser(x))
                   .Select(data => new object[] { data.A, data.B, data.ExpectedResult }));
        }
Example #3
0
        private static IEnumerable <object[]> Data()
        {
            Func <string, IEnumerable <CandiesTestData> > parser = (fileName) => TestDataParser.MultiCaseParse <CandiesTestData>((option) =>
            {
                option.CaseSeparator = "#";
                option.ParseByLine   = true;
                option.FileName      = fileName;
                option.Initialize    = () => new CandiesTestData();
                option.ByLineParse   = (data, line, lineNumber) =>
                {
                    var datas = line.Split(" ");
                    if (lineNumber == 0)
                    {
                        data.ChildrenCount  = int.Parse(datas[0]);
                        data.ExpectedResult = long.Parse(datas[1]);
                        data.Input          = new int[data.ChildrenCount];
                    }
                    else
                    {
                        var l = int.Parse(datas[0]);
                        data.Input[lineNumber - 1] = l;
                    }
                };
            });

            return(new[] { @"Coding\Tasks\TestData\candies.txt" }
                   .SelectMany(fileName => parser(fileName))
                   .Select(data => new object[] { data.ChildrenCount, data.Input, data.ExpectedResult }));
        }
        private static IEnumerable <object[]> Data()
        {
            Func <string, IEnumerable <GreedyFloristData> > parser = (fileName) => TestDataParser.MultiCaseParse <GreedyFloristData>((option) =>
            {
                option.CaseSeparator = "#";
                option.ParseByLine   = true;
                option.FileName      = fileName;
                option.Initialize    = () => new GreedyFloristData();
                option.ByLineParse   = (data, line, lineNumber) =>
                {
                    var datas = line.Split(" ");
                    if (lineNumber == 0)
                    {
                        var count           = int.Parse(datas[0]);
                        data.FriendsCount   = int.Parse(datas[1]);
                        data.ExpectedResult = long.Parse(datas[2]);
                        data.Input          = new int[count];
                    }
                    else
                    {
                        var l      = line.Split(" ").Select(x => int.Parse(x)).ToArray();
                        data.Input = l;
                    }
                };
            });

            return(new[] { @"Coding\Tasks\TestData\greedy-florist.txt" }
                   .SelectMany(fileName => parser(fileName))
                   .Select(data => new object[] { data.FriendsCount, data.Input, data.ExpectedResult }));
        }
Example #5
0
        public async Task RequiredValidator()
        {
            var request     = new Request("http://cnblogs.com");
            var dataContext =
                new DataContext(null, new SpiderOptions(), request,
                                new Response {
                Content = new ResponseContent {
                    Data = File.ReadAllBytes("cnblogs.html")
                }
            });

            var dataParser = new TestDataParser();

            dataParser.SetLogger(NullLogger.Instance);
            dataParser.AddFollowRequestQuerier(Selectors.XPath(".//div[@class='pager']"));
            dataParser.AddRequiredValidator(r => Regex.IsMatch(r.Url.ToString(), "xxxcnblogs\\.com"));

            await dataParser.HandleAsync(dataContext);

            var requests = dataContext.FollowRequests;

            Assert.Empty(requests);

            var dataContext2 =
                new DataContext(null, new SpiderOptions(), request,
                                new Response {
                Content = new ResponseContent {
                    Data = File.ReadAllBytes("cnblogs.html")
                }
            });
            var dataParser2 = new TestDataParser();

            dataParser2.AddFollowRequestQuerier(Selectors.XPath(".//div[@class='pager']"));
            dataParser.AddRequiredValidator(r => Regex.IsMatch(r.Url.ToString(), "cnblogs\\.com"));

            await dataParser2.HandleAsync(dataContext2);

            requests = dataContext2.FollowRequests;

            Assert.Equal(12, requests.Count);
            Assert.Contains(requests, r => r.Url.ToString() == "http://cnblogs.com/sitehome/p/2");
        }
Example #6
0
        public async Task XpathFollow()
        {
            var request     = new Request("http://cnblogs.com");
            var dataContext =
                new DataFlowContext(null, new SpiderOptions(), request,
                                    new Response {
                Content = new ByteArrayContent(File.ReadAllBytes("cnblogs.html"))
            });


            var dataParser = new TestDataParser();

            dataParser.AddFollowRequestQuerier(Selectors.XPath(".//div[@class='pager']"));

            await dataParser.HandleAsync(dataContext);

            var requests = dataContext.FollowRequests;

            Assert.Equal(12, requests.Count);
            Assert.Contains(requests, r => r.RequestUri.ToString() == "http://cnblogs.com/sitehome/p/2");
        }