home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 February: Tool Chest / Dev.CD Feb 95 / Dev.CD Feb 95.toast / New System Software Extensions / ASLM SDK v1.1.2 / ASLM Examples / TestTools / Sources / TestTaskScheduler.cp < prev    next >
Encoding:
Text File  |  1994-11-21  |  3.2 KB  |  125 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        TestTaskScheduler.cp
  3.  
  4.     Contains:    Tester for the TTaskScheduler class
  5.  
  6.     Copyright:    © 1991-1992 by Apple Computer, Inc., all rights reserved.
  7.  
  8. */
  9.  
  10. #ifndef __TESTTASKSCHEDULER__
  11. #include "TestTaskScheduler.h"
  12. #endif
  13.  
  14. pascal void SystemTask(void)
  15.     = 0xA9B4; 
  16.  
  17. /**********************************************************************
  18. ** TTaskOperation methods
  19. ***********************************************************************/
  20.  
  21. TTaskOperation::TTaskOperation()
  22. {
  23.     fCount = 0;
  24. }
  25.  
  26. TTaskOperation::~TTaskOperation()
  27. {}
  28.  
  29. void TTaskOperation::Process()
  30. {
  31.     ++fCount;
  32. }
  33.  
  34. /**********************************************************************
  35. ** PUBLIC Constructor/Destructor 
  36. ***********************************************************************/
  37.  
  38. Constructor(TaskScheduler)
  39. Destructor(TaskScheduler)
  40.  
  41. /**********************************************************************
  42. ** PUBLIC InitTest
  43. ***********************************************************************/
  44.  
  45. void TTestTaskScheduler :: InitTest(Boolean, Boolean, int, char**)
  46. {    
  47.     TStandardPool* pool = GetPool();
  48.  
  49.     if (pool == NULL)
  50.     {
  51.         Printf("### ERROR: There is no global pool\n");
  52.         return;
  53.     }
  54.         
  55.     if ((fTest = new (pool) TTaskScheduler) == NULL)
  56.     {
  57.         Printf("ERROR: Couldn't created a Task Scheduler\n");
  58.     }
  59. }
  60.  
  61. /**********************************************************************
  62. ** PUBLIC RunTestIteration
  63. ***********************************************************************/
  64.  
  65. void TTestTaskScheduler :: RunTestIteration(Boolean verbose, Boolean)
  66. {
  67.     if (verbose)
  68.         Printf(" INFO: Creating 3 TTaskOperation objects\n");
  69.     TTaskOperation*    op1 = new TTaskOperation;
  70.     TTaskOperation*    op2 = new TTaskOperation;
  71.     TTaskOperation*    op3 = new TTaskOperation;
  72.     
  73.     if (verbose)
  74.         Printf(" INFO: Scheduling 3 TTaskOperation objects\n");
  75.     fTest->Schedule(op1);
  76.     fTest->Schedule(op2);
  77.     fTest->Schedule(op3);
  78.     
  79.     if (fTest->IsEmpty())
  80.         Printf("ERROR: TTaskScheduler::IsEmpty() returned true, but things are scheduled!\n");
  81.  
  82.     if (verbose)
  83.         Printf(" INFO: Waiting for 5 seconds to be sure they don't fire\n");
  84.     
  85.     TStopwatch    watch;
  86.     while ((&watch)->ElapsedSeconds() < 5)
  87.         ;
  88.     
  89.     if (op1->fCount)
  90.         Printf("ERROR: Operation #1 fired before we invoked System Task\n");
  91.     if (op2->fCount)
  92.         Printf("ERROR: Operation #2 fired before we invoked System Task\n");
  93.     if (op3->fCount)
  94.         Printf("ERROR: Operation #3 fired before we invoked System Task\n");
  95.     if (verbose)
  96.         Printf(" INFO: Invoking System Task\n");
  97.     SystemTask();
  98.     if (op1->fCount != 1)
  99.         Printf("ERROR: Operation #1's count is %u instead of 1\n", op1->fCount);
  100.     if (op2->fCount != 1)
  101.         Printf("ERROR: Operation #2's count is %u instead of 1\n", op2->fCount);
  102.     if (op3->fCount != 1)
  103.         Printf("ERROR: Operation #3's count is %u instead of 1\n", op3->fCount);
  104.         
  105.     if (verbose)
  106.         Printf(" INFO: Test complete. Deleting 3 TTaskOperation objects\n");
  107.  
  108.     if (!fTest->IsEmpty())
  109.         Printf("ERROR: IsEmpty is not set for the TTaskScheduler\n");
  110.  
  111.     delete op1;
  112.     delete op2;
  113.     delete op3;
  114. }
  115.  
  116. /**********************************************************************
  117. ** PUBLIC EndTest
  118. ***********************************************************************/
  119.  
  120. void TTestTaskScheduler :: EndTest(Boolean, Boolean)
  121. {
  122.     delete fTest;
  123.     fTest = NULL;
  124. }
  125.