@@ -248,4 +248,96 @@ public function testGivenNonTraversable_constructorThrowsException() {
248248 new StatementList ( null );
249249 }
250250
251+ public function testCountForEmptyList () {
252+ $ list = new StatementList ();
253+ $ this ->assertSame ( 0 , count ( $ list ) );
254+ $ this ->assertSame ( 0 , $ list ->count () );
255+ }
256+
257+ public function testCountForNonEmptyList () {
258+ $ list = new StatementList ( array (
259+ $ this ->getStatementWithSnak ( 1 , 'foo ' ),
260+ $ this ->getStatementWithSnak ( 2 , 'bar ' ),
261+ ) );
262+
263+ $ this ->assertSame ( 2 , $ list ->count () );
264+ }
265+
266+ /**
267+ * @dataProvider statementArrayProvider
268+ */
269+ public function testGivenIdenticalLists_equalsReturnsTrue ( array $ statements ) {
270+ $ firstStatements = new StatementList ( $ statements );
271+ $ secondStatements = new StatementList ( $ statements );
272+
273+ $ this ->assertTrue ( $ firstStatements ->equals ( $ secondStatements ) );
274+ }
275+
276+ public function statementArrayProvider () {
277+ return array (
278+ array (
279+ array (
280+ $ this ->getStatementWithSnak ( 1 , 'foo ' ),
281+ $ this ->getStatementWithSnak ( 2 , 'bar ' ),
282+ )
283+ ),
284+
285+ array (
286+ array (
287+ $ this ->getStatementWithSnak ( 1 , 'foo ' ),
288+ )
289+ ),
290+
291+ array (
292+ array ()
293+ ),
294+ );
295+ }
296+
297+ public function testGivenDifferentLists_equalsReturnsFalse () {
298+ $ firstStatements = new StatementList ( array (
299+ $ this ->getStatementWithSnak ( 1 , 'foo ' ),
300+ $ this ->getStatementWithSnak ( 2 , 'bar ' ),
301+ ) );
302+
303+ $ secondStatements = new StatementList ( array (
304+ $ this ->getStatementWithSnak ( 1 , 'foo ' ),
305+ $ this ->getStatementWithSnak ( 2 , 'SPAM ' ),
306+ ) );
307+
308+ $ this ->assertFalse ( $ firstStatements ->equals ( $ secondStatements ) );
309+ }
310+
311+ public function testGivenListsWithDifferentDuplicates_equalsReturnsFalse () {
312+ $ firstStatements = new StatementList ( array (
313+ $ this ->getStatementWithSnak ( 1 , 'foo ' ),
314+ $ this ->getStatementWithSnak ( 1 , 'foo ' ),
315+ $ this ->getStatementWithSnak ( 2 , 'bar ' ),
316+ ) );
317+
318+ $ secondStatements = new StatementList ( array (
319+ $ this ->getStatementWithSnak ( 1 , 'foo ' ),
320+ $ this ->getStatementWithSnak ( 2 , 'bar ' ),
321+ $ this ->getStatementWithSnak ( 2 , 'bar ' ),
322+ ) );
323+
324+ $ this ->assertFalse ( $ firstStatements ->equals ( $ secondStatements ) );
325+ }
326+
327+ public function testGivenListsWithDifferentOrder_equalsReturnsFalse () {
328+ $ firstStatements = new StatementList ( array (
329+ $ this ->getStatementWithSnak ( 1 , 'foo ' ),
330+ $ this ->getStatementWithSnak ( 2 , 'bar ' ),
331+ $ this ->getStatementWithSnak ( 3 , 'baz ' ),
332+ ) );
333+
334+ $ secondStatements = new StatementList ( array (
335+ $ this ->getStatementWithSnak ( 1 , 'foo ' ),
336+ $ this ->getStatementWithSnak ( 3 , 'baz ' ),
337+ $ this ->getStatementWithSnak ( 2 , 'bar ' ),
338+ ) );
339+
340+ $ this ->assertFalse ( $ firstStatements ->equals ( $ secondStatements ) );
341+ }
342+
251343}
0 commit comments