Skip to content

Commit ebe4144

Browse files
committed
Add more UT
1 parent c6a58bd commit ebe4144

File tree

2 files changed

+261
-0
lines changed

2 files changed

+261
-0
lines changed
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/*
6+
* Copyright MacFJA
7+
*
8+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
9+
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
10+
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
11+
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
14+
* Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
17+
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18+
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19+
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20+
*/
21+
22+
namespace MacFJA\RediSearch\tests\Query\Builder;
23+
24+
use MacFJA\RediSearch\Query\Builder;
25+
use MacFJA\RediSearch\Query\Builder\AndGroup;
26+
use MacFJA\RediSearch\Query\Builder\EncapsulationGroup;
27+
use MacFJA\RediSearch\Query\Builder\ExactMatch;
28+
use MacFJA\RediSearch\Query\Builder\FieldFacet;
29+
use MacFJA\RediSearch\Query\Builder\Fuzzy;
30+
use MacFJA\RediSearch\Query\Builder\GeoFacet;
31+
use MacFJA\RediSearch\Query\Builder\Negation;
32+
use MacFJA\RediSearch\Query\Builder\NumericFacet;
33+
use MacFJA\RediSearch\Query\Builder\Optional;
34+
use MacFJA\RediSearch\Query\Builder\OrGroup;
35+
use MacFJA\RediSearch\Query\Builder\Prefix;
36+
use MacFJA\RediSearch\Query\Builder\QueryElementAttribute;
37+
use MacFJA\RediSearch\Query\Builder\RawElement;
38+
use MacFJA\RediSearch\Query\Builder\TagFacet;
39+
use MacFJA\RediSearch\Query\Builder\TextFacet;
40+
use MacFJA\RediSearch\Query\Builder\Word;
41+
use MacFJA\RediSearch\Redis\Command\SearchCommand\GeoFilterOption;
42+
43+
/**
44+
* @covers \MacFJA\RediSearch\Query\Builder
45+
*
46+
* @covers \MacFJA\RediSearch\Query\Builder\AbstractGroup
47+
* @covers \MacFJA\RediSearch\Query\Builder\AndGroup
48+
* @covers \MacFJA\RediSearch\Query\Builder\EncapsulationGroup
49+
* @covers \MacFJA\RediSearch\Query\Builder\ExactMatch
50+
* @covers \MacFJA\RediSearch\Query\Builder\FieldFacet
51+
*
52+
* @covers \MacFJA\RediSearch\Query\Builder\Fuzzy
53+
* @covers \MacFJA\RediSearch\Query\Builder\GeoFacet
54+
* @covers \MacFJA\RediSearch\Query\Builder\Negation
55+
* @covers \MacFJA\RediSearch\Query\Builder\NumericFacet
56+
* @covers \MacFJA\RediSearch\Query\Builder\Optional
57+
*
58+
* @covers \MacFJA\RediSearch\Query\Builder\OrGroup
59+
* @covers \MacFJA\RediSearch\Query\Builder\Prefix
60+
* @covers \MacFJA\RediSearch\Query\Builder\QueryElement::priority
61+
* @covers \MacFJA\RediSearch\Query\Builder\QueryElementAttribute
62+
* @covers \MacFJA\RediSearch\Query\Builder\RawElement
63+
* @covers \MacFJA\RediSearch\Query\Builder\TagFacet
64+
* @covers \MacFJA\RediSearch\Query\Builder\TextFacet
65+
* @covers \MacFJA\RediSearch\Query\Builder\Word
66+
*
67+
* @uses \MacFJA\RediSearch\Query\Escaper
68+
*
69+
* @internal
70+
*/
71+
class IncludeSpaceTest extends \PHPUnit\Framework\TestCase
72+
{
73+
public function testGroupIncludeSpace(): void
74+
{
75+
$andGroup = new AndGroup();
76+
$andGroup2 = new AndGroup([new Word('foo bar')]);
77+
$andGroup3 = new AndGroup([new Word('foo bar'), new Word('baz')]);
78+
$encapsulationGroup = new EncapsulationGroup('(', ')', new RawElement(''));
79+
$encapsulationGroup2 = new EncapsulationGroup('(', ')', new Word('foo'), true);
80+
$encapsulationGroup3 = new EncapsulationGroup('(', ')', new Word('foo bar'), true);
81+
$orGroup = new OrGroup();
82+
$orGroup2 = new OrGroup([new Word('foo bar')]);
83+
$orGroup3 = new OrGroup([new Word('foo bar'), new Word('baz')]);
84+
$orGroup4 = new OrGroup([new Word('foo')]);
85+
$builderGroup = new Builder();
86+
87+
static::assertFalse($andGroup->includeSpace());
88+
static::assertTrue($andGroup2->includeSpace());
89+
static::assertTrue($andGroup3->includeSpace());
90+
static::assertFalse($encapsulationGroup->includeSpace());
91+
static::assertFalse($encapsulationGroup2->includeSpace());
92+
static::assertFalse($encapsulationGroup3->includeSpace());
93+
static::assertFalse($orGroup->includeSpace());
94+
static::assertTrue($orGroup2->includeSpace());
95+
static::assertTrue($orGroup3->includeSpace());
96+
static::assertFalse($orGroup4->includeSpace());
97+
static::assertFalse($builderGroup->includeSpace());
98+
}
99+
100+
public function testFacetIncludeSpace(): void
101+
{
102+
$field = new FieldFacet(['foo'], new RawElement(''));
103+
$geo = new GeoFacet(['foo'], 0, 0, 0, GeoFilterOption::UNIT_METERS);
104+
$numeric = new NumericFacet(['foo'], 0, 0);
105+
$tag = new TagFacet(['foo'], '');
106+
$text = new TextFacet(['foo'], '');
107+
$text2 = new TextFacet(['foo'], 'bar baz');
108+
$text3 = new TextFacet(['foo'], 'bar', 'baz');
109+
110+
static::assertFalse($field->includeSpace());
111+
static::assertFalse($geo->includeSpace());
112+
static::assertFalse($numeric->includeSpace());
113+
static::assertFalse($tag->includeSpace());
114+
static::assertFalse($text->includeSpace());
115+
static::assertFalse($text2->includeSpace());
116+
static::assertFalse($text3->includeSpace());
117+
}
118+
119+
public function testModifierIncludeSpace(): void
120+
{
121+
$exactMatch = new ExactMatch('foo bar');
122+
$fuzzy = new Fuzzy('foo bar');
123+
$negation = new Negation(new RawElement('foo bar'));
124+
$optional = new Optional(new RawElement('foo bar'));
125+
$prefix = new Prefix('foo bar');
126+
$attribute = new QueryElementAttribute(new RawElement('foo bar'));
127+
$raw = new RawElement('foo bar');
128+
$word = new Word('foo bar');
129+
130+
static::assertFalse($exactMatch->includeSpace());
131+
static::assertTrue($fuzzy->includeSpace());
132+
static::assertFalse($negation->includeSpace());
133+
static::assertFalse($optional->includeSpace());
134+
static::assertFalse($prefix->includeSpace());
135+
static::assertTrue($attribute->includeSpace());
136+
static::assertTrue($raw->includeSpace());
137+
static::assertTrue($word->includeSpace());
138+
}
139+
}
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/*
6+
* Copyright MacFJA
7+
*
8+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
9+
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
10+
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
11+
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
14+
* Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
17+
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18+
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19+
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20+
*/
21+
22+
namespace MacFJA\RediSearch\tests\Query\Builder;
23+
24+
use MacFJA\RediSearch\Query\Builder;
25+
use MacFJA\RediSearch\Query\Builder\AndGroup;
26+
use MacFJA\RediSearch\Query\Builder\EncapsulationGroup;
27+
use MacFJA\RediSearch\Query\Builder\ExactMatch;
28+
use MacFJA\RediSearch\Query\Builder\FieldFacet;
29+
use MacFJA\RediSearch\Query\Builder\Fuzzy;
30+
use MacFJA\RediSearch\Query\Builder\GeoFacet;
31+
use MacFJA\RediSearch\Query\Builder\Negation;
32+
use MacFJA\RediSearch\Query\Builder\NumericFacet;
33+
use MacFJA\RediSearch\Query\Builder\Optional;
34+
use MacFJA\RediSearch\Query\Builder\OrGroup;
35+
use MacFJA\RediSearch\Query\Builder\Prefix;
36+
use MacFJA\RediSearch\Query\Builder\QueryElement;
37+
use MacFJA\RediSearch\Query\Builder\QueryElementAttribute;
38+
use MacFJA\RediSearch\Query\Builder\RawElement;
39+
use MacFJA\RediSearch\Query\Builder\TagFacet;
40+
use MacFJA\RediSearch\Query\Builder\TextFacet;
41+
use MacFJA\RediSearch\Query\Builder\Word;
42+
use MacFJA\RediSearch\Redis\Command\SearchCommand\GeoFilterOption;
43+
44+
/**
45+
* @covers \MacFJA\RediSearch\Query\Builder
46+
*
47+
* @covers \MacFJA\RediSearch\Query\Builder\AbstractGroup
48+
* @covers \MacFJA\RediSearch\Query\Builder\AndGroup
49+
* @covers \MacFJA\RediSearch\Query\Builder\EncapsulationGroup
50+
* @covers \MacFJA\RediSearch\Query\Builder\ExactMatch
51+
* @covers \MacFJA\RediSearch\Query\Builder\FieldFacet
52+
*
53+
* @covers \MacFJA\RediSearch\Query\Builder\Fuzzy
54+
* @covers \MacFJA\RediSearch\Query\Builder\GeoFacet
55+
* @covers \MacFJA\RediSearch\Query\Builder\Negation
56+
* @covers \MacFJA\RediSearch\Query\Builder\NumericFacet
57+
* @covers \MacFJA\RediSearch\Query\Builder\Optional
58+
*
59+
* @covers \MacFJA\RediSearch\Query\Builder\OrGroup
60+
* @covers \MacFJA\RediSearch\Query\Builder\Prefix
61+
* @covers \MacFJA\RediSearch\Query\Builder\QueryElement::priority
62+
* @covers \MacFJA\RediSearch\Query\Builder\QueryElementAttribute
63+
* @covers \MacFJA\RediSearch\Query\Builder\RawElement
64+
* @covers \MacFJA\RediSearch\Query\Builder\TagFacet
65+
* @covers \MacFJA\RediSearch\Query\Builder\TextFacet
66+
* @covers \MacFJA\RediSearch\Query\Builder\Word
67+
*
68+
* @uses \MacFJA\RediSearch\Query\Escaper
69+
*
70+
* @internal
71+
*/
72+
class PriorityTest extends \PHPUnit\Framework\TestCase
73+
{
74+
public function testGroupPriority(): void
75+
{
76+
$andGroup = new AndGroup();
77+
$encapsulationGroup = new EncapsulationGroup('(', ')', new RawElement(''));
78+
$orGroup = new OrGroup();
79+
$builderGroup = new Builder();
80+
81+
static::assertSame(QueryElement::PRIORITY_NORMAL, $andGroup->priority());
82+
static::assertSame(QueryElement::PRIORITY_NORMAL, $encapsulationGroup->priority());
83+
static::assertSame(QueryElement::PRIORITY_NORMAL, $orGroup->priority());
84+
static::assertSame(QueryElement::PRIORITY_BEFORE, $builderGroup->priority());
85+
}
86+
87+
public function testFacetPriority(): void
88+
{
89+
$field = new FieldFacet(['foo'], new RawElement(''));
90+
$geo = new GeoFacet(['foo'], 0, 0, 0, GeoFilterOption::UNIT_METERS);
91+
$numeric = new NumericFacet(['foo'], 0, 0);
92+
$tag = new TagFacet(['foo'], '');
93+
$text = new TextFacet(['foo'], '');
94+
95+
static::assertSame(QueryElement::PRIORITY_NORMAL, $field->priority());
96+
static::assertSame(QueryElement::PRIORITY_NORMAL, $geo->priority());
97+
static::assertSame(QueryElement::PRIORITY_NORMAL, $numeric->priority());
98+
static::assertSame(QueryElement::PRIORITY_NORMAL, $tag->priority());
99+
static::assertSame(QueryElement::PRIORITY_NORMAL, $text->priority());
100+
}
101+
102+
public function testModifierPriority(): void
103+
{
104+
$exactMatch = new ExactMatch('foo');
105+
$fuzzy = new Fuzzy('foo');
106+
$negation = new Negation(new RawElement('foo'));
107+
$optional = new Optional(new RawElement('foo'));
108+
$prefix = new Prefix('foo');
109+
$attribute = new QueryElementAttribute(new RawElement('foo'));
110+
$raw = new RawElement('foo');
111+
$word = new Word('foo');
112+
113+
static::assertSame(QueryElement::PRIORITY_NORMAL, $exactMatch->priority());
114+
static::assertSame(QueryElement::PRIORITY_NORMAL, $fuzzy->priority());
115+
static::assertSame(QueryElement::PRIORITY_NORMAL, $negation->priority());
116+
static::assertSame(QueryElement::PRIORITY_NORMAL, $optional->priority());
117+
static::assertSame(QueryElement::PRIORITY_NORMAL, $prefix->priority());
118+
static::assertSame(QueryElement::PRIORITY_NORMAL, $attribute->priority());
119+
static::assertSame(QueryElement::PRIORITY_NORMAL, $raw->priority());
120+
static::assertSame(QueryElement::PRIORITY_NORMAL, $word->priority());
121+
}
122+
}

0 commit comments

Comments
 (0)