/**
  * Compresse une variable à X caractères à partir de son nom d'origine et s'assure de l'unicité de son utilisation
  * @param	string	$pVariableName	Le nom de la variable d'origine
  * @param	int		$pTryNum		Le numéro d'essais de génération
  */
 private function _compressVariable($pVariableName, $pTryNum = 0)
 {
     if (isset($this->_assigned_variables[$pVariableName])) {
         return $this->_assigned_variables[$pVariableName];
     }
     $suffix = $pTryNum === 0 ? '' : $pTryNum;
     $pTryNum++;
     //Compression du nom de la variable, ajout du numéro d'essais
     $result = CopixFormatter::getReduced($pVariableName, 30 - strlen($suffix));
     $result .= $suffix;
     //On vérifie que le nom trouvé ne corresponds pas déjà à une variable existante.
     if (in_array($result, $this->_assigned_variables)) {
         return $this->_compressVariable($pVariableName, $pTryNum);
     }
     return $this->_assigned_variables[$pVariableName] = $result;
 }
 public function testReduce()
 {
     $this->assertTrue(strlen(CopixFormatter::getReduced('une_super_longue_variable_qui_tue_tellement_elle_est_longue', 20)) <= 20);
     $this->assertTrue(strlen(CopixFormatter::getReduced('uneSuperLongueVariable', 20)) <= 20);
     $this->assertEquals(strlen(CopixFormatter::getReduced('abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz', 20)), 20);
 }