using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Reflection; using System.Text.RegularExpressions; namespace HeuristicLab.Tests.Benchmark.Problem { public class Problem { public const char ExampleSeparator = ','; public const string ArchiveFileName = "BenchmarkExamples.zip"; private static string instanceArchiveName = GetResourceName(ArchiveFileName); protected List> Examples { get; set; } protected List> GetExamples(string problemName, Converter inputConverter, Converter outputConverter) { using (var file = GetType().Assembly.GetManifestResourceStream(instanceArchiveName)) using (var archive = new ZipArchive(file, ZipArchiveMode.Read)) { var entry = archive.Entries.SingleOrDefault(x => x.Name == problemName); using (var reader = new StreamReader(entry.Open())) { var examples = new List>(); // skip training headline if (reader.Peek() >= 0) { reader.ReadLine(); } while (reader.Peek() >= 0) { var line = reader.ReadLine(); // return if (line.StartsWith("test")) { break; } var values = line.Split(ExampleSeparator); examples.Add(new Example { Input = inputConverter(values[0]), Output = outputConverter(values[1]) }); } return examples; } } } private static string GetResourceName(string fileName) { return Assembly .GetExecutingAssembly() .GetManifestResourceNames() .Where(x => Regex.Match(x, @".*\.Data\." + fileName).Success) .SingleOrDefault(); } } }