Passed
Push — master ( 3f1d3b...2842d6 )
by Alaa
48s queued 11s
created

testReturnsLessItemsIfThereAreFew()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.7998
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Wikibase\DataModel\Services\Tests\EntityId;
4
5
use PHPUnit\Framework\TestCase;
6
use Wikibase\DataModel\Entity\ItemId;
7
use Wikibase\DataModel\Services\EntityId\InMemoryEntityIdPager;
8
9
/**
10
 * @covers \Wikibase\DataModel\Services\EntityId\InMemoryEntityIdPager
11
 *
12
 * @license GPL-2.0-or-later
13
 */
14
class InMemoryEntityIdPagerTest extends TestCase {
15
16
	public function testReturnsEmptyArrayWhenThereAreNoIds() {
17
		$this->assertSame(
18
			[],
19
			( new InMemoryEntityIdPager() )->fetchIds( 10 )
20
		);
21
	}
22
23
	public function testReturnsTheFirstIdsUpToLimit() {
24
		$pager = new InMemoryEntityIdPager(
25
			new ItemId( 'Q1' ),
26
			new ItemId( 'Q2' ),
27
			new ItemId( 'Q3' ),
28
			new ItemId( 'Q4' ),
29
			new ItemId( 'Q5' )
30
		);
31
32
		$this->assertEquals(
33
			[
34
				new ItemId( 'Q1' ),
35
				new ItemId( 'Q2' ),
36
			],
37
			$pager->fetchIds( 2 )
38
		);
39
	}
40
41
	public function testReturnsLessItemsIfThereAreFew() {
42
		$pager = new InMemoryEntityIdPager(
43
			new ItemId( 'Q1' ),
44
			new ItemId( 'Q2' )
45
		);
46
47
		$this->assertEquals(
48
			[
49
				new ItemId( 'Q1' ),
50
				new ItemId( 'Q2' ),
51
			],
52
			$pager->fetchIds( 5 )
53
		);
54
	}
55
56
	public function testReturnsNextBatch() {
57
		$pager = new InMemoryEntityIdPager(
58
			new ItemId( 'Q1' ),
59
			new ItemId( 'Q2' ),
60
			new ItemId( 'Q3' ),
61
			new ItemId( 'Q4' ),
62
			new ItemId( 'Q5' )
63
		);
64
65
		$pager->fetchIds( 2 );
66
67
		$this->assertEquals(
68
			[
69
				new ItemId( 'Q3' ),
70
				new ItemId( 'Q4' ),
71
			],
72
			$pager->fetchIds( 2 )
73
		);
74
	}
75
76
	public function testCanResumeFromPosition() {
77
		$firstPager = new InMemoryEntityIdPager(
78
			new ItemId( 'Q1' ),
79
			new ItemId( 'Q2' ),
80
			new ItemId( 'Q3' ),
81
			new ItemId( 'Q4' ),
82
			new ItemId( 'Q5' )
83
		);
84
85
		$secondPager = new InMemoryEntityIdPager(
86
			new ItemId( 'Q1' ),
87
			new ItemId( 'Q2' ),
88
			new ItemId( 'Q3' ),
89
			new ItemId( 'Q4' ),
90
			new ItemId( 'Q5' )
91
		);
92
93
		$firstPager->fetchIds( 2 );
94
		$secondPager->setPosition( $firstPager->getPosition() );
95
96
		$this->assertEquals(
97
			[
98
				new ItemId( 'Q3' ),
99
				new ItemId( 'Q4' ),
100
			],
101
			$secondPager->fetchIds( 2 )
102
		);
103
	}
104
105
	public function testCanAddIds() {
106
		$pager = new InMemoryEntityIdPager(
107
			new ItemId( 'Q1' )
108
		);
109
110
		$pager->addEntityId( new ItemId( 'Q2' ) );
111
112
		$this->assertEquals(
113
			[
114
				new ItemId( 'Q1' ),
115
				new ItemId( 'Q2' ),
116
			],
117
			$pager->fetchIds( 2 )
118
		);
119
	}
120
121
}
122