/**
  * A method to test the scalePriorities() method.
  *
  * Requirements
  * Test 1: Test with all zero values, ensure initial all zero values returned.
  * Test 2: Test with zero advertisement values, positive blank value, ensure
  *         all zero values returned for advertisements, 1 for blank.
  * Test 3: Test with a mix of values, and ensure they are correctly scaled.
  */
 function testScalePriorities()
 {
     // Mock the OA_Dal_Maintenance_Priority class used in the constructor method
     $oDal = new $this->mockDal($this);
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->register('OA_Dal_Maintenance_Priority', $oDal);
     // Partially mock the OA_Maintenance_Priority_AdServer_Task_PriorityCompensation class
     $oPriorityCompensation = new PartialMock_OA_Maintenance_Priority_AdServer_Task_PriorityCompensation($this);
     $oPriorityCompensation->setReturnReference('_getDal', $oDal);
     $oPriorityCompensation->setReturnReference('_getOperationIntUtils', $oOperationInterval);
     $oPriorityCompensation->__construct();
     // Test 1
     $aData = array('ads' => array(0 => array('priority' => 0), 1 => array('priority' => 0), 2 => array('priority' => 0), 9 => array('priority' => 0)), 'blank' => 0);
     $oPriorityCompensation->scalePriorities($aData);
     $this->assertEqual($aData['ads'][0]['priority'], 0);
     $this->assertEqual($aData['ads'][1]['priority'], 0);
     $this->assertEqual($aData['ads'][2]['priority'], 0);
     $this->assertEqual($aData['ads'][9]['priority'], 0);
     $this->assertEqual($aData['blank'], 0);
     // Test 2
     $aData = array('ads' => array(0 => array('priority' => 0), 1 => array('priority' => 0), 2 => array('priority' => 0), 9 => array('priority' => 0)), 'blank' => 37);
     $oPriorityCompensation->scalePriorities($aData);
     $this->assertEqual($aData['ads'][0]['priority'], 0);
     $this->assertEqual($aData['ads'][1]['priority'], 0);
     $this->assertEqual($aData['ads'][2]['priority'], 0);
     $this->assertEqual($aData['ads'][9]['priority'], 0);
     $this->assertEqual($aData['blank'], 1);
     // Test 3
     $aData = array('ads' => array(0 => array('priority' => 10), 1 => array('priority' => 20), 2 => array('priority' => 30), 9 => array('priority' => 40)), 'blank' => 0);
     $oPriorityCompensation->scalePriorities($aData);
     $this->assertEqual($aData['ads'][0]['priority'], 0.1);
     $this->assertEqual($aData['ads'][1]['priority'], 0.2);
     $this->assertEqual($aData['ads'][2]['priority'], 0.3);
     $this->assertEqual($aData['ads'][9]['priority'], 0.4);
     $this->assertEqual($aData['blank'], 0);
     $aData = array('ads' => array(0 => array('priority' => 5), 1 => array('priority' => 20), 2 => array('priority' => 30), 9 => array('priority' => 40)), 'blank' => 5);
     $oPriorityCompensation->scalePriorities($aData);
     $this->assertEqual($aData['ads'][0]['priority'], 0.05);
     $this->assertEqual($aData['ads'][1]['priority'], 0.2);
     $this->assertEqual($aData['ads'][2]['priority'], 0.3);
     $this->assertEqual($aData['ads'][9]['priority'], 0.4);
     $this->assertEqual($aData['blank'], 0.05);
 }