FOSSology  4.4.0
Open Source License Compliance by Open Source Software
ArrayOperationTest.php
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2014 Siemens AG
4 
5  SPDX-License-Identifier: GPL-2.0-only
6 */
7 
8 namespace Fossology\Lib\Util;
9 
10 class ArrayOperationTest extends \PHPUnit\Framework\TestCase
11 {
12 
13  protected function setUp() : void
14  {
15  $this->assertCountBefore = \Hamcrest\MatcherAssert::getCount();
16  }
17 
18  protected function tearDown() : void
19  {
20  $this->addToAssertionCount(\Hamcrest\MatcherAssert::getCount()-$this->assertCountBefore);
21  }
22 
23  public function testCallChunked()
24  {
25  $values = array(1, 2, 3);
26 
27  assertThat(ArrayOperation::callChunked(function ($values)
28  {
29  return array(count($values));
30  }, $values, 2), is(array(2, 1)));
31  }
32 
33  public function testCallChunkedWithNoValues()
34  {
35  $values = array();
36 
37  assertThat(ArrayOperation::callChunked(function ($values)
38  {
39  return array(count($values));
40  }, $values, 2), is(emptyArray()));
41  }
42 
43  public function testCallChunkedWithValueSizeSmallerThanChunkLimit()
44  {
45  $values = array(1, 2, 3);
46 
47  assertThat(ArrayOperation::callChunked(function ($values)
48  {
49  return array(count($values));
50  }, $values, 5), is(array(3)));
51  }
52 
53  public function testCallChunkedWithExactMultiple()
54  {
55  $values = array(1, 2, 3, 4);
56 
57  assertThat(ArrayOperation::callChunked(function ($values)
58  {
59  return array(count($values));
60  }, $values, 2), is(array(2, 2)));
61  }
62 
63  public function testCallChunkedShouldThrowExceptionWhenChunkSizeIsNotPositive()
64  {
65  $this->expectException(\InvalidArgumentException::class);
66  $this->expectExceptionMessage("chunk size should be positive");
67  ArrayOperation::callChunked(function ($values)
68  {
69  return array(count($values));
70  }, array(), 0);
71  }
72 
73  public function testMultiSearch()
74  {
75  $haystack = array(100, 101, 102, 101);
76  assertThat(ArrayOperation::multiSearch(array(100),$haystack),is(0));
77  assertThat(ArrayOperation::multiSearch(array(101),$haystack),is(1));
78  assertThat(ArrayOperation::multiSearch(array(100,102),$haystack),is(0));
79  assertThat(ArrayOperation::multiSearch(array(200),$haystack),is(false));
80  assertThat(ArrayOperation::multiSearch(array(200,102),$haystack),is(2));
81  }
82 
83  public function testArrayKeyExists()
84  {
85  $haystack = ["Key1" => "Value1", "Key2" => "Value2", "Key3" => "Value3"];
86  $this->assertTrue(ArrayOperation::arrayKeysExists($haystack, ["Key1", "Key2", "Key3"]));
87  $this->assertTrue(ArrayOperation::arrayKeysExists($haystack, ["Key1", "Key2"]));
88  $this->assertTrue(ArrayOperation::arrayKeysExists($haystack, ["Key3"]));
89  $this->assertFalse(ArrayOperation::arrayKeysExists($haystack, ["Key11", "Key2", "Key3"]));
90  $this->assertFalse(ArrayOperation::arrayKeysExists($haystack, ["Key11"]));
91  }
92 }
static arrayKeysExists(array $array, array $keys)
Check if a list of keys exists in associative array.