Core  3.2
PHP API documentation
 All Data Structures Namespaces Files Functions Variables Pages
PU_test_dcp_searchdirective.php
Go to the documentation of this file.
1 <?php
2 /*
3  * @author Anakeen
4  * @package FDL
5 */
6 
7 namespace Dcp\Pu;
8 /**
9  * @author Anakeen
10  * @package Dcp\Pu
11  */
12 
13 require_once 'PU_testcase_dcp_commonfamily.php';
14 /**
15  * test some SearchDoc option like generalFilter
16  */
18 {
19  /**
20  * import TST_FULLSERACHFAM1 family and some documents
21  * @static
22  * @return string
23  */
24  protected static function getCommonImportFile()
25  {
26  return "PU_data_dcp_fullsearchfamily1.ods";
27  }
28 
29  protected $famName = 'TST_FULLSEARCHFAM1';
30  /**
31  * @dataProvider dataGeneralFilter
32  */
33  public function testGeneralFilter($filter, array $expectedDocName)
34  {
35  /*$sql = sprintf("select name, tst_rel1, svalues, fulltext from family.TST_FULLSEARCHFAM1");
36  simpleQuery("", $sql, $ret);
37  print_r2($sql);
38  print_r2($ret);
39  exit;*/
40  $s = new \SearchDoc(self::$dbaccess, $this->famName);
41  if ($filter) $s->addGeneralFilter($filter);
42  $s->setObjectReturn(true);
43  $s->search();
44 
45  $err = $s->getError();
46  $this->assertEmpty($err, "search error : $err");
47  $dl = $s->getDocumentList();
48  // print_r($s->getSearchInfo());
49  if (count($expectedDocName) != $s->count()) {
50  $this->assertEquals(count($expectedDocName) , $s->count() , "not correct count " . $this->getFilterResult($dl) . print_r($s->getSearchInfo() , true));
51  }
52  $index = 0;
53  /**
54  * @var \Doc $doc
55  */
56  foreach ($dl as $docid => $doc) {
57  $this->assertEquals($expectedDocName[$index], $doc->name, print_r($s->getSearchInfo() , true));
58  $this->assertEquals($doc->id, $docid, "document key is not correct");
59  $index++;
60  }
61  }
62  /**
63  * @dataProvider dataGeneralFilter
64  * @depends testGeneralFilter
65  */
66  public function testArrayGeneralFilter($filter, array $expectedDocName)
67  {
68  $s = new \SearchDoc(self::$dbaccess, $this->famName);
69  if ($filter) $s->addGeneralFilter($filter);
70  $s->setObjectReturn(false);
71  $s->search();
72 
73  $err = $s->getError();
74  $this->assertEmpty($err, "search error : $err");
75  $dl = $s->getDocumentList();
76  // print_r($s->getSearchInfo());
77  if (count($expectedDocName) != $s->count()) {
78  $this->assertEquals(count($expectedDocName) , $s->count() , "not correct count " . $this->getFilterResult($dl) . print_r($s->getSearchInfo() , true));
79  }
80  $index = 0;
81  /**
82  * @var \Doc $doc
83  */
84  foreach ($dl as $docid => $doc) {
85  $this->assertEquals($expectedDocName[$index], $doc["name"]);
86  $this->assertEquals($doc["id"], $docid, "document key is not correct");
87  $index++;
88  }
89  }
90  /**
91  * @dataProvider dataGeneralSortFilter
92  */
93  public function testGeneralSortFilter($filter, $order, array $expectedDocName)
94  {
95  $s = new \SearchDoc(self::$dbaccess, $this->famName);
96  if ($filter) $s->addGeneralFilter($filter);
97  $s->setObjectReturn();
98  $s->setPertinenceOrder($order);
99  $s->search();
100 
101  $err = $s->getError();
102  $this->assertEmpty($err, "search error : $err");
103  $dl = $s->getDocumentList();
104  // just test first results done by expected
105  if (count($expectedDocName) > $s->count()) {
106  $this->assertLessThanOrEqual(count($expectedDocName) , $s->count() , "not correct count " . $this->getFilterResult($dl) . print_r($s->getSearchInfo() , true));
107  }
108 
109  $index = 0;
110  /**
111  * @var \Doc $doc
112  */
113  foreach ($dl as $doc) {
114  if (!empty($expectedDocName[$index])) {
115  $this->assertEquals($expectedDocName[$index], $doc->name, print_r($s->getSearchInfo() , true));
116  }
117  $index++;
118  }
119  }
120  /**
121  * @dataProvider dataSpellGeneralFilter
122  */
123  public function testSpellGeneralFilter($filter, array $expectedDocName)
124  {
125  $s = new \SearchDoc(self::$dbaccess, $this->famName);
126  if ($filter) $s->addGeneralFilter($filter, "en");
127  $s->setObjectReturn();
128  $s->search();
129 
130  $err = $s->getError();
131  $this->assertEmpty($err, "search error : $err");
132 
133  $dl = $s->getDocumentList();
134  if (count($expectedDocName) != $s->count()) {
135  $this->assertEquals(count($expectedDocName) , $s->count() , "not correct count " . $this->getFilterResult($dl));
136  }
137  //print_r($s->getSearchInfo());
138  $this->assertEquals(count($expectedDocName) , $s->count() , "not correct count " . $this->getFilterResult($dl));
139  $index = 0;
140  /**
141  * @var \Doc $doc
142  */
143  foreach ($dl as $doc) {
144  $this->assertEquals($expectedDocName[$index], $doc->name);
145  $index++;
146  }
147  }
148  /**
149  * @param $filter
150  * @dataProvider dataErrorGeneralFilter
151  */
152  public function testErrorGeneralFilter($filter, $expectedCore)
153  {
154  $s = new \SearchDoc(self::$dbaccess, $this->famName);
155  $code = '';
156  try {
157  $s->addGeneralFilter($filter);
158  $s->setObjectReturn();
159  $s->search();
160  }
161  catch(\Dcp\SearchDoc\Exception $e) {
162  $code = $e->getDcpCode();
163  }
164  $this->assertEquals($expectedCore, $code, "search error must not be empty");
165  }
166  /**
167  * test "usefor" system search
168  * @param string $dirId The identifer of the collection to use
169  * @param array $existsNameList List of documents name that must be returned by the search
170  * @param array $notExistsNameList List of documents name that must NOT be returned by the search
171  * @return void
172  * @dataProvider dataUseforSystemSearchDocWithCollection
173  */
174  public function testUseforSystemSearchDocWithCollection($dirId, $existsNameList, $notExistsNameList)
175  {
176  $dir = new_Doc(self::$dbaccess, $dirId);
177  $this->assertTrue($dir->isAlive() , sprintf("Could not get search with id '%s'.", $dirId));
178 
179  $search = new \SearchDoc(self::$dbaccess, 0);
180  $search->setObjectReturn();
181  $search->useCollection($dirId);
182  $search->addFilter("name ~ '^TST_USEFOR'");
183  $search->search();
184 
185  $res = array();
186  while ($doc = $search->getNextDoc()) {
187  $res[] = $doc->name;
188  }
189 
190  if (count($existsNameList) > 0) {
191  foreach ($existsNameList as $name) {
192  $this->assertTrue(in_array($name, $res) , sprintf("Missing document with name '%s' in search with collection '%s': returned documents name = {%s}", $name, $dir->name, join(', ', $res)));
193  }
194  }
195 
196  if (count($notExistsNameList) > 0) {
197  foreach ($notExistsNameList as $name) {
198  $this->assertTrue(!in_array($name, $res) , sprintf("Found unexpected document with name '%s' in search with collection '%s': returned documents name = {%s}", $name, $dir->name, join(', ', $res)));
199  }
200  }
201  }
202 
203  public function dataErrorGeneralFilter()
204  {
205  return array(
206  array(
207  "test ()",
208  "SD0004"
209  ) ,
210  array(
211  "(test) or (test",
212  "SD0004"
213  ) ,
214  array(
215  "(test) or )test(",
216  "SD0004"
217  ) ,
218  array(
219  '(coucou) OR " (DF"Oio)',
220  "SD0003"
221  )
222  );
223  }
224 
226  {
227  return array(
228  array(
229  "TST_USEFOR_SYSTEM_SEARCH_NO",
230  array(
231  "TST_USEFOR_N_1",
232  "TST_USEFOR_N_2",
233  "TST_USEFOR_N_3"
234  ) ,
235  array(
236  "TST_USEFOR_S_1",
237  "TST_USEFOR_S_2",
238  "TST_USEFOR_S_3"
239  )
240  ) ,
241  array(
242  "TST_USEFOR_SYSTEM_SEARCH_YES",
243  array(
244  "TST_USEFOR_S_1",
245  "TST_USEFOR_S_2",
246  "TST_USEFOR_S_3",
247  "TST_USEFOR_N_1",
248  "TST_USEFOR_N_2",
249  "TST_USEFOR_N_3"
250  ) ,
251  array()
252  ) ,
253  array(
254  "TST_USEFOR_SYSTEM_SEARCH_EMPTY",
255  array(
256  "TST_USEFOR_S_1",
257  "TST_USEFOR_S_2",
258  "TST_USEFOR_S_3",
259  "TST_USEFOR_N_1",
260  "TST_USEFOR_N_2",
261  "TST_USEFOR_N_3"
262  ) ,
263  array()
264  ) ,
265  array(
266  "TST_USEFOR_SYSTEM_DSEARCH_NO",
267  array(
268  "TST_USEFOR_N_1",
269  "TST_USEFOR_N_2",
270  "TST_USEFOR_N_3"
271  ) ,
272  array(
273  "TST_USEFOR_S_1",
274  "TST_USEFOR_S_2",
275  "TST_USEFOR_S_3"
276  )
277  ) ,
278  array(
279  "TST_USEFOR_SYSTEM_DSEARCH_YES",
280  array(
281  "TST_USEFOR_S_1",
282  "TST_USEFOR_S_2",
283  "TST_USEFOR_S_3",
284  "TST_USEFOR_N_1",
285  "TST_USEFOR_N_2",
286  "TST_USEFOR_N_3"
287  ) ,
288  array()
289  ) ,
290  array(
291  "TST_USEFOR_SYSTEM_DSEARCH_EMPTY",
292  array(
293  "TST_USEFOR_S_1",
294  "TST_USEFOR_S_2",
295  "TST_USEFOR_S_3",
296  "TST_USEFOR_N_1",
297  "TST_USEFOR_N_2",
298  "TST_USEFOR_N_3"
299  ) ,
300  array()
301  )
302  );
303  }
304  /**
305  * Test 'searchcriteria' attributes option
306  *
307  * @param string $fam family id/name to search on
308  * @param string $keyword search for this keyword
309  * @param array $existsNameList List of documents name that should be returned by the search
310  * @param array $notExistsNameList Lost of documents name that should NOT be returned by the search
311  * @dataProvider dataOptionSearchCriteria
312  */
313  public function testOptionSearchCriteria($fam, $keyword, $existsNameList, $notExistsNameList)
314  {
315  $search = new \SearchDoc(self::$dbaccess, $fam);
316  $search->addGeneralFilter($keyword);
317  $search->setObjectReturn();
318  $search->search();
319 
320  $res = array();
321  while ($doc = $search->getNextDoc()) {
322  $res[] = $doc->name;
323  }
324 
325  if (count($existsNameList) > 0) {
326  foreach ($existsNameList as $name) {
327  $this->assertTrue(in_array($name, $res) , sprintf("Document '%s' should be returned by search for '%s' on family '%s': returned documents name = {%s}", $name, $keyword, $fam, join(', ', $res)));
328  }
329  }
330 
331  if (count($notExistsNameList) > 0) {
332  foreach ($notExistsNameList as $name) {
333  $this->assertTrue(!in_array($name, $res) , sprintf("Document '%s' should NOT be returned by search for '%s' on family '%s': returned documents name = {%s}", $name, $keyword, $fam, join(', ', $res)));
334  }
335  }
336  }
337 
338  public function dataOptionSearchCriteria()
339  {
340  return array(
341  array(
342  "TST_OPT_SEARCHCRITERIA",
343  "foo",
344  array(
345  "TST_OPT_SEARCHCRITERIA_DEFAULT",
346  "TST_OPT_SEARCHCRITERIA_VISIBLE",
347  "TST_OPT_SEARCHCRITERIA_PROTECTED"
348  ) ,
349  array(
350  "TST_OPT_SEARCHCRITERIA_HIDDEN"
351  )
352  ) ,
353  array(
354  "TST_OPT_SEARCHCRITERIA",
355  "secret",
356  array() ,
357  array(
358  "TST_OPT_SEARCHCRITERIA_DEFAULT",
359  "TST_OPT_SEARCHCRITERIA_VISIBLE",
360  "TST_OPT_SEARCHCRITERIA_HIDDEN",
361  "TST_OPT_SEARCHCRITERIA_PROTECTED"
362  )
363  )
364  );
365  }
366  /**
367  * Test SearchDoc->onlyCount() method
368  * @param string $fam family id or name
369  * @param array $properties list of ($propertyName => $propertyValue) to be set on the SearchDoc object (e.g. array("only" => true))
370  * @param array $methods list of ($methodName) to be called on the SearchDoc object (e.g. array("noViewControl") to call $search->noViewControl())
371  * @param array $filters list of SQL conditions/filters to be added with the $search->addFilter() method (e.g. array("foo <> 'bar'"))
372  * @param int $expectedCount expected documents count
373  * @return void
374  * @dataProvider dataSearchDocOnlyCount
375  */
376  public function testSearchDocOnlyCount($fam, $properties, $methods, $filters, $expectedCount)
377  {
378  $search = new \SearchDoc(self::$dbaccess, $fam);
379  if (is_array($properties)) {
380  foreach ($properties as $prop => $value) {
381  $search->$prop = $value;
382  }
383  }
384  if (is_array($methods)) {
385  foreach ($methods as $method) {
386  $search->$method();
387  }
388  }
389  if (is_array($filters)) {
390  foreach ($filters as $filter) {
391  $call = array(
392  $search,
393  "addFilter"
394  );
395  if (is_array($filter)) {
396  $args = $filter;
397  } else {
398  $args = array(
399  $filter
400  );
401  }
402  call_user_func_array($call, $args);
403  }
404  }
405  $count = $search->onlyCount();
406 
407  $this->assertTrue(($count == $expectedCount) , sprintf("onlyCount() returned '%s' while expecting '%s' (query = [%s]).", $count, $expectedCount, $search->getOriginalQuery()));
408  }
409 
410  public function dataSearchDocOnlyCount()
411  {
412  return array(
413  array(
414  "TST_ONLYCOUNT_0",
415  array(
416  "only" => false
417  ) ,
418  array(
419  "noViewControl"
420  ) ,
421  array() ,
422  3 + 4
423  ) ,
424  array(
425  "TST_ONLYCOUNT_0",
426  array(
427  "only" => true
428  ) ,
429  array(
430  "noViewControl"
431  ) ,
432  array() ,
433  3
434  ) ,
435  array(
436  "TST_ONLYCOUNT_0",
437  array(
438  "only" => false
439  ) ,
440  array(
441  "noViewControl"
442  ) ,
443  array(
444  "title <> 'Just to add some SQL conditions in the query...'",
445  "title <> '... blah blah blah'"
446  ) ,
447  3 + 4
448  ) ,
449  array(
450  "TST_ONLYCOUNT_0",
451  array(
452  "only" => true
453  ) ,
454  array(
455  "noViewControl"
456  ) ,
457  array(
458  "title <> 'Just to add some SQL conditions in the query...'",
459  "title <> '... blah blah blah'"
460  ) ,
461  3
462  ) ,
463  array(
464  "TST_ONLYCOUNT_0",
465  array(
466  "only" => false
467  ) ,
468  array(
469  "noViewControl"
470  ) ,
471  array(
472  "a_title <> 'Just to add some SQL conditions in the query...'",
473  "a_title <> '... blah blah blah'"
474  ) ,
475  3 + 4
476  ) ,
477  array(
478  "TST_ONLYCOUNT_0",
479  array(
480  "only" => true
481  ) ,
482  array(
483  "noViewControl"
484  ) ,
485  array(
486  "a_title <> 'Just to add some SQL conditions in the query...'",
487  "a_title <> '... blah blah blah'"
488  ) ,
489  3
490  )
491  );
492  }
493  /**
494  * Test setOrder by label on enum attributes
495  *
496  * @dataProvider dataSearchDocSetOrder
497  */
498  function testSearchDocSetOrder($fam, $orderby, $orderbyLabel, $expectedCount, $expectedTitles = array())
499  {
500  $search = new \SearchDoc(self::$dbaccess, $fam);
501  $search->setObjectReturn(true);
502  $search->setOrder($orderby, $orderbyLabel);
503  $search->search();
504 
505  $count = $search->count();
506  $this->assertTrue($count == $expectedCount, sprintf("search with setOrder(%s, %s) returned '%s' elements while expecting '%s'.", var_export($orderby, true) , var_export($orderbyLabel, true) , $count, $expectedCount));
507 
508  $titles = array();
509  while ($doc = $search->getNextDoc()) {
510  $titles[] = $doc->title;
511  }
512 
513  $s1 = join(', ', $titles);
514  $s2 = join(', ', $expectedTitles);
515  $this->assertTrue($s1 == $s2, sprintf("Expected titles not found: titles = [%s] / expected titles = [%s] / sql = [%s]", $s1, $s2, $search->getOriginalQuery()));
516  }
517 
519  {
520  return array(
521  array(
522  'TST_ORDERBY_LABEL',
523  'a_enum',
524  'a_enum',
525  3,
526  array(
527  'AAA',
528  'BBB',
529  'CCC'
530  )
531  ) ,
532  array(
533  'TST_ORDERBY_LABEL',
534  'a_enum asc',
535  'a_enum',
536  3,
537  array(
538  'AAA',
539  'BBB',
540  'CCC'
541  )
542  ) ,
543  array(
544  'TST_ORDERBY_LABEL',
545  '-a_enum',
546  'a_enum',
547  3,
548  array(
549  'CCC',
550  'BBB',
551  'AAA'
552  )
553  ) ,
554  array(
555  'TST_ORDERBY_LABEL',
556  'a_enum desc',
557  'a_enum',
558  3,
559  array(
560  'CCC',
561  'BBB',
562  'AAA'
563  )
564  ) ,
565  array(
566  'TST_ORDERBY_LABEL',
567  'a_docid_0',
568  'a_docid_0',
569  3,
570  array(
571  'CCC',
572  'BBB',
573  'AAA'
574  )
575  ) ,
576  array(
577  'TST_ORDERBY_LABEL',
578  '-a_docid_0',
579  'a_docid_0',
580  3,
581  array(
582  'AAA',
583  'BBB',
584  'CCC'
585  )
586  ) ,
587  array(
588  'TST_ORDERBY_LABEL',
589  'a_docid_1',
590  'a_docid_1',
591  3,
592  array(
593  'AAA',
594  'BBB',
595  'CCC'
596  )
597  ) ,
598  array(
599  'TST_ORDERBY_LABEL',
600  '-a_docid_1',
601  'a_docid_1',
602  3,
603  array(
604  'CCC',
605  'BBB',
606  'AAA'
607  )
608  ) ,
609  array(
610  'TST_ORDERBY_LABEL',
611  'a_docid_2',
612  'a_docid_2',
613  3,
614  array(
615  'AAA',
616  'BBB',
617  'CCC'
618  )
619  ) ,
620  array(
621  'TST_ORDERBY_LABEL',
622  '-a_docid_2',
623  'a_docid_2',
624  3,
625  array(
626  'CCC',
627  'BBB',
628  'AAA'
629  )
630  )
631  );
632  }
633  /**
634  * Test setOrder by label on enum attributes
635  *
636  * @dataProvider dataSearchDocSetOrderWithCollection
637  */
638  function testSearchDocSetOrderWithCollection($collectionId, $orderby, $orderbyLabel, $expectedCount, $expectedTitles = array())
639  {
640  $search = new \SearchDoc(self::$dbaccess);
641  $search->useCollection($collectionId);
642  $search->setObjectReturn(true);
643  $search->setOrder($orderby, $orderbyLabel);
644  $search->search();
645 
646  $count = $search->count();
647  $this->assertTrue($count == $expectedCount, sprintf("search with setOrder(%s, %s) returned '%s' elements while expecting '%s'.", var_export($orderby, true) , var_export($orderbyLabel, true) , $count, $expectedCount));
648 
649  $titles = array();
650  while ($doc = $search->getNextDoc()) {
651  $titles[] = $doc->title;
652  }
653 
654  $s1 = join(', ', $titles);
655  $s2 = join(', ', $expectedTitles);
656  $this->assertTrue($s1 == $s2, sprintf("Expected titles not found: titles = [%s] / expected titles = [%s] / sql = [%s]", $s1, $s2, $search->getOriginalQuery()));
657  }
658 
660  {
661  return array(
662  array(
663  'TST_ORDERBY_LABEL_COLLECTION_1',
664  'a_enum',
665  'a_enum',
666  3,
667  array(
668  'AAA',
669  'BBB',
670  'CCC'
671  )
672  ) ,
673  array(
674  'TST_ORDERBY_LABEL_COLLECTION_1',
675  'a_enum asc',
676  'a_enum',
677  3,
678  array(
679  'AAA',
680  'BBB',
681  'CCC'
682  )
683  ) ,
684  array(
685  'TST_ORDERBY_LABEL_COLLECTION_1',
686  '-a_enum',
687  'a_enum',
688  3,
689  array(
690  'CCC',
691  'BBB',
692  'AAA'
693  )
694  ) ,
695  array(
696  'TST_ORDERBY_LABEL_COLLECTION_1',
697  'a_enum desc',
698  'a_enum',
699  3,
700  array(
701  'CCC',
702  'BBB',
703  'AAA'
704  )
705  ) ,
706  array(
707  'TST_ORDERBY_LABEL_COLLECTION_1',
708  'a_docid_0',
709  'a_docid_0',
710  3,
711  array(
712  'CCC',
713  'BBB',
714  'AAA'
715  )
716  ) ,
717  array(
718  'TST_ORDERBY_LABEL_COLLECTION_1',
719  '-a_docid_0',
720  'a_docid_0',
721  3,
722  array(
723  'AAA',
724  'BBB',
725  'CCC'
726  )
727  ) ,
728  array(
729  'TST_ORDERBY_LABEL_COLLECTION_1',
730  'a_docid_1',
731  'a_docid_1',
732  3,
733  array(
734  'AAA',
735  'BBB',
736  'CCC'
737  )
738  ) ,
739  array(
740  'TST_ORDERBY_LABEL_COLLECTION_1',
741  '-a_docid_1',
742  'a_docid_1',
743  3,
744  array(
745  'CCC',
746  'BBB',
747  'AAA'
748  )
749  ) ,
750  array(
751  'TST_ORDERBY_LABEL_COLLECTION_1',
752  'a_docid_2',
753  'a_docid_2',
754  3,
755  array(
756  'AAA',
757  'BBB',
758  'CCC'
759  )
760  ) ,
761  array(
762  'TST_ORDERBY_LABEL_COLLECTION_1',
763  '-a_docid_2',
764  'a_docid_2',
765  3,
766  array(
767  'CCC',
768  'BBB',
769  'AAA'
770  )
771  )
772  );
773  }
774 
775  private function getFilterResult(\DocumentList $dl)
776  {
777  $names = array();
778  /**
779  * @var \Doc $doc
780  */
781  foreach ($dl as $doc) {
782  if (is_array($doc)) {
783 
784  $names[] = $doc["name"];
785  } else {
786  $names[] = $doc->name;
787  }
788  }
789  return implode(",", $names);
790  }
791 
792  public function dataSpellGeneralFilter()
793  {
794  return array(
795  array(
796  "téléfone",
797  array(
798  "TST_FULL2",
799  "TST_FULL1"
800  )
801  ) ,
802 
803  array(
804  "téléfone maizon",
805  array(
806  "TST_FULL2"
807  )
808  ) ,
809  array(
810  "téléfone méson",
811  array(
812  "TST_FULL2"
813  )
814  ) ,
815  array(
816  '"fixe" mésons',
817  array(
818  "TST_FULL2"
819  )
820  )
821  );
822  }
823 
824  public function dataGeneralFilter()
825  {
826  return array(
827  array(
828  "",
829  array(
830  "TST_FULL3",
831  "TST_FULL4",
832  "TST_FULL5",
833  "TST_FULL6",
834  "TST_FULL7",
835  "TST_FULL2",
836  "TST_FULL9",
837  "TST_FULL1",
838  "TST_FULL8",
839  "TST_FULL10",
840  "TST_FULL11"
841  )
842  ) ,
843  array(
844  "le",
845  array()
846  ) ,
847  array(
848  "le téléphone",
849  array(
850  "TST_FULL2",
851  "TST_FULL1"
852  )
853  ) ,
854  array(
855  "téléphone",
856  array(
857  "TST_FULL2",
858  "TST_FULL1"
859  )
860  ) ,
861 
862  array(
863  "1000",
864  array(
865  "TST_FULL10"
866  )
867  ) ,
868  array(
869  "100",
870  array(
871  "TST_FULL11"
872  )
873  ) ,
874  array(
875  "jean-marte",
876  array(
877  "TST_FULL11"
878  )
879  ) ,
880  array(
881  "o'marte",
882  array(
883  "TST_FULL11"
884  )
885  ) ,
886  array(
887  "jean marte",
888  array(
889  "TST_FULL10",
890  "TST_FULL11"
891  )
892  ) ,
893  array(
894  "sous-marin vert",
895  array(
896  "TST_FULL9",
897  )
898  ) ,
899  array(
900  "sous vert",
901  array(
902  "TST_FULL9",
903  )
904  ) ,
905  array(
906  "*@somewhere.com",
907  array(
908  "TST_FULL10",
909  "TST_FULL11"
910  )
911  ) ,
912  array(
913  "*@somewhere*",
914  array(
915  "TST_FULL10",
916  "TST_FULL11"
917  )
918  ) ,
919  array(
920  "2013-03-05",
921  array(
922  "TST_FULL11"
923  )
924  ) ,
925  array(
926  "le avec téléphone",
927  array(
928  "TST_FULL2",
929  "TST_FULL1"
930  )
931  ) ,
932  array(
933  '"téléphone"',
934  array(
935  "TST_FULL2",
936  "TST_FULL1"
937  )
938  ) ,
939 
940  array(
941  'le "téléphone"',
942  array(
943  "TST_FULL2",
944  "TST_FULL1"
945  )
946  ) ,
947  array(
948  'le avec "téléphone"',
949  array(
950  "TST_FULL2",
951  "TST_FULL1"
952  )
953  ) ,
954  array(
955  "le téléphone",
956  array(
957  "TST_FULL2",
958  "TST_FULL1"
959  )
960  ) ,
961  array(
962  "'téléphone'",
963  array()
964  ) ,
965  array(
966  "Dièse#3",
967  array(
968  "TST_FULL10",
969  )
970  ) ,
971  array(
972  '"Dièse#3"',
973  array(
974  "TST_FULL10",
975  )
976  ) ,
977  array(
978  '2012/03/05',
979  array(
980  "TST_FULL10",
981  )
982  ) ,
983  array(
984  '2012/03',
985  array(
986  "TST_FULL10",
987  )
988  ) ,
989  array(
990  "'-;=téléphone_%'",
991  array()
992  ) ,
993 
994  array(
995  "téléphones portables",
996  array(
997  "TST_FULL1"
998  )
999  ) ,
1000  array(
1001  'téléphones "portables"',
1002  array()
1003  ) ,
1004  array(
1005  'téléphones "portable"',
1006  array(
1007  "TST_FULL1"
1008  )
1009  ) ,
1010  array(
1011  "téléphones AND portables",
1012  array(
1013  "TST_FULL1"
1014  )
1015  ) ,
1016  array(
1017  '"téléphones" AND portables',
1018  array()
1019  ) ,
1020  array(
1021  '"téléphone" AND portables',
1022  array(
1023  "TST_FULL1"
1024  )
1025  ) ,
1026  array(
1027  "téléphones fixes",
1028  array(
1029  "TST_FULL2"
1030  )
1031  ) ,
1032  array(
1033  "(téléphones) (fixes)",
1034  array(
1035  "TST_FULL2"
1036  )
1037  ) ,
1038  array(
1039  "(téléphones) fixes",
1040  array(
1041  "TST_FULL2"
1042  )
1043  ) ,
1044  array(
1045  "(marté) *@*",
1046  array(
1047  "TST_FULL10",
1048  "TST_FULL11"
1049  )
1050  ) ,
1051  array(
1052  "cheval",
1053  array(
1054  "TST_FULL3",
1055  "TST_FULL6"
1056  )
1057  ) ,
1058  array(
1059  "rouge",
1060  array(
1061  "TST_FULL3",
1062  "TST_FULL4",
1063  "TST_FULL5",
1064  "TST_FULL6",
1065  "TST_FULL7",
1066  "TST_FULL1",
1067  "TST_FULL8"
1068  )
1069  ) ,
1070  array(
1071  "équidés",
1072  array(
1073  "TST_FULL3",
1074  "TST_FULL8"
1075  )
1076  ) ,
1077  array(
1078  "-équidé-",
1079  array(
1080  "TST_FULL3"
1081  )
1082  ) ,
1083  array(
1084  "villa",
1085  array(
1086  "TST_FULL5",
1087  "TST_FULL2"
1088  )
1089  ) ,
1090  array(
1091  "*villa*",
1092  array(
1093  "TST_FULL5",
1094  "TST_FULL2"
1095  )
1096  ) ,
1097  array(
1098  '"*villa*"',
1099  array(
1100  "TST_FULL2"
1101  )
1102  ) ,
1103  array(
1104  "fushia",
1105  array(
1106  "TST_FULL5",
1107  "TST_FULL8"
1108  )
1109  ) ,
1110  array(
1111  '\(fushia',
1112  array(
1113  "TST_FULL5"
1114  )
1115  ) ,
1116  array(
1117  '"(fushia)"',
1118  array(
1119  "TST_FULL5"
1120  )
1121  ) ,
1122  array(
1123  '"\(bordeaux"',
1124  array(
1125  "TST_FULL4"
1126  )
1127  ) ,
1128 
1129  array(
1130  '*fushia\)',
1131  array(
1132  "TST_FULL5"
1133  )
1134  ) ,
1135  array(
1136  '\(fush',
1137  array()
1138  ) ,
1139  array(
1140  '*\(fushia\)*',
1141  array(
1142  "TST_FULL5"
1143  )
1144  ) ,
1145  array(
1146  '*\(fushia*',
1147  array(
1148  "TST_FULL5"
1149  )
1150  ) ,
1151  array(
1152  '*fushia\)* OR *mineux\)*',
1153  array(
1154  "TST_FULL4",
1155  "TST_FULL5"
1156  )
1157  ) ,
1158  array(
1159  '*fush*',
1160  array(
1161  "TST_FULL5",
1162  "TST_FULL8"
1163  )
1164  ) ,
1165  array(
1166  "portable OR fixe",
1167  array(
1168  "TST_FULL2",
1169  "TST_FULL1"
1170  )
1171  ) ,
1172  array(
1173  "portàble OR fixe OR cheval",
1174  array(
1175  "TST_FULL3",
1176  "TST_FULL6",
1177  "TST_FULL2",
1178  "TST_FULL1"
1179  )
1180  ) ,
1181  array(
1182  "téléphone OR (jument AND rouge)",
1183  array(
1184  "TST_FULL6",
1185  "TST_FULL2",
1186  "TST_FULL1"
1187  )
1188  ) ,
1189  array(
1190  "téléphone OR (rouge jument)",
1191  array(
1192  "TST_FULL6",
1193  "TST_FULL2",
1194  "TST_FULL1"
1195  )
1196  ) ,
1197  array(
1198  '"rouge"',
1199  array(
1200  "TST_FULL4",
1201  "TST_FULL5",
1202  "TST_FULL6",
1203  "TST_FULL7",
1204  "TST_FULL1",
1205  "TST_FULL8"
1206  )
1207  ) ,
1208  array(
1209  '"rouges" OR "cheval"',
1210  array(
1211  "TST_FULL3",
1212  "TST_FULL6"
1213  )
1214  ) ,
1215  array(
1216  '"rouges" OR "cheval" OR animaux',
1217  array(
1218  "TST_FULL3",
1219  "TST_FULL4",
1220  "TST_FULL5",
1221  "TST_FULL6"
1222  )
1223  ) ,
1224  array(
1225  '("rouges" OR "cheval") AND animaux',
1226  array(
1227  "TST_FULL3",
1228  "TST_FULL6"
1229  )
1230  ) ,
1231  array(
1232  'télé*',
1233  array(
1234  "TST_FULL2",
1235  "TST_FULL9",
1236  "TST_FULL1"
1237  )
1238  ) ,
1239  array(
1240  'télé* fixes',
1241  array(
1242  "TST_FULL2"
1243  )
1244  ) ,
1245  array(
1246  '"fixe maison"',
1247  array(
1248  "TST_FULL2"
1249  )
1250  ) ,
1251  array(
1252  '"maison fixe"',
1253  array()
1254  ) ,
1255  array(
1256  '"fixe" maisons',
1257  array(
1258  "TST_FULL2"
1259  )
1260  ) ,
1261  array(
1262  'maisons "fixe"',
1263  array(
1264  "TST_FULL2"
1265  )
1266  ) ,
1267  array(
1268  'mais* "fixe"',
1269  array(
1270  "TST_FULL2"
1271  )
1272  ) ,
1273  array(
1274  "comme l'éclair",
1275  array(
1276  "TST_FULL8"
1277  )
1278  ) ,
1279  array(
1280  "comme l'éclair jaunes",
1281  array(
1282  "TST_FULL8"
1283  )
1284  ) ,
1285  array(
1286  '*ne',
1287  array(
1288  "TST_FULL5",
1289  "TST_FULL2",
1290  "TST_FULL9",
1291  "TST_FULL1",
1292  "TST_FULL8"
1293  )
1294  ) ,
1295  array(
1296  '*ca*',
1297  array(
1298  "TST_FULL3",
1299  "TST_FULL4",
1300  "TST_FULL6",
1301  "TST_FULL7",
1302  "TST_FULL9",
1303  "TST_FULL10"
1304  )
1305  ) ,
1306  array(
1307  '2012-01-15',
1308  array(
1309  "TST_FULL4"
1310  )
1311  ) ,
1312  array(
1313  '2012-01',
1314  array(
1315  "TST_FULL3",
1316  "TST_FULL4",
1317  "TST_FULL5",
1318  "TST_FULL6",
1319  "TST_FULL7",
1320  "TST_FULL2",
1321  "TST_FULL9",
1322  "TST_FULL1",
1323  "TST_FULL8",
1324  "TST_FULL10"
1325  )
1326  ) ,
1327  array(
1328  'janvier',
1329  array(
1330  "TST_FULL3",
1331  "TST_FULL4",
1332  "TST_FULL5",
1333  "TST_FULL6",
1334  "TST_FULL7",
1335  "TST_FULL2",
1336  "TST_FULL9",
1337  "TST_FULL1",
1338  "TST_FULL8",
1339  "TST_FULL10"
1340  )
1341  ) ,
1342  array(
1343  'février',
1344  array(
1345  "TST_FULL11"
1346  )
1347  ) ,
1348  array(
1349  'february',
1350  array(
1351  "TST_FULL11"
1352  )
1353  ) ,
1354  array(
1355  '22/02/2012',
1356  array(
1357  "TST_FULL11"
1358  )
1359  ) ,
1360  array(
1361  '*22/2012*',
1362  array(
1363  "TST_FULL11"
1364  )
1365  ) ,
1366  array(
1367  '*02/2012',
1368  array(
1369  "TST_FULL11"
1370  )
1371  ) ,
1372  array(
1373  '02/22/2012',
1374  array(
1375  "TST_FULL11"
1376  )
1377  ) ,
1378  array(
1379  '2012-01-15 chiens',
1380  array(
1381  "TST_FULL4"
1382  )
1383  ) ,
1384  array(
1385  '2012 15 01 chiens',
1386  array(
1387  "TST_FULL4"
1388  )
1389  ) ,
1390  array(
1391  '2012/03/05 john',
1392  array(
1393  "TST_FULL10"
1394  )
1395  ) ,
1396  array(
1397  '06 04 2013 john doe',
1398  array(
1399  "TST_FULL10"
1400  )
1401  ) ,
1402  array(
1403  '59 356 2012 02',
1404  array(
1405  "TST_FULL11"
1406  )
1407  ) ,
1408  array(
1409  'Vert',
1410  array(
1411  "TST_FULL2",
1412  "TST_FULL9"
1413  )
1414  ) ,
1415  array(
1416  'Rouge',
1417  array(
1418  "TST_FULL3",
1419  "TST_FULL4",
1420  "TST_FULL5",
1421  "TST_FULL6",
1422  "TST_FULL7",
1423  "TST_FULL1",
1424  "TST_FULL8"
1425  )
1426  ) ,
1427  array(
1428  'Bleu',
1429  array(
1430  "TST_FULL3"
1431  )
1432  ) ,
1433  array(
1434  'march 2016',
1435  array(
1436  "TST_FULL2",
1437  "TST_FULL1"
1438  )
1439  ) ,
1440  array(
1441  'march july 2016 2017',
1442  array(
1443  "TST_FULL2"
1444  )
1445  ) ,
1446  array(
1447  'mars juillet 2016 2017',
1448  array(
1449  "TST_FULL2"
1450  )
1451  ) ,
1452  array(
1453  'printemps',
1454  array(
1455  "TST_FULL3",
1456  "TST_FULL4"
1457  )
1458  ) ,
1459  array(
1460  'Chien rouge en été et printemps',
1461  array(
1462  "TST_FULL4"
1463  )
1464  ) ,
1465  array(
1466  'D1 Premier',
1467  array(
1468  "TST_FULL5",
1469  "TST_FULL1"
1470  )
1471  ) ,
1472  array(
1473  'A2 canin',
1474  array(
1475  "TST_FULL4",
1476  "TST_FULL7",
1477  "TST_FULL10"
1478  )
1479  ) ,
1480  array(
1481  'A2 canin C1 deuxième',
1482  array(
1483  "TST_FULL4",
1484  "TST_FULL7",
1485  "TST_FULL10"
1486  )
1487  ) ,
1488  array(
1489  'A2 canin C1 deuxième A4 canasson',
1490  array(
1491  "TST_FULL7",
1492  "TST_FULL10"
1493  )
1494  ) ,
1495  array(
1496  'C1 A2 A3 canin C1 deuxième A4 canasson',
1497  array(
1498  "TST_FULL10"
1499  )
1500  ) ,
1501  array(
1502  '*Premier',
1503  array(
1504  "TST_FULL5",
1505  "TST_FULL1"
1506  )
1507  ) ,
1508  array(
1509  'C1 Deuxième',
1510  array(
1511  "TST_FULL4",
1512  "TST_FULL5",
1513  "TST_FULL7",
1514  "TST_FULL2",
1515  "TST_FULL10"
1516  )
1517  )
1518  );
1519  }
1520 
1521  public function dataGeneralSortFilter()
1522  {
1523  return array(
1524  array(
1525  "rouge",
1526  "",
1527  array(
1528  "TST_FULL8",
1529  "TST_FULL5",
1530  "TST_FULL7",
1531  "TST_FULL6",
1532  "TST_FULL4",
1533  "TST_FULL3"
1534  )
1535  ) ,
1536  array(
1537  "animal cheval",
1538  "",
1539  array(
1540  "TST_FULL3",
1541  "TST_FULL6"
1542  )
1543  ) ,
1544  array(
1545  "rouge",
1546  "cheval",
1547  array(
1548  "TST_FULL3",
1549  "TST_FULL6"
1550  )
1551  ) ,
1552  array(
1553  "rouge",
1554  "cheval OR canin",
1555  array(
1556  "TST_FULL4",
1557  "TST_FULL3",
1558  "TST_FULL7",
1559  "TST_FULL6"
1560  )
1561  ) ,
1562  array(
1563  '"rouge" OR "cheval"',
1564  "",
1565  array(
1566  "TST_FULL8",
1567  "TST_FULL5",
1568  "TST_FULL7",
1569  "TST_FULL6"
1570  )
1571  ) ,
1572  array(
1573  '"rouge" OR chevaux',
1574  "",
1575  array(
1576  "TST_FULL8",
1577  "TST_FULL3",
1578  "TST_FULL5"
1579  )
1580  ) ,
1581  array(
1582  "comme l'éclair jaune",
1583  "",
1584  array(
1585  "TST_FULL8"
1586  )
1587  ) ,
1588  array(
1589  "comme l'éclair' jaune",
1590  "",
1591  array(
1592  "TST_FULL8"
1593  )
1594  ) ,
1595  array(
1596  "comme l'éclair jaunes",
1597  "",
1598  array(
1599  "TST_FULL8"
1600  )
1601  ) ,
1602  array(
1603  "comme les éclairs jaunes",
1604  "",
1605  array(
1606  "TST_FULL8"
1607  )
1608  ) ,
1609  array(
1610  "comme l'éclair jaun*",
1611  "",
1612  array(
1613  "TST_FULL8"
1614  )
1615  ) ,
1616  array(
1617  '"rouge" OR chevaux OR télé*',
1618  "",
1619  array(
1620  "TST_FULL8",
1621  "TST_FULL3",
1622  "TST_FULL5"
1623  )
1624  )
1625  );
1626  }
1627 }
1628 ?>
if(substr($wsh, 0, 1)!= '/') $args
if($famId) $s
testOptionSearchCriteria($fam, $keyword, $existsNameList, $notExistsNameList)
$docid
Definition: cleanFamily.php:13
$search
testUseforSystemSearchDocWithCollection($dirId, $existsNameList, $notExistsNameList)
new_Doc($dbaccess, $id= '', $latest=false)
$dir
Definition: resizeimg.php:144
testErrorGeneralFilter($filter, $expectedCore)
$keyword
testSearchDocOnlyCount($fam, $properties, $methods, $filters, $expectedCount)
$dbaccess
Definition: checkVault.php:17
testSearchDocSetOrderWithCollection($collectionId, $orderby, $orderbyLabel, $expectedCount, $expectedTitles=array())
if($file) if($subject==""&&$file) if($subject=="") $err
testSearchDocSetOrder($fam, $orderby, $orderbyLabel, $expectedCount, $expectedTitles=array())
$value
← centre documentaire © anakeen