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); }
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 })); }
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 })); }
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"); }
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"); }