public static void TestCompileFile() { if (TestOff) { return; } Compiler Compiler = new Compiler(); Assert.That(Compiler != null, "Sanity Check #0"); string TestFileName = $"{RootPath}coverage/coverage.easly"; Exception ex; string NullString = null; ex = Assert.Throws <ArgumentNullException>(() => Compiler.Compile(NullString)); Assert.That(ex.Message == $"Value cannot be null.{NL}Parameter name: fileName", ex.Message); Compiler.Compile("notfound.easly"); Assert.That(!Compiler.ErrorList.IsEmpty && Compiler.ErrorList.At(0) is IErrorInputFileNotFound AsInputFileNotFound && AsInputFileNotFound.Message == "File not found: 'notfound.easly'.", ErrorListToString(Compiler)); using (FileStream fs = new FileStream(TestFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.None)) { Compiler.Compile(TestFileName); Assert.That(!Compiler.ErrorList.IsEmpty && Compiler.ErrorList.At(0) is IErrorInputFileInvalid, ErrorListToString(Compiler)); } Stream NullStream = null; ex = Assert.Throws <ArgumentNullException>(() => Compiler.Compile(NullStream)); Assert.That(ex.Message == $"Value cannot be null.{NL}Parameter name: stream", ex.Message); Compiler.Compile(TestFileName); Assert.That(Compiler.ErrorList.IsEmpty, ErrorListToString(Compiler)); string InvalidFile = File.Exists($"{RootPath}Test-Easly-Compiler.dll") ? $"{RootPath}Test-Easly-Compiler.dll" : $"{RootPath}Test-Easly-Compiler.csproj"; using (FileStream fs = new FileStream(InvalidFile, FileMode.Open, FileAccess.Read)) { Compiler.Compile(fs); Assert.That(!Compiler.ErrorList.IsEmpty && Compiler.ErrorList.At(0) is IErrorInputFileInvalid, ErrorListToString(Compiler)); } IRoot NullRoot = null; ex = Assert.Throws <ArgumentNullException>(() => Compiler.Compile(NullRoot)); Assert.That(ex.Message == $"Value cannot be null.{NL}Parameter name: root", ex.Message); using (FileStream fs = new FileStream(TestFileName, FileMode.Open, FileAccess.Read)) { Compiler.Compile(fs); Assert.That(Compiler.ErrorList.IsEmpty, ErrorListToString(Compiler)); } IRoot ClonedRoot = NodeHelper.DeepCloneNode(CoverageNode, cloneCommentGuid: true) as IRoot; NodeTreeHelper.SetGuidProperty(ClonedRoot.ClassBlocks.NodeBlockList[0].NodeList[0], nameof(IClass.ClassGuid), Guid.Empty); Assert.That(!NodeTreeDiagnostic.IsValid(ClonedRoot, assertValid: false)); Compiler.Compile(ClonedRoot); Assert.That(!Compiler.ErrorList.IsEmpty && Compiler.ErrorList.At(0) is IErrorInputRootInvalid, ErrorListToString(Compiler)); }