/** * @param array $data * * @return void * @dataProvider getData */ public function test_function(array $data) { // invoke logic $result = SimpleArrayLibrary::hasAllKeys($data['array'], $data['keys']); // test $this->assertEquals($data['expected'], $result); }
/** * @param array $initialData * @param string $serverName * @param string $database * @param string $username * @param string $password * @param array $dependencies * * @throws AlreadyInitializedException */ public static function initMySQL(array $initialData, $serverName, $database, $username, $password, array $dependencies) { if (!static::$instance) { if (empty($serverName) || !is_string($serverName)) { throw new UnexpectedValueException('Invalid server name'); } if (empty($database) || !is_string($database)) { throw new UnexpectedValueException('Invalid database name'); } if (empty($username) || !is_string($username)) { throw new UnexpectedValueException('Invalid username'); } if (!is_string($password)) { throw new UnexpectedValueException('Invalid password'); } if (!SimpleArrayLibrary::isAssociative($initialData) && !empty($initialData)) { throw new UnexpectedValueException('Invalid table names'); } static::$initialData = $initialData; static::initDependencyHandler($initialData, $dependencies); static::$instance->connection = new PDO('mysql:host=' . $serverName . ';dbname=' . $database, $username, $password); static::$instance->primaryKeys = []; foreach ($initialData as $table => $data) { $stmt = static::$instance->connection->prepare("SHOW KEYS FROM {$table} WHERE Key_name = 'PRIMARY'"); $stmt->execute(); static::$instance->primaryKeys[$table] = []; foreach ($stmt->fetchAll() as $row) { static::$instance->primaryKeys[$table][] = $row['Column_name']; } } foreach (static::$instance->primaryKeys as $table => $keys) { foreach ($initialData[$table] as $row) { if (!SimpleArrayLibrary::hasAllKeys($row, $keys)) { throw new UnexpectedValueException('Missing keys in initial data for table: ' . $table); } } } // edit $data array where needed static::$instance->update(); } else { throw new AlreadyInitializedException('MySQL library already initialized'); } }