private static void AssertParse(string input, Expression expectation) { var source = input; var parser = new FullParser(); var expr = parser.Parse(source); var expected = expectation; expr.ShouldDeepEqual(expected); }
private static void ProcessMovement() { if (!Directory.Exists(_directory)) { Console.WriteLine("Invalid directory, exiting."); Environment.Exit(1); } if (_value < 0) { Console.WriteLine("Value must be positive, exiting."); Environment.Exit(1); } string outputDir = Path.Combine(_directory, OutputDirName); if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } string output = Path.Combine(outputDir, _value + ".csv"); char[] nameSplit = { '_' }; using (TextWriter writer = new StreamWriter(output)) { foreach (string movementfile in Directory.EnumerateFiles(_directory, "*.txt")) { //Algorithm alg = CIlibParserOld.Parse(movementfile); CIlibParser parser = new FullParser(); Algorithm alg = parser.Parse(movementfile); Measurement measure = alg.Measurements.Find(x => x.Name == MeasureName); int iterations; if (_divergence) { if (measure.FinalIteration.Average < _value) { iterations = measure.MaximumIterations; } else { IterationStats stats = measure.Stats.Skip(1).First(x => x.Average >= _value); iterations = stats.Iteration; } } else { //check if the final value is less than the threshold, if not set it to max iters immediately if (measure.FinalIteration.Average > _value) { iterations = measure.MaximumIterations; } else { IterationStats stats = measure.Stats.Skip(1).First(x => x.Average <= _value); iterations = stats.Iteration; } } var nameTokens = alg.Name.Split(nameSplit, StringSplitOptions.RemoveEmptyEntries); if (!double.TryParse(nameTokens[1], out var inertia)) { Console.WriteLine("Error parsing inertia from: {0}", nameTokens[1]); } if (!double.TryParse(nameTokens[2], out var cognitive)) { Console.WriteLine("Error parsing cognitive from: {0}", nameTokens[2]); } if (!double.TryParse(nameTokens[3], out var social)) { Console.WriteLine("Error parsing social from: {0}", nameTokens[3]); } writer.WriteLine("{0},{1},{2}", cognitive + social, inertia, iterations); } writer.Close(); } }