home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 July: Mac OS SDK / Dev.CD Jul 97 SDK1.toast / Development Kits (Disc 1) / Apple Shared Library Manager / ASLM Examples / TestTools / Sources / TestTaskScheduler.cp < prev    next >
Encoding:
Text File  |  1996-11-19  |  3.3 KB  |  130 lines  |  [TEXT/MPS ]

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