Subversion Repositories Applications.referentiel

Compare Revisions

Ignore whitespace Rev 308 → Rev 309

/trunk/scripts/modules/tests/Tests.php
19,7 → 19,7
class Tests extends ScriptCommande {
const SCRIPT_NOM = 'tests';
const MANUEL_VERSION = '4.3';
const MANUEL_VERSION = '4.4';
private $projet = null;
private $traitement = null;
30,7 → 30,8
private $tests = null;
private $colonnes = null;
private $analyses = null;
private $noms = null;
private $noms = null;
private $erreurs = array();
private $resultatDao = null;
private $traitementDao = null;
128,6 → 129,9
$this->lancerTestUnitaire($info);
}
}
$info = $this->construireTotalErreur();
$this->traiterResultatTest($info);
}
private function getInfosTest($numero) {
138,35 → 142,70
$info['resultat'] = false;
return $info;
}
public function lancerTestUnitaire($info) {
public function lancerTestUnitaire($info) {
Debug::printr($info['numero'].'::'.$info['methode']);
$methodeDeTest = $info['methode'];
$erreurs = $this->$methodeDeTest();
// Analyse des résultats
if (isset($erreurs['special'])) {
$info = $erreurs;
} else {
if (count($erreurs) > 0) {
$info['message']['entete'] = explode(',', $info['entete']);
if (isset($info['title'])) {
$info['message']['title'] = explode(';', $info['title']);
}
$info['message']['lignes'] = $erreurs;
unset($erreurs);
} else {
$info['resultat'] = true;
}
}
$methodeDeTest = $info['methode'];
$erreurs = $this->$methodeDeTest();
// Analyse des résultats
if (isset($erreurs['special'])) {
$info = $erreurs;
} else {
$info = $this->construireResultatErreur($erreurs, $info);
}
$this->traiterResultatTest($info);
if ($info['numero'] < 5) {
return ($info['resultat'] ? '1' : '0');
}
}
}
private function ajouterNumNomErreursTest($num_nom) {
if (count($this->erreurs) < 1000) {
if (isset($this->erreurs[$num_nom])) {
$this->erreurs[$num_nom] += 1;
} else {
$this->erreurs[$num_nom] = 1;
}
}
}
private function construireResultatErreur($erreurs, $info) {
if (count($erreurs) > 0) {
$info['message']['entete'] = explode(',', $info['entete']);
if (isset($info['title'])) {
$info['message']['title'] = explode(';', $info['title']);
}
$info['message']['lignes'] = $erreurs;
unset($erreurs);
} else {
$info['resultat'] = true;
}
return $info;
}
private function construireTotalErreur() {
if (count($this->erreurs) > 0) {
arsort($this->erreurs);
$info['abr'] = "erreurs par num_nom";
$info['nom'] = "erreurs -> num_nom";
$info['description'] = "nombre d'erreurs détecté par num_nom";
$info['numero'] = "0";
$info['message']['entete'] = array('num-nom', "nombre d'erreurs");
foreach ($this->erreurs as $num_nom=>$nombre) {
$erreurs[] = array(0 => $num_nom, 1 => $nombre);
}
$info['message']['lignes'] = $erreurs;
unset($this->erreurs);
} else {
$info['resultat'] = true;
}
return $info;
}
private function verifierResultats(&$resultats) {
$ok = true;
foreach ($resultats as $resultat) {
208,7 → 247,7
$nbre_colonnes = count($this->colonnes);
$info['message'] = $nbre_colonnes;
if ($nbre_colonnes >= 35) {
if ($nbre_colonnes >= 37) {
$info['resultat'] = true;
}
330,6 → 369,7
foreach ($this->noms as &$nom) {
if ($nom['num_nom'] <= 0) {
$noms_erreur[] = array($nom['num_nom']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
return $noms_erreur;
343,11 → 383,13
foreach ($this->noms as &$nom) {
if ($nom['num_nom_retenu'] != '' && $nom['num_nom_retenu'] <= 0) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_nom_retenu']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
return $noms_erreur;
}
/**
* Test #08
*/
357,6 → 399,7
if ($nom['num_nom_retenu'] != '' && $nom['num_nom_retenu'] != $nom['num_nom']) {
if ($nom['num_nom_retenu'] != 0 && !isset($this->noms[$nom['num_nom_retenu']])) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_nom_retenu'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
373,6 → 416,7
if ($nom['num_nom_retenu'] != 0 && isset($this->noms[$nom['num_nom_retenu']])) {
if ($this->noms[$nom['num_nom_retenu']]['exclure_taxref'] != 0) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_nom_retenu'], $this->noms[$nom['num_nom_retenu']]['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
390,6 → 434,7
if ($nom['num_nom_retenu'] != 0 && isset($this->noms[$nom['num_nom_retenu']])) {
if ($this->noms[$nom['num_nom_retenu']]['num_nom'] != $this->noms[$nom['num_nom_retenu']]['num_nom_retenu']) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_nom_retenu'], $this->noms[$nom['num_nom_retenu']]['num_nom_retenu']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
397,9 → 442,28
return $noms_erreur;
}
/**
* Test #11
*/
private function testerDoublonsNomSci() {
$noms_erreur = array();
$noms_complets = array();
foreach ($this->noms as &$nom) {
$a = $nom['nom_sci']." ".$nom['auteur']." ".$nom['nom_addendum']." ".$nom['biblio_origine'];
if (isset($noms_complets[$a])) {
$noms_erreur[] = array($nom['num_nom'], $a, $noms_complets[$a], $nom['exclure_taxref'], $nom['homonyme']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
} else {
$noms_complets[$a] = $nom['num_nom'];
}
}
return $noms_erreur;
}
/**
* Test #11
* Test #12
*/
private function testerNumTaxSupEgalZeroUnique() {
$noms_erreur = array();
406,6 → 470,7
foreach ($this->noms as &$nom) {
if (preg_match('/^0$/', $nom['num_tax_sup'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_tax_sup']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
// Ce test est spécial car le nombre de noms en erreurs doit être supérieur à 1 et non à 0 pour être KO.
416,7 → 481,7
}
/**
* Test #12
* Test #13
*/
private function testerTaxSupPourTaxon() {
$noms_erreur = array();
423,6 → 488,7
foreach ($this->noms as &$nom) {
if ($nom['num_nom_retenu'] != $nom['num_nom'] && $nom['num_tax_sup'] != '') {
$noms_erreur[] = array($nom['num_nom'], $nom['num_tax_sup'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
return $noms_erreur;
429,7 → 495,7
}
/**
* Test #13
* Test #14
*/
private function testerExistenceTaxonSuperieur() {
$noms_erreur = array();
437,6 → 503,7
if ($nom['num_nom_retenu'] == $nom['num_nom']) {
if ($nom['num_tax_sup'] != 0 && !isset($this->noms[$nom['num_tax_sup']])) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_tax_sup'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
444,7 → 511,7
}
/**
* Test #72
* Test #15
*/
private function testerClassificationEspece() {
$noms_erreur = array();
454,6 → 521,7
$nom_sup = $this->noms[$nom['num_tax_sup']];
if ($nom_sup['rang'] != 220 ) {
$noms_erreur[] = array($nom['num_nom'], $nom['rang'], $nom_sup['num_nom'], $nom_sup['rang'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
462,7 → 530,7
}
/**
* Test #14
* Test #16
*/
private function testerTransmissionTaxonSuperieur() {
$noms_erreur = array();
471,6 → 539,7
if ($nom['num_tax_sup'] != 0 && isset($this->noms[$nom['num_tax_sup']])) {
if ($this->noms[$nom['num_tax_sup']]['exclure_taxref'] != 0) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_tax_sup'], $this->noms[$nom['num_tax_sup']]['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
480,7 → 549,7
/**
* Test #15
* Test #17
*/
private function testerClassificationRang() {
$noms_erreur = array();
495,6 → 564,7
// Prise en compte de l'exception des clades
if (! ($nom_sup['rang'] == 70 && $nom['rang'] == 70)) {
$noms_erreur[] = array($nom['num_nom'], $nom['rang'], $nom_sup['num_nom'], $nom_sup['rang'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
504,7 → 574,7
}
/**
* Test #16
* Test #18
*/
private function testerClassification() {
$noms_erreur = array();
522,6 → 592,7
$this->noms_ok[$nom['num_nom']] = $classif_ok;
} else {
$noms_erreur[] = array($nom['num_nom'], $classif_ok, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
547,6 → 618,7
$retour = $this->remonterClassif($this->noms[$nom['num_tax_sup']]);
if ($retour === true) {
$this->noms_ok[$nom['num_tax_sup']] = true;
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
return $retour;
}
556,7 → 628,7
}
/**
* Test #17
* Test #19
*/
private function testerRang() {
$rangs = array_flip(explode(',', $this->manuel['rangs']));
566,6 → 638,7
foreach ($this->noms as &$nom) {
if (!isset($rangs[$nom['rang']])) {
$noms_erreur[] = array($nom['num_nom'], $nom['rang'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
return $noms_erreur;
572,7 → 645,7
}
/**
* Test #18
* Test #20
*/
private function testerNomCompletSupraGenerique() {
$noms_erreur = array();
584,6 → 657,7
if ($nom['nom_sci'] != $nom_sci_ideal) {
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
591,7 → 665,7
}
/**
* Test #19
* Test #21
*/
private function testerNomCompletGenre() {
$noms_erreur = array();
603,6 → 677,7
if ($nom['nom_sci'] != $nom_sci_ideal) {
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
610,7 → 685,7
}
/**
* Test #20
* Test #22
*/
private function testerNomCompletInfraGenre() {
$noms_erreur = array();
631,6 → 706,7
if ($nom['nom_sci'] != $nom_sci_ideal) {
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
638,7 → 714,7
}
/**
* Test #21
* Test #23
*/
private function testerNomCompletEspece() {
$noms_erreur = array();
657,6 → 733,7
if ($nom['nom_sci'] != $nom_sci_ideal) {
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $erreur, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
664,7 → 741,7
}
/**
* Test #22
* Test #24
*/
private function testerNomCompletInfraSpecifique() {
$noms_erreur = array();
685,6 → 762,7
if ($nom['nom_sci'] != $nom_sci_ideal) {
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $erreur, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
692,7 → 770,7
}
/**
* Test #23
* Test #25
*/
private function testerNomSupraGeneriqueEspaces() {
$noms_erreur = array();
701,6 → 779,7
if (preg_match('/(?:^\s+(?!:\s+)|(?!:\s+)\s+$)/', $nom['nom_supra_generique'])) {
$nom_supra_generique_traite = $this->repererEspace($nom['nom_supra_generique']);
$noms_erreur[] = array($nom['num_nom'], $nom_supra_generique_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
708,7 → 787,7
}
/**
* Test #24
* Test #26
*/
private function testerNomSupraGeneriqueSyntaxe() {
$noms_erreur = array();
717,6 → 796,7
if (!preg_match('/^[A-ZÄËḦÏÖÜẄẌŸ][-a-zäëḧïöẗüẅẍÿ]+$/', $nom['nom_supra_generique'])) {
$nom_supra_generique_traite = $this->repererEspace($nom['nom_supra_generique']);
$noms_erreur[] = array($nom['num_nom'], $nom_supra_generique_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
724,7 → 804,7
}
/**
* Test #25
* Test #27
*/
private function testerNomSupraGeneriqueRang() {
$noms_erreur = array();
732,6 → 812,7
if ($nom['nom_supra_generique'] != '') {
if ($nom['rang'] >= $this->manuel['rang_genre']) {
$noms_erreur[] = array($nom['num_nom'], $nom['nom_sci'], $nom['rang'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
739,7 → 820,7
}
/**
* Test #26
* Test #28
*/
private function testerGenreEspaces() {
$noms_erreur = array();
748,6 → 829,7
if (preg_match('/(?:^\s+(?!:\s+)|(?!:\s+)\s{2,}(?!:\s+)|(?!:\s+)\s+$)/', $nom['genre'])) {
$nom_traite = $this->repererEspace($nom['genre']);
$noms_erreur[] = array($nom['num_nom'], $nom_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
755,7 → 837,7
}
/**
* Test #27
* Test #29
*/
private function testerGenreSyntaxe() {
$noms_erreur = array();
766,6 → 848,7
if (!(preg_match('/^[+x]$/', $mot) || $this->verifierEpitheteGenre($mot))) {
$nom_traite = $this->repererEspace($nom['genre']);
$noms_erreur[] = array($nom['num_nom'], $nom_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
break;
}
}
775,7 → 858,7
}
/**
* Test #28
* Test #30
*/
private function testerGenreRang() {
$noms_erreur = array();
783,6 → 866,7
if ($nom['genre'] != '') {
if ($nom['rang'] < $this->manuel['rang_genre']) {
$noms_erreur[] = array($nom['num_nom'], $nom['nom_sci'], $nom['rang'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
790,7 → 874,7
}
/**
* Test #29
* Test #31
*/
private function testerEpitheteInfraGeneriqueSyntaxe() {
$noms_erreur = array();
799,6 → 883,7
if (!preg_match('/^[A-ZÄËḦÏÖÜẄẌŸ][-a-zäëḧïöẗüẅẍÿ]+/', $nom['epithete_infra_generique'])) {
$epithete_traite = $this->repererEspace($nom['epithete_infra_generique']);
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
806,7 → 891,7
}
/**
* Test #30
* Test #32
*/
private function testerEpitheteInfraGeneriqueRang() {
$noms_erreur = array();
814,6 → 899,7
if ($nom['epithete_infra_generique'] != '') {
if ($nom['rang'] <= $this->manuel['rang_genre'] || $nom['rang'] >= $this->manuel['rang_sp']) {
$noms_erreur[] = array($nom['num_nom'], $nom['nom_sci'], $nom['rang'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
821,7 → 907,7
}
/**
* Test #31
* Test #33
*/
private function testerEpitheteInfraGeneriqueEspaces() {
$noms_erreur = array();
830,6 → 916,7
if (preg_match('/(?:^\s+(?!:\s+)|(?!:\s+)\s{2,}(?!:\s+)|(?!:\s+)\s+$)/', $nom['epithete_infra_generique'])) {
$epithete_traite = $this->repererEspace($nom['epithete_infra_generique']);
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
837,7 → 924,7
}
/**
* Test #32
* Test #34
*/
private function testerEpitheteSpEspaces() {
$noms_erreur = array();
846,6 → 933,7
if (preg_match('/(?:^\s+(?!:\s+)|(?!:\s+)\s{2,}(?!:\s+)|(?!:\s+)\s+$)/', $nom['epithete_sp'])) {
$epithete_traite = $this->repererEspace($nom['epithete_sp']);
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
853,7 → 941,7
}
/**
* Test #33
* Test #35
*/
private function testerEpitheteSpSyntaxe() {
$noms_erreur = array();
868,6 → 956,7
($formule_hybridite && $this->verifierEpitheteGenre($mot) && !$this->verifierEstAbbreviationInfraSp($mot)))) {
$epithete_traite = $this->repererEspace($nom['epithete_sp']);
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
break;
}
}
877,7 → 966,7
}
/**
* Test #34
* Test #36
*/
private function testerEpitheteSpRang() {
$noms_erreur = array();
885,6 → 974,7
if ($nom['epithete_sp'] != '') {
if ($nom['rang'] < $this->manuel['rang_sp']) {
$noms_erreur[] = array($nom['num_nom'], $nom['nom_sci'], $nom['rang'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
892,7 → 982,7
}
/**
* Test #35
* Test #37
*/
private function testerTypeEpitheteEspaces() {
$noms_erreur = array();
901,6 → 991,7
if (preg_match('/\s+/', $nom['type_epithete'])) {
$valeur_traitee = $this->repererEspace($nom['epithete_sp']);
$noms_erreur[] = array($nom['num_nom'], $valeur_traitee, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
908,7 → 999,7
}
/**
* Test #36
* Test #38
*/
private function testerTypeEpitheteSyntaxe() {
$noms_erreur = array();
916,6 → 1007,7
if ($nom['type_epithete'] != '') {
if (!$this->verifierTypeEpithete($nom['type_epithete'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['type_epithete'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
923,7 → 1015,7
}
/**
* Test #37
* Test #39
*/
private function testerTypeEpitheteHybridite() {
$noms_erreur = array();
931,6 → 1023,7
if ($nom['type_epithete'] != '') {
if (preg_match('/^(?:n-|notho-)/', $nom['type_epithete'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['type_epithete'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
938,7 → 1031,7
}
/**
* Test #38
* Test #40
*/
private function testerEpitheteInfraSpEspaces() {
$noms_erreur = array();
947,6 → 1040,7
if (preg_match('/(?:^\s+(?!:\s+)|(?!:\s+)\s{2,}(?!:\s+)|(?!:\s+)\s+$)/', $nom['epithete_infra_sp'])) {
$epithete_traite = $this->repererEspace($nom['epithete_infra_sp']);
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
954,7 → 1048,7
}
/**
* Test #39
* Test #41
*/
private function testerEpitheteInfraSpSyntaxe() {
$noms_erreur = array();
972,6 → 1066,7
$formule_hybridite_valide)) {
$epithete_traite = $this->repererEspace($nom['epithete_infra_sp']);
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
break;
}
}
979,6 → 1074,7
if($formule_hybridite && !$hybride_contient_abbreviation_infra_sp) {
$epithete_traite = $this->repererEspace($nom['epithete_infra_sp']);
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
986,7 → 1082,7
}
/**
* Test #40
* Test #42
*/
private function testerEpitheteInfraSpRang() {
$noms_erreur = array();
994,6 → 1090,7
if ($nom['epithete_infra_sp'] != '') {
if ($nom['rang'] < $this->manuel['rang_sp']) {
$noms_erreur[] = array($nom['num_nom'], $nom['nom_sci'], $nom['rang'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1001,7 → 1098,7
}
/**
* Test #41
* Test #43
*/
private function testerGroupeCultivarSyntaxe() {
$noms_erreur = array();
1010,6 → 1107,7
if (!$this->verifierEpitheteGroupeCultivar($nom['cultivar_groupe'])) {
$epithete_traite = $this->repererEspace($nom['cultivar_groupe']);
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1017,7 → 1115,7
}
/**
* Test #42
* Test #44
*/
private function testerGroupeCultivarRang() {
$noms_erreur = array();
1025,6 → 1123,7
if ($nom['cultivar_groupe'] != '') {
if ($nom['rang'] < $this->manuel['rang_genre']) {
$noms_erreur[] = array($nom['num_nom'], $nom['nom_sci'], $nom['rang'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1032,7 → 1131,7
}
/**
* Test #43
* Test #45
*/
private function testerCultivarSyntaxe() {
$noms_erreur = array();
1041,6 → 1140,7
if (!$this->verifierEpitheteCultivar($nom['cultivar'])) {
$epithete_traite = $this->repererEspace($nom['cultivar']);
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1048,7 → 1148,7
}
/**
* Test #44
* Test #46
*/
private function testerCultivarRang() {
$noms_erreur = array();
1056,6 → 1156,7
if ($nom['cultivar'] != '') {
if ($nom['rang'] < $this->manuel['rang_genre']) {
$noms_erreur[] = array($nom['num_nom'], $nom['nom_sci'], $nom['rang'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1063,7 → 1164,7
}
/**
* Test #45
* Test #47
*/
private function testerNomCommercialSyntaxe() {
$noms_erreur = array();
1072,6 → 1173,7
if (!$this->verifierNomCommercial($nom['nom_commercial'])) {
$epithete_traite = $this->repererEspace($nom['nom_commercial']);
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1079,7 → 1181,7
}
/**
* Test #46
* Test #48
*/
private function testerNomCommercialPresenceCultivar() {
$noms_erreur = array();
1086,6 → 1188,7
foreach ($this->noms as &$nom) {
if ((isset($nom['nom_commercial']) && $nom['nom_commercial'] != '') && ($nom['cultivar'] == '' && $nom['cultivar_groupe'] == '')) {
$noms_erreur[] = array($nom['num_nom'], $nom['nom_sci'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
return $noms_erreur;
1092,7 → 1195,7
}
/**
* Test #47
* Test #49
*/
private function testerAuteurSyntaxe() {
$noms_erreur = array();
1101,6 → 1204,7
if (!$this->verifierAuteur($nom['auteur'])) {
$intitule_traite = $this->repererEspace($nom['auteur']);
$noms_erreur[] = array($nom['num_nom'], $intitule_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1108,7 → 1212,7
}
/**
* Test #48
* Test #50
*/
private function testerAnneeSyntaxe() {
$noms_erreur = array();
1116,6 → 1220,7
if ($nom['annee'] != '') {
if (!$this->verifierAnnee($nom['annee'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['annee'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1123,7 → 1228,7
}
/**
* Test #49
* Test #51
*/
private function testerBiblioOrigineSyntaxe() {
$noms_erreur = array();
1132,6 → 1237,7
if (!$this->verifierBiblioOrigine($nom['biblio_origine'])) {
$biblio_traite = $this->repererEspace($nom['biblio_origine']);
$noms_erreur[] = array($nom['num_nom'], $biblio_traite, $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1139,7 → 1245,7
}
/**
* Test #50
* Test #52
*/
private function testerHomonymieSyntaxe() {
$noms_erreur = array();
1147,6 → 1253,7
if ($nom['homonyme'] != '') {
if (!$this->verifierBooleen($nom['homonyme'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['homonyme'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1154,7 → 1261,7
}
/**
* Test #51
* Test #53
*/
private function testerHomonymieExistence() {
$noms_homonymie = $this->classerNomsParNomComplet();
1164,6 → 1271,7
if ($nom['homonyme'] != '0' && $nom['homonyme'] != '') {
if ($noms_homonymie[$nom['nom_sci']] <= 1) {
$noms_erreur[] = array($nom['num_nom'], $nom['nom_sci'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1172,14 → 1280,15
}
/**
* Test #52
* Test #54
*/
private function testerBasionymeSyntaxe() {
$noms_erreur = array();
foreach ($this->noms as &$nom) {
if ($nom['basionyme'] != '') {
if (!$this->verifierNombre($nom['basionyme'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['basionyme'], $nom['exclure_taxref']);
if ($nom['num_basionyme'] != '') {
if (!$this->verifierNombre($nom['num_basionyme'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_basionyme'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1187,14 → 1296,15
}
 
/**
* Test #53
* Test #55
*/
private function testerBasionymeExistence() {
$noms_erreur = array();
foreach ($this->noms as &$nom) {
if ($nom['basionyme'] != '') {
if (!isset($this->noms[$nom['basionyme']])) {
$noms_erreur[] = array($nom['num_nom'], $nom['basionyme'], $nom['exclure_taxref']);
if ($nom['num_basionyme'] != '') {
if (!isset($this->noms[$nom['num_basionyme']])) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_basionyme'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1202,7 → 1312,7
}
/**
* Test #54
* Test #56
*/
private function testerSynonymeProparteSyntaxe() {
$noms_erreur = array();
1210,6 → 1320,7
if ($nom['synonyme_proparte'] != '') {
if (!$this->verifierNombreSuite($nom['synonyme_proparte'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['synonyme_proparte'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1217,7 → 1328,7
}
/**
* Test #55
* Test #57
*/
private function testerSynonymeProparteExistence() {
$noms_erreur = array();
1230,8 → 1341,9
$num_nom_en_erreur[] = $num_nom;
}
}
if (count($nbre_en_erreur) > 0) {
if (count($num_nom_en_erreur) > 0) {
$noms_erreur[] = array($nom['num_nom'], implode(',', $num_nom_en_erreur), $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1239,7 → 1351,7
}
/**
* Test #56
* Test #58
*/
private function testerSynonymeDouteuxSyntaxe() {
$noms_erreur = array();
1247,6 → 1359,7
if ($nom['synonyme_douteux'] != '') {
if (!$this->verifierBooleen($nom['synonyme_douteux'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['synonyme_douteux'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1254,7 → 1367,7
}
/**
* Test #57
* Test #59
*/
private function testerSynonymeDouteuxNumNomRetenu() {
$noms_erreur = array();
1261,6 → 1374,7
foreach ($this->noms as &$nom) {
if ($nom['synonyme_douteux'] == 1 && !$this->verifierNombre($nom['num_nom_retenu'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['synonyme_douteux'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
return $noms_erreur;
1267,7 → 1381,7
}
/**
* Test #58
* Test #60
*/
private function testerSynonymeMalAppliqueSyntaxe() {
$noms_erreur = array();
1275,6 → 1389,7
if ($nom['synonyme_mal_applique'] != '') {
if (!$this->verifierBooleen($nom['synonyme_mal_applique'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['synonyme_mal_applique'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1282,7 → 1397,7
}
/**
* Test #59
* Test #61
*/
private function testerSynonymeOrthographiqueSyntaxe() {
$noms_erreur = array();
1290,6 → 1405,7
if ($nom['synonyme_orthographique'] != '') {
if (!$this->verifierNombre($nom['synonyme_orthographique'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['synonyme_orthographique'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1297,7 → 1413,7
}
/**
* Test #60
* Test #62
*/
private function testerSynonymeOrthographiqueExistence() {
$noms_erreur = array();
1305,6 → 1421,7
if ($nom['synonyme_orthographique'] != '') {
if (!isset($this->noms[$nom['synonyme_orthographique']])) {
$noms_erreur[] = array($nom['num_nom'], $nom['synonyme_orthographique'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1312,7 → 1429,7
}
/**
* Test #61
* Test #63
*/
private function testerHybrideParent01Syntaxe() {
$noms_erreur = array();
1320,6 → 1437,7
if ($nom['hybride_parent_01'] != '') {
if (!$this->verifierNombre($nom['hybride_parent_01'])) {
$noms_erreur[] = array($nom['num_nom'], $this->repererEspace($nom['hybride_parent_01']), $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1327,7 → 1445,7
}
/**
* Test #62
* Test #64
*/
private function testerHybrideParent01Existence() {
$noms_erreur = array();
1335,6 → 1453,7
if ($nom['hybride_parent_01'] != '' && $nom['hybride_parent_01'] != '0') {
if (!isset($this->noms[$nom['hybride_parent_01']])) {
$noms_erreur[] = array($nom['num_nom'], $this->repererEspace($nom['hybride_parent_01']), $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1342,7 → 1461,7
}
/**
* Test #63
* Test #65
*/
private function testerHybrideParent02Syntaxe() {
$noms_erreur = array();
1350,6 → 1469,7
if ($nom['hybride_parent_02'] != '') {
if (!$this->verifierNombre($nom['hybride_parent_02'])) {
$noms_erreur[] = array($nom['num_nom'], $this->repererEspace($nom['hybride_parent_02']), $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1357,7 → 1477,7
}
/**
* Test #64
* Test #66
*/
private function testerHybrideParent02Existence() {
$noms_erreur = array();
1365,6 → 1485,7
if ($nom['hybride_parent_02'] != '') {
if (!isset($this->noms[$nom['hybride_parent_02']]) && $nom['hybride_parent_02'] != '0') {
$noms_erreur[] = array($nom['num_nom'], $this->repererEspace($nom['hybride_parent_02']), $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1372,8 → 1493,40
}
/**
* Test #65
* Test #67
*/
private function testerNumTypeSyntaxe() {
$noms_erreur = array();
foreach ($this->noms as &$nom) {
if ($nom['num_type'] != '') {
if (!$this->verifierNombre($nom['num_type'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_type'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
return $noms_erreur;
}
/**
* Test #68
*/
private function testerNumTypeExistence() {
$noms_erreur = array();
foreach ($this->noms as &$nom) {
if ($nom['num_type'] != '') {
if (!isset($this->noms[$nom['num_type']])) {
$noms_erreur[] = array($nom['num_nom'], $nom['num_type'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
return $noms_erreur;
}
/**
* Test #69
*/
private function testerPresenceSyntaxe() {
$noms_erreur = array();
foreach ($this->noms as &$nom) {
1380,6 → 1533,7
if ($nom['presence'] != '') {
if (!$this->verifierPresence($nom['presence'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['presence'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1387,7 → 1541,7
}
/**
* Test #73
* Test #70
*/
private function testerPresenceExistence() {
$noms_erreur = array();
1395,6 → 1549,7
if ($nom['num_nom_retenu'] == $nom['num_nom'] && $nom['exclure_taxref'] == 0) {
if ($nom['presence'] == "") {
$noms_erreur[] = array($nom['num_nom'],$nom['num_nom_retenu'], $nom['presence'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1402,7 → 1557,7
}
/**
* Test #66
* Test #71
*/
private function testerStatutOrigineSyntaxe() {
$noms_erreur = array();
1410,6 → 1565,7
if ($nom['statut_origine'] != '') {
if (!$this->verifierStatutOrigine($nom['statut_origine'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['statut_origine'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1417,7 → 1573,7
}
/**
* Test #67
* Test #72
*/
private function testerStatutIntroductionSyntaxe() {
$noms_erreur = array();
1425,6 → 1581,7
if ($nom['statut_introduction'] != '') {
if (!$this->verifierStatutIntroduction($nom['statut_introduction'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['statut_introduction'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1432,7 → 1589,7
}
/**
* Test #68
* Test #73
*/
private function testerStatutCultureSyntaxe() {
$noms_erreur = array();
1440,6 → 1597,7
if ($nom['statut_culture'] != '') {
if (!$this->verifierStatutCulture($nom['statut_culture'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['statut_culture'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1447,7 → 1605,7
}
/**
* Test #69
* Test #74
*/
private function testerExclureTaxRefSyntaxe() {
$noms_erreur = array();
1455,6 → 1613,7
if ($nom['exclure_taxref'] != '' && $nom['exclure_taxref'] != null) {
if (!preg_match('/^(?:0|1|9)$/', $nom['exclure_taxref'])) {
$noms_erreur[] = array($nom['num_nom'], $nom['exclure_taxref']);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1462,7 → 1621,7
}
/**
* Test #70
* Test #75
*/
private function testerNomFrancaisUnique() {
$noms_erreur = array();
1470,6 → 1629,7
if ($nom['nom_francais'] != '' && $nom['nom_francais'] != null) {
if (strpbrk($nom['nom_francais'],',;')) {
$noms_erreur[] = array($nom['num_nom'], $this->repererCaracteresInvalidesNomFrancais($nom['nom_francais']));
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}
1477,7 → 1637,7
}
/**
* Test #71
* Test #76
*/
private function testerExclureTaxRefPresence() {
$noms_erreur = array();
1495,6 → 1655,7
$this->mettreEnValeurAvertissement($nom['statut_introduction']),
$this->mettreEnValeurAvertissement($nom['statut_culture'])
);
$this->ajouterNumNomErreursTest($nom['num_nom']);
} else {
//TODO: le comportement est identique mais il faudrait pouvoir afficher un avertissement
// si le champ présence n'est pas rempli mais que l'une des colonne de statut l'est
1504,6 → 1665,7
$this->mettreEnValeurAvertissement($nom['statut_introduction']),
$this->mettreEnValeurAvertissement($nom['statut_culture'])
);
$this->ajouterNumNomErreursTest($nom['num_nom']);
}
}
}