public void Test() { var parcer = new EurekahedgeLockupParcer(); Assert.AreEqual("Soft; 24; Months; 5;", parcer.Parce("Yes (1st 2yrs firm lock-up; soft lock-up of 5% exit fee)").ToTestString()); Assert.AreEqual("Hard; 50; Days; ;", parcer.Parce("Yes (50days)").ToTestString()); Assert.AreEqual("Hard; 6; Months; ;", parcer.Parce("Yes (six months)").ToTestString()); Assert.AreEqual("Hard; 9; Months; ;", parcer.Parce("Yes (Nine months)").ToTestString()); Assert.AreEqual("Hard; 12; Months; ;", parcer.Parce("Yes (year 1 hard lock-up year 2 & 3 soft lock-up)").ToTestString()); Assert.AreEqual("; ; ; ;", parcer.Parce("No (for Class A; Yes for Class B & C)").ToTestString()); Assert.AreEqual("Hard; 12; Months; ;", parcer.Parce("Yes (Class A: No; Class B: Yes (1 year))").ToTestString()); Assert.AreEqual("Soft; ; ; 4;", parcer.Parce("No (Soft-lock with 4% early redemption fee)").ToTestString()); //Assert.AreEqual("Soft; 1; Months; 10;", parcer.Parce("Yes (10% redemption limit per month)").ToTestString()); foreach (Tuple <string, string> sample in samples) { Assert.AreEqual(sample.Item2, parcer.Parce(sample.Item1).ToTestString()); } }
private void LoadFiles() { try { //var sw = Stopwatch.StartNew(); //var inputTextes = Enumerable.Repeat(GetTextes().Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList(), 1000) var inputTextes = GetTextes().Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList(); //inputTextes = Enumerable.Repeat(inputTextes, 200).SelectMany(x => x).ToList(); /* * var fileInfosAll = inputTextes. * Select(x => new * { * lockUp = parcer.Parce(x), * parceResult = parcer.Replace(x), * text = x, * }). * //GroupBy(x => !string.IsNullOrEmpty(x.parceResult) ? x.parceResult : x.text). * GroupBy(x => !string.IsNullOrEmpty(x.parceResult) ? x.parceResult : x.text). * Select(x => new * { * text = x.Key, * sourceText = string.Join(Environment.NewLine, x.Select(y => y.text).Distinct()), * firstSourceText = x.First().text, * firstLockUp = x.First().lockUp, * count = x.Count(), * }). * ToList(); */ var sw = Stopwatch.StartNew(); EurekahedgeLockupParcer parcer = new EurekahedgeLockupParcer(); var fileInfosAll = inputTextes .Select(x => new { lockUp = parcer.Parce(x), parceResult = parcer.Replace(x), text = x, }) //.Where(x => x.lockUp.Warning) /*.GroupBy(x => x.parceResult) * .Select(x => new * { * text = x.First().parceResult, * //text = x.text, * sourceText = x.First().text, * firstSourceText = x.First().text, * firstLockUp = x.First().lockUp, * count = x.Count(), * }) */ .Select(x => new { text = x.parceResult, //text = x.text, sourceText = x.text, firstSourceText = x.text, firstLockUp = x.lockUp, count = 1, }) .ToList(); var fileInfos = fileInfosAll .Take(100) .ToList(); sw.Stop(); TimeSpan timeParsing = sw.Elapsed; textes = fileInfos.Select(x => x.text).ToList(); files = fileInfos.Select(x => $"{x.text}[{x.count}]").ToList(); parsedRegions = fileInfos.Select(x => x.sourceText).ToList(); dataSets = fileInfos.Select(x => x.text).ToList(); File.WriteAllLines(EurekahedgeResult, fileInfosAll.Select(x => $"{x.text}\t{x.firstSourceText}\t{x.firstLockUp.ToTestString()}\t{x.count}")); FilesDescription = $"All lines: {inputTextes.Count}; All parced lines: {fileInfosAll.Count}; Time: {timeParsing:mm\\:ss}"; } catch (Exception e) { Debug.Fail("LoadFiles"); Console.WriteLine(e); throw; } }