public void TestFiles(string sourceFile, DMTestFlags testFlags) { string compiledFile = Compile(sourceFile); if (testFlags.HasFlag(DMTestFlags.CompileError)) { Assert.IsNull(compiledFile, $"Expected an error during DM compilation"); Cleanup(compiledFile); return; } Assert.IsTrue(compiledFile is not null && File.Exists(compiledFile), $"Failed to compile DM source file"); Assert.IsTrue(_dreamMan.LoadJson(compiledFile), $"Failed to load {compiledFile}"); (bool successfulRun, DreamValue returned) = RunTest(); if (testFlags.HasFlag(DMTestFlags.RuntimeError)) { Assert.IsFalse(successfulRun, "A DM runtime exception was expected"); } else { //TODO: This should use the runtime exception as the failure message Assert.IsTrue(successfulRun, "A DM runtime exception was thrown"); } if (testFlags.HasFlag(DMTestFlags.ReturnTrue)) { returned.TryGetValueAsInteger(out int returnInt); Assert.IsTrue(returnInt != 0, "Test was expected to return TRUE"); } Cleanup(compiledFile); }
private static IEnumerable <object[]> GetTests() { Directory.SetCurrentDirectory(TestProject); foreach (string sourceFile in Directory.GetFiles("Tests", "*.dm", SearchOption.AllDirectories)) { DMTestFlags testFlags = GetDMTestFlags(sourceFile); if (testFlags.HasFlag(DMTestFlags.Ignore)) { continue; } yield return(new object[] { Path.GetFullPath(sourceFile), testFlags }); } }