public void ShouldPassForValidJavaCode()
        {
            var compiler = GetCompiler();
            var dir      = GeneratedDirector();

            using (var workspace = new DisposableWorkspace(dir))
            {
                compiler.Compile(workspace.Path, OneSourceFileOfValidJavaCode(dir));
            }
        }
        public void ShouldBeValidInstructorJavaCode()
        {
            var reflector = GetJavaReflector();
            var dir       = GeneratedDirector();

            using (var workspace = new DisposableWorkspace(dir))
            {
                var java = OneTestFile(dir, ValidInstructorLoanTestJavaCode);
                reflector.Reflect(dir, $"{dir}\\", ref java);
            }
        }
        public void ShouldCreateMainClassForValidJavaCode()
        {
            var compiler = GetCompiler();
            var dir      = GeneratedDirector();

            using (var workspace = new DisposableWorkspace(dir))
            {
                compiler.Compile(workspace.Path, OneSourceFileOfValidJavaCode(dir));

                Assert.True(File.Exists(Path.Combine(workspace.Path, $"{ValidJavaCodeName}{ClassExtension}")));
            }
        }
        public void ShouldThrowForInvalidJavaCode()
        {
            var compiler = GetCompiler();
            var dir      = GeneratedDirector();

            using (var workspace = new DisposableWorkspace(dir))
            {
                var exception =
                    Record.Exception(() => compiler.Compile(dir, OneSourceFileOfInvalidJavaCode(dir)));
                Assert.IsAssignableFrom <EngineExceptionDto>(exception);
                Assert.True(((EngineExceptionDto)exception).Report != null);
            }
        }