3,6 → 3,8 |
/** |
* Classe Controleur du module Test. |
* |
* TODO : refactoriser l'ensemble des tests! |
* |
* @package Referentiel |
* @category Php5.2 |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
139,6 → 141,10 |
|
*/ |
|
$donnees['tests'][] = $this->testerPresenceSyntaxe($noms); |
$donnees['tests'][] = $this->testerStatutOrigineSyntaxe($noms); |
$donnees['tests'][] = $this->testerStatutIntroductionSyntaxe($noms); |
$donnees['tests'][] = $this->testerStatutCultureSyntaxe($noms); |
|
//Debug::printr($this->manuel); |
$this->setSortie(self::RENDU_CORPS, $this->getVue('test', $donnees)); |
146,6 → 152,127 |
|
//+--------------------------------------------------------------------------------------------------------------+// |
// TESTS |
|
private function testerStatutCultureSyntaxe($noms) { |
$info = array('titre' => 'statut_culture -> syntaxe', |
'description' => "Le champ statut_culture peut contenir :\n". |
" - le symbole tiret «-» une autre information non référencée...\n". |
" - une première lettre en majuscule indiquant le code standard attribué à ce taxon.\n". |
" - Cette première lettre peut être suivie d'un tiret puis d'une deuxième lettre en majuscule indiquant ". |
"un code de présence spécifique au référentiel.", |
'resultat' => false); |
|
// Réalisation du test |
$noms_erreur = array(); |
foreach ($noms as $nom) { |
if ($nom['statut_culture'] != '') { |
if (!$this->verifierStatutCulture($nom['statut_culture'])) { |
$noms_erreur[] = array($nom['num_nom'], $nom['statut_culture']); |
} |
} |
} |
|
// Analyse des résultats |
if (count($noms_erreur) > 0) { |
$info['message']['entete'] = array('num_nom', 'statut_culture erroné'); |
$info['message']['lignes'] = $noms_erreur; |
} else { |
$info['resultat'] = true; |
} |
|
return $info; |
} |
|
private function testerStatutIntroductionSyntaxe($noms) { |
$info = array('titre' => 'statut_introduction -> syntaxe', |
'description' => "Le champ statut_introduction peut contenir :\n". |
" - le symbole tiret «-» une autre information non référencée...\n". |
" - une première lettre en majuscule indiquant le code standard attribué à ce taxon.\n". |
" - Cette première lettre peut être suivie d'un tiret puis d'une deuxième lettre en majuscule indiquant ". |
"un code de présence spécifique au référentiel.", |
'resultat' => false); |
|
// Réalisation du test |
$noms_erreur = array(); |
foreach ($noms as $nom) { |
if ($nom['statut_introduction'] != '') { |
if (!$this->verifierStatutIntroduction($nom['statut_introduction'])) { |
$noms_erreur[] = array($nom['num_nom'], $nom['statut_introduction']); |
} |
} |
} |
|
// Analyse des résultats |
if (count($noms_erreur) > 0) { |
$info['message']['entete'] = array('num_nom', 'statut_introduction erroné'); |
$info['message']['lignes'] = $noms_erreur; |
} else { |
$info['resultat'] = true; |
} |
|
return $info; |
} |
|
private function testerStatutOrigineSyntaxe($noms) { |
$info = array('titre' => 'statut_origine -> syntaxe', |
'description' => "Le champ statut_origine peut contenir :\n". |
" - le symbole tiret «-» une autre information non référencée...\n". |
" - une première lettre en majuscule indiquant le code standard attribué à ce taxon.\n". |
" - Cette première lettre peut être suivie d'un tiret puis d'une deuxième lettre en majuscule indiquant ". |
"un code de présence spécifique au référentiel.", |
'resultat' => false); |
|
// Réalisation du test |
$noms_erreur = array(); |
foreach ($noms as $nom) { |
if ($nom['statut_origine'] != '') { |
if (!$this->verifierStatutOrigine($nom['statut_origine'])) { |
$noms_erreur[] = array($nom['num_nom'], $nom['statut_origine']); |
} |
} |
} |
|
// Analyse des résultats |
if (count($noms_erreur) > 0) { |
$info['message']['entete'] = array('num_nom', 'statut_origine erroné'); |
$info['message']['lignes'] = $noms_erreur; |
} else { |
$info['resultat'] = true; |
} |
|
return $info; |
} |
|
private function testerPresenceSyntaxe($noms) { |
$info = array('titre' => 'presence -> syntaxe', |
'description' => "Le champ presence contient soit :\n". |
" - le symbole tiret «-» une autre information non référencée...\n". |
" - une première lettre en majuscule indiquant le code standard attribué à ce taxon.\n". |
" - Cette première lettre peut être suivie d'un tiret puis d'une deuxième lettre en majuscule indiquant ". |
"un code de présence spécifique au référentiel.", |
'resultat' => false); |
|
// Réalisation du test |
$noms_erreur = array(); |
foreach ($noms as $nom) { |
if ($nom['presence'] != '') { |
if (!$this->verifierPresence($nom['presence'])) { |
$noms_erreur[] = array($nom['num_nom'], $nom['presence']); |
} |
} |
} |
|
// Analyse des résultats |
if (count($noms_erreur) > 0) { |
$info['message']['entete'] = array('num_nom', 'presence erroné'); |
$info['message']['lignes'] = $noms_erreur; |
} else { |
$info['resultat'] = true; |
} |
|
return $info; |
} |
|
private function testerHybrideParent02Existence($noms) { |
$info = array('titre' => 'hybride_parent_02 -> existence', |
'description' => "Si le champ hybride_parent_02 contient un nombre alors il doit correspondre à une valeur du champ ". |
1842,6 → 1969,38 |
//+--------------------------------------------------------------------------------------------------------------+// |
// MÉTHODES COMMUNES aux TESTS |
|
private function verifierPresence($valeur) { |
$codes = $this->manuel['codes_presence']; |
$ok = $this->verifierStatuts($valeur, $codes); |
return $ok; |
} |
|
private function verifierStatutOrigine($valeur) { |
$codes = $this->manuel['codes_statuts_origine']; |
$ok = $this->verifierStatuts($valeur, $codes); |
return $ok; |
} |
|
private function verifierStatutIntroduction($valeur) { |
$codes = $this->manuel['codes_statuts_introduction']; |
$ok = $this->verifierStatuts($valeur, $codes); |
return $ok; |
} |
|
private function verifierStatutCulture($valeur) { |
$codes = $this->manuel['codes_statuts_culture']; |
$ok = $this->verifierStatuts($valeur, $codes); |
return $ok; |
} |
|
private function verifierStatuts($valeur, $codes) { |
$ok = true; |
if (!preg_match("/^(?:|-|[$codes](?:-[A-Z])?)$/", $valeur)) { |
$ok = false; |
} |
return $ok; |
} |
|
private function verifierBooleen($valeur) { |
$ok = true; |
if (!preg_match('/^1$/', $valeur)) { |