Saving a bit of memory by using pretty function instead of full file name
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / tct-dali-toolkit-internal-core.cpp
index c80af33..0a37d05 100644 (file)
-#include <stdio.h>
 #include <string.h>
-#include "tct-dali-toolkit-internal-core.h"
-#include <stdlib.h>
 #include <getopt.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <vector>
-#include <map>
-
-int RunTestCase( struct testcase_s& testCase )
-{
-  int result = 1;
-  if( testCase.startup )
-  {
-    testCase.startup();
-  }
-  result = testCase.function();
-  if( testCase.cleanup )
-  {
-    testCase.cleanup();
-  }
-  return result;
-}
-
-#define MAX_NUM_CHILDREN 16
-
-struct TestCase
-{
-  int testCase;
-  const char* testCaseName;
-
-  TestCase()
-  : testCase(0),
-    testCaseName(NULL)
-  {
-  }
-
-  TestCase(int tc, const char* name)
-  : testCase(tc),
-    testCaseName(name)
-  {
-  }
-  TestCase(const TestCase& rhs)
-  : testCase(rhs.testCase),
-    testCaseName(rhs.testCaseName)
-  {
-  }
-  TestCase& operator=(const TestCase& rhs)
-  {
-    testCase = rhs.testCase;
-    testCaseName = rhs.testCaseName;
-    return *this;
-
-  }
-};
-
-
-typedef std::map<int, TestCase> RunningTestCases;
-
-// Constantly runs up to MAX_NUM_CHILDREN processes
-int RunAllInParallel(const char* processName, bool reRunFailed)
-{
-  int numFailures = 0;
-  int numPasses = 0;
-  int numTestCases = sizeof(tc_array)/sizeof(struct testcase_s) - 1;
-
-  RunningTestCases children;
-  std::vector<int> failedTestCases;
-
-  // Fork up to MAX_NUM_CHILDREN processes, then
-  // wait. As soon as a proc completes, fork the next.
-
-  int nextTestCase = 0;
-  int numRunningChildren = 0;
-  while( nextTestCase < numTestCases || numRunningChildren > 0)
-  {
-    if( nextTestCase < numTestCases )
-    {
-      while( numRunningChildren < MAX_NUM_CHILDREN )
-      {
-        int pid = fork();
-        if( pid == 0 ) // Child process
-        {
-          close(STDOUT_FILENO);
-          close(STDERR_FILENO);
-          exit( RunTestCase( tc_array[nextTestCase] ) );
-        }
-        else if(pid == -1)
-        {
-          perror("fork");
-          exit(2);
-        }
-        else // Parent process
-        {
-          TestCase tc(nextTestCase, tc_array[nextTestCase].name);
-          children[pid] = tc;
-          nextTestCase++;
-          numRunningChildren++;
-        }
-      }
-    }
-
-    int status=0;
-    int childPid = waitpid(-1, &status, 0);
-    if( childPid == -1 )
-    {
-      perror("waitpid");
-      exit(2);
-    }
-
-    if( WIFEXITED(status) )
-    {
-      if( childPid > 0 )
-      {
-        int testResult = WEXITSTATUS(status);
-        if( testResult )
-        {
-          printf("Test case %s failed: %d\n", children[childPid].testCaseName, testResult);
-          failedTestCases.push_back(children[childPid].testCase);
-          numFailures++;
-        }
-        else
-        {
-          numPasses++;
-        }
-        numRunningChildren--;
-      }
-    }
-
-    else if( WIFSIGNALED(status) )
-    {
-      if( childPid > 0 )
-      {
-        RunningTestCases::iterator iter = children.find(childPid);
-        if( iter != children.end() )
-        {
-          printf("Test case %s exited with signal %d\n", iter->second.testCaseName, WTERMSIG(status));
-          failedTestCases.push_back(iter->second.testCase);
-        }
-        else
-        {
-          printf("Unknown child process: %d signaled %d\n", childPid, WTERMSIG(status));
-        }
-
-        numFailures++;
-        numRunningChildren--;
-      }
-    }
-  }
-
-  printf("\rNumber of test passes: %d                                        \n", numPasses);
-  printf("Number of test failures: %d\n", numFailures);
-
-  if( reRunFailed )
-  {
-    for( unsigned int i=0; i<failedTestCases.size(); i++)
-    {
-      printf("Running test case %s:\n", tc_array[failedTestCases[i]].name );
-      RunTestCase( tc_array[failedTestCases[i] ] );
-    }
-  }
-
-  return numFailures;
-}
-
-int FindAndRunTestCase(const char* testCaseName)
-{
-  int result = 2;
-
-  for( int i = 0; tc_array[i].name; i++ )
-  {
-    if( !strcmp(testCaseName, tc_array[i].name) )
-    {
-      return RunTestCase( tc_array[i] );
-    }
-  }
-
-  printf("Unknown testcase name: \"%s\"\n", testCaseName);
-  return result;
-}
+#include <stdlib.h>
+#include <test-harness.h>
+#include "tct-dali-toolkit-internal-core.h"
 
 int main(int argc, char * const argv[])
 {
-  int result = -1;
+  int result = TestHarness::EXIT_STATUS_BAD_ARGUMENT;
 
-  const char* optString = "pr";
-  bool optParallel(false);
+  const char* optString = "r";
   bool optRerunFailed(false);
 
   int nextOpt = 0;
@@ -195,26 +17,24 @@ int main(int argc, char * const argv[])
     nextOpt = getopt( argc, argv, optString );
     switch(nextOpt)
     {
-      case 'p':
-        optParallel = true;
-        break;
       case 'r':
         optRerunFailed = true;
         break;
+      case '?':
+        TestHarness::Usage(argv[0]);
+        exit(TestHarness::EXIT_STATUS_BAD_ARGUMENT);
+        break;
     }
   } while( nextOpt != -1 );
 
-  if( optParallel )
+  if( optind == argc ) // no testcase name in argument list
   {
-    result = RunAllInParallel(argv[0], optRerunFailed);
+    result = TestHarness::RunAllInParallel(argv[0], tc_array, optRerunFailed);
   }
   else
   {
-    if (argc != 2) {
-      printf("Usage: %s <testcase name>\n", argv[0]);
-      return 2;
-    }
-    result = FindAndRunTestCase(argv[1]);
+    // optind is index of next argument - interpret as testcase name
+    result = TestHarness::FindAndRunTestCase(tc_array, argv[optind]);
   }
   return result;
 }