public void RulesPluginBuilder_RulesFileValidation()
        {
            // Arrange
            MockJdkWrapper     mockJdkWrapper = new MockJdkWrapper();
            RulesPluginBuilder builder        = new RulesPluginBuilder(mockJdkWrapper, new MockMavenArtifactHandler(), new TestLogger());

            SetValidCoreProperties(builder);
            builder.SetLanguage("aLanguage");

            // 1. Rules file not specified -> error
            AssertException.Expect <InvalidOperationException>(() => builder.Build());

            // 2. Non-existent rules file specified -> error
            string testDir   = TestUtils.EnsureTestDirectoryExists(this.TestContext);
            string rulesFile = Path.Combine(testDir, "missingFile.txt");

            mockJdkWrapper.AssertCodeNotCompiled();

            builder.SetRulesFilePath(rulesFile);
            FileNotFoundException ex = AssertException.Expect <FileNotFoundException>(() => builder.Build());

            Assert.AreEqual(ex.FileName, rulesFile);
            mockJdkWrapper.AssertCodeNotCompiled();

            // 3. Rules file exists -> succeeds
            AddValidDummyRulesFiles(builder);
            builder.Build(); // should succeed
            mockJdkWrapper.AssertJarBuilt();
        }
        public void RulesPluginBuilder_SqaleFileValidation()
        {
            // Arrange
            string testDir = TestUtils.EnsureTestDirectoryExists(this.TestContext);

            MockJdkWrapper     mockJdkWrapper = new MockJdkWrapper();
            RulesPluginBuilder builder        = new RulesPluginBuilder(mockJdkWrapper, new MockMavenArtifactHandler(), new TestLogger());

            SetValidCoreProperties(builder);
            builder.SetLanguage("aLanguage");
            AddValidDummyRulesFiles(builder);

            // 1. Sqale file not specified -> ok
            builder.Build();

            // 2. Non-existent Sqale file specified -> error
            mockJdkWrapper.ClearCalledMethodList();

            string sqaleFile = Path.Combine(testDir, "missingFile.txt");

            builder.SetSqaleFilePath(sqaleFile);
            FileNotFoundException ex = AssertException.Expect <FileNotFoundException>(() => builder.Build());

            Assert.AreEqual(ex.FileName, sqaleFile);
            mockJdkWrapper.AssertCodeNotCompiled();

            // 3. Sqale file exists -> succeeds
            sqaleFile = TestUtils.CreateTextFile("sqale.txt", testDir, "dummy sqale file");
            builder.SetSqaleFilePath(sqaleFile);
            builder.Build(); // should succeed
            mockJdkWrapper.AssertJarBuilt();
        }
        public void RulesPluginBuilder_RulesFileValidation()
        {
            // Arrange
            MockJdkWrapper mockJdkWrapper = new MockJdkWrapper();
            RulesPluginBuilder builder = new RulesPluginBuilder(mockJdkWrapper, new MockMavenArtifactHandler(), new TestLogger());
            SetValidCoreProperties(builder);
            builder.SetLanguage("aLanguage");

            // 1. Rules file not specified -> error
            AssertException.Expect<InvalidOperationException>(() => builder.Build());

            // 2. Non-existent rules file specified -> error
            string testDir = TestUtils.EnsureTestDirectoryExists(this.TestContext);
            string rulesFile = Path.Combine(testDir, "missingFile.txt");
            mockJdkWrapper.AssertCodeNotCompiled();

            builder.SetRulesFilePath(rulesFile);
            FileNotFoundException ex = AssertException.Expect<FileNotFoundException>(() => builder.Build());
            Assert.AreEqual(ex.FileName, rulesFile);
            mockJdkWrapper.AssertCodeNotCompiled();

            // 3. Rules file exists -> succeeds
            AddValidDummyRulesFiles(builder);
            builder.Build(); // should succeed
            mockJdkWrapper.AssertJarBuilt();
        }
        public void RulesPluginBuilder_SqaleFileValidation()
        {
            // Arrange
            string testDir = TestUtils.EnsureTestDirectoryExists(this.TestContext);

            MockJdkWrapper mockJdkWrapper = new MockJdkWrapper();
            RulesPluginBuilder builder = new RulesPluginBuilder(mockJdkWrapper, new MockMavenArtifactHandler(), new TestLogger());
            SetValidCoreProperties(builder);
            builder.SetLanguage("aLanguage");
            AddValidDummyRulesFiles(builder);

            // 1. Sqale file not specified -> ok
            builder.Build();

            // 2. Non-existent Sqale file specified -> error
            mockJdkWrapper.ClearCalledMethodList();

            string sqaleFile = Path.Combine(testDir, "missingFile.txt");
            builder.SetSqaleFilePath(sqaleFile);
            FileNotFoundException ex = AssertException.Expect<FileNotFoundException>(() => builder.Build());
            Assert.AreEqual(ex.FileName, sqaleFile);
            mockJdkWrapper.AssertCodeNotCompiled();

            // 3. Sqale file exists -> succeeds
            sqaleFile = TestUtils.CreateTextFile("sqale.txt", testDir, "dummy sqale file");
            builder.SetSqaleFilePath(sqaleFile);
            builder.Build(); // should succeed
            mockJdkWrapper.AssertJarBuilt();
        }