Changeset 2884 for proto


Ignore:
Timestamp:
Feb 2, 2013, 3:27:48 AM (7 years ago)
Author:
ksherdy
Message:

Added JUnit assertions. Thread synchonization is an issue.

Location:
proto/juncoTestHarness/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • proto/juncoTestHarness/src/applications/TestDriver.java

    r2883 r2884  
    2121                StringBuffer stderr = null;
    2222               
     23               
     24               
     25                ASMEmuCommand cmd = null;
     26               
    2327                try {
    24                         (new ASMEmuCommand()).execute("/home/ken/Courses/2013/Spring/CMPT379/Development/workspace/juncoTestHarness/output/junco1/tshermer/other/good_booleanComparisons.asm", TestSuiteDefinitions.TIMEOUT);
     28                        cmd = new ASMEmuCommand();
     29                        cmd.execute("/home/ken/Courses/2013/Spring/CMPT379/Development/workspace/juncoTestHarness/output/junco1/tshermer/other/good_booleanComparisons.asm", 1);
    2530                } catch (IOException e) {
    2631                        // TODO Auto-generated catch block
     
    3338                        e.printStackTrace();
    3439                }               
     40               
     41                System.out.println(cmd.getStdout());
     42               
     43                System.out.println(cmd.getStderr());
     44               
     45                System.out.println("Done.");
    3546        }
    3647}
  • proto/juncoTestHarness/src/command/Command.java

    r2881 r2884  
    2424                Process process = runtime.exec(commandLine);
    2525               
     26               
    2627                /* Set up process I/O. */
     28               
    2729                BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
     30                stdout.append(stdoutReader.readLine());
     31               
    2832                String stdoutLine;
    2933        while ((stdoutLine = stdoutReader.readLine()) != null) {
    3034            stdout.append(stdoutLine);
     35            stderr.append("\n");
    3136        }
     37                stdoutReader.close();
    3238               
    33                 /* Set up process I/O. */
     39               
     40                /* Set up process I/O. */               
    3441                BufferedReader stderrReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
     42               
    3543                String stderrLine;
    3644                while ((stderrLine = stderrReader.readLine()) != null) {
    3745            stderr.append(stderrLine);
     46            stderr.append("\n");
    3847        }
     48       
     49                stderrReader.close();
    3950               
    4051                Worker worker = new Worker(process);
  • proto/juncoTestHarness/src/harness/ParameterizedTest.java

    r2883 r2884  
    9595        System.out.println("Test()");
    9696       
    97        
    9897        System.out.println(aut);
    9998                System.out.println(testCase);
    10099               
    101                
    102                 TestAssert.assertPass();
     100                assertTrue(true);
    103101    }
    104102
  • proto/juncoTestHarness/src/harness/SimpleTest.java

    r2883 r2884  
    2323
    2424public class SimpleTest {
    25 
    26         public static String testFilePath = "../junco/input/junco1/other/good_intComparisons.junco";
     25       
     26        public static String testFilePath = "../junco/input/junco1/other/good_parentheses.junco";
     27        //public static String testFilePath = "../junco/input/junco1/other/err_charConstant2.junco";
    2728        public static String targetDirPath = "temp/";
    2829       
     
    3132       
    3233        public static String testCategory;
    33         public static String expectedResult;
     34        public static String expectedResult = null;
    3435        public static String actualResult;
     36       
     37        public static boolean timedOut = false;
    3538       
    3639        @BeforeClass
     
    5861                File targetDir = new File(targetDirPath);
    5962
     63                TestType testType = TestTypeFactory.getTestType(testFile.getName());
     64                //boolean timedOut = false;
     65               
     66                //boolean timedOut = false;
     67               
    6068                // Expected
    6169                try {
     
    6674                                                                                                                                                targetDir,
    6775                                                                                                                                                testCategory);                 
     76                        // runtime - should never happen
    6877                } catch (IOException e) {
    69                         // TODO Auto-generated catch block
    7078                        e.printStackTrace();
    7179                } catch (InterruptedException e) {
    72                         // TODO Auto-generated catch block
    7380                        e.printStackTrace();
    7481                } catch (TimeoutException e) {
    75                         // TODO Auto-generated catch block
    7682                        e.printStackTrace();
     83                       
     84                        timedOut=true;
    7785                }
    78 
     86               
    7987                // Actual
    8088                try {
     
    93101                        // TODO Auto-generated catch block
    94102                        e.printStackTrace();
     103                       
     104                        timedOut=true;
    95105                }
    96106               
    97                 TestType getTestType = TestTypeFactory.getTestType(testFile.getName());
     107                TestAssert.assertTimedOutFalse(timedOut);
     108
     109                if (TestType.COMPILE_TIME_ERROR == testType) {
     110                        TestAssert.assertContainsCompileTimeErrorMsg(actualResult);
     111                       
     112                        // check .asm file not created ...
     113                       
     114                        return;
     115                }
    98116               
     117                if (TestType.RUNTIME_ERROR == testType) {
     118                        TestAssert.assertContainsRuntimeErrorMsg(actualResult);
     119                        return;                 
     120                }
     121                       
     122                if (TestType.GOOD == testType) {
     123                        TestAssert.assertActualEqualsExpected(expectedResult, actualResult);
     124                        return;
     125                }
    99126               
    100                
    101                 // if GOOD then return expected result
    102                
    103                 // if ERROR string
    104                
    105                 // if RUNTIME return string
    106                
    107                 fail("Not yet implemented");
     127                // throw RuntimeException - should never get here
    108128        }
    109 
    110129}
  • proto/juncoTestHarness/src/harness/TestSuiteDefinitions.java

    r2883 r2884  
    1010        public static final String      REFERENCE_COMPILER_DIR          = "../junco/bin/";
    1111        public static final String      COMPILER_QNAME                          = "applications.JuncoCompiler";
    12         public static final long                TIMEOUT                                         = 10000;
    13        
     12        public static final long                TIMEOUT                                         = 10;
     13
    1414        public static final String TEST_EXT     = ".junco";
    1515        public static final String ASM_EXT      = ".asm";
  • proto/juncoTestHarness/src/harness/helpers/TestAssert.java

    r2883 r2884  
    55public class TestAssert extends Assert {
    66
    7         public static void assertCompileTimeError() {           
    8                 assertTrue(false);
     7        public final static String COMPILE_TIME = "Compile time";
     8        public final static String RUNTIME = "Runtime";
     9       
     10        /*
     11         * If filename starts with err_, 
     12         * then the compiler should produce an error and not produce a .asm file.
     13         */
     14        public static void assertContainsCompileTimeErrorMsg(String result) {           
     15                assertTrue(result.contains(COMPILE_TIME));
    916        }
    1017
    11         public static void assertRuntimeError() {               
    12                 assertTrue(false);
     18        /*
     19         * If the test filename starts with rte_,
     20         * then the compiler should complete normally,
     21         * but running the output through ASMEmu should produce a runtime error.
     22         */
     23        public static void assertContainsRuntimeErrorMsg(String result) {               
     24                assertTrue(result.contains(RUNTIME));
    1325        }       
    1426       
    15         public static void assertPass() {
    16                 assertTrue(true);
     27        /* A "good" test, in that the compiler and the emulator should
     28         *      complete normally, with student output matching the output of my compiler.
     29         */
     30        public static void assertActualEqualsExpected(String expected, String actual) {
     31                assertTrue(actual.trim().equals(expected.trim()));
    1732        }
    1833       
    19         public static void assertNoRuntimeError() {
    20                 assertTrue(false);
    21         }
     34       
     35        public static void assertTimedOutFalse(boolean timedOut) {
     36                assertFalse(timedOut);
     37        }       
    2238       
    2339}
  • proto/juncoTestHarness/src/harness/helpers/TestRunner.java

    r2883 r2884  
    2424                                TestSuiteDefinitions.TIMEOUT);
    2525
     26                /*
    2627                System.out.println(juncoCmd.getStdout());
    2728                System.out.println(juncoCmd.getStderr());
     29                */
    2830               
    2931                String result = null;
    3032               
    31                 TestType juncoTestType = TestTypeFactory.getTestType(testFile.getName());
     33                TestType testType = TestTypeFactory.getTestType(testFile.getName());
     34
     35                String s = juncoCmd.getStderr();
    3236               
    33                 switch (juncoTestType) {
    34                
    35                         case GOOD:
    36                         case RUNTIME_ERROR:
    37                         String asmFilePath = makeASMFilePath(targetDirectory, testFile.getName());
    38                         ASMEmuCommand AsmCmd = new ASMEmuCommand();
    39                         AsmCmd.execute(asmFilePath, TestSuiteDefinitions.TIMEOUT);
    40                         result = AsmCmd.getStdout();                   
    41                         break;
    42                 case COMPILE_TIME_ERROR:       
    43                         result = juncoCmd.getStderr();
    44                         break;
    45                
     37                switch (testType) {
     38
     39        case COMPILE_TIME_ERROR:
     40                String stderr = juncoCmd.getStderr();
     41               
     42                if (stderr.isEmpty()) {
     43                        result = stderr;
     44                } else {
     45                        result = TestAssert.COMPILE_TIME + ": " + stderr;       
     46                }
     47               
     48                break;
     49       
     50        case RUNTIME_ERROR:
     51                case GOOD:
     52                        String asmFilePath = makeASMFilePath(targetDirectory, testFile.getName());
     53                ASMEmuCommand AsmCmd = new ASMEmuCommand();
     54                AsmCmd.execute(asmFilePath, TestSuiteDefinitions.TIMEOUT);
     55                result = AsmCmd.getStdout();                   
     56                break;
     57
    4658                }
    4759               
  • proto/juncoTestHarness/src/testcase/TestTypeFactory.java

    r2883 r2884  
    33
    44public class TestTypeFactory {
    5 
    6         private static final String GOOD_PREFIX = "good_";
     5       
    76        private static final String COMPILE_TIME_ERROR_PREFIX = "err_";
    87        private static final String RUNTIME_ERROR_PREFIX = "rte_";
     8        // private static final String GOOD_PREFIX = "good_";
    99       
    1010    public static TestType getTestType(String fileName) {
    11    
    12         if (fileName.startsWith(GOOD_PREFIX)) {
    13                
    14                 return TestType.GOOD;
    15                
    16         } else if (fileName.startsWith(COMPILE_TIME_ERROR_PREFIX)) {
    17                
     11                       
     12        if (fileName.startsWith(COMPILE_TIME_ERROR_PREFIX)) {           
     13       
    1814                return TestType.COMPILE_TIME_ERROR;
    1915               
     
    2319               
    2420        } else {
    25                
    26                 String msg = String.format("Message: %s Expected: %s Actual: %s",
    27                                 "Unknown test type.",
    28                                 GOOD_PREFIX + " || " + COMPILE_TIME_ERROR_PREFIX + " || " + RUNTIME_ERROR_PREFIX,
    29                                 fileName);
    30                
    31                 throw new RuntimeException(msg);
    32         }
     21               
     22                return TestType.GOOD;
     23        }       
    3324    }
    34        
    3525}
Note: See TracChangeset for help on using the changeset viewer.