From f4d0c27614055db6cb1192bfa97fdf72c866279a Mon Sep 17 00:00:00 2001 From: Jim Parry Date: Fri, 1 Mar 2019 01:32:56 -0800 Subject: [PATCH] Release 4.0.0-beta.1 --- _support/Autoloader/UnnamespacedClass.php | 5 + _support/CIDatabaseTestCase.php | 8 + _support/CIUnitTestCase.php | 8 + _support/Cache/Handlers/MockHandler.php | 198 +++++++++++++ _support/Commands/AbstractInfo.php | 13 + _support/Commands/AppInfo.php | 36 +++ .../Commands/CommandsTestStreamFilter.php | 18 ++ _support/Config/BadRegistrar.php | 18 ++ _support/Config/MockAppConfig.php | 33 +++ _support/Config/MockAutoload.php | 21 ++ _support/Config/MockCLIConfig.php | 32 ++ _support/Config/MockLogger.php | 103 +++++++ _support/Config/Registrar.php | 27 ++ _support/Config/Routes.php | 7 + .../20160428212500_Create_test_tables.php | 113 +++++++ _support/Database/MockBuilder.php | 15 + _support/Database/MockConnection.php | 279 ++++++++++++++++++ _support/Database/MockQuery.php | 8 + _support/Database/MockResult.php | 93 ++++++ _support/Database/Seeds/CITestSeeder.php | 78 +++++ .../SupportMigrations/001_Some_migration.php | 24 ++ _support/Events/MockEvents.php | 66 +++++ _support/Files/able/apple.php | 6 + _support/Files/able/fig_3.php | 6 + _support/Files/able/prune_ripe.php | 6 + _support/Files/baker/banana.php | 6 + _support/HTTP/Files/CookiesHolder.txt | 1 + _support/HTTP/Files/tmp/fileA.txt | 1 + _support/HTTP/Files/tmp/fileB.txt | 1 + _support/HTTP/MockCURLRequest.php | 52 ++++ _support/HTTP/MockIncomingRequest.php | 17 ++ _support/HTTP/MockResponse.php | 31 ++ _support/Images/EXIFsamples/down-mirrored.jpg | Bin 0 -> 15437 bytes _support/Images/EXIFsamples/down.jpg | Bin 0 -> 7004 bytes _support/Images/EXIFsamples/left-mirrored.jpg | Bin 0 -> 13042 bytes _support/Images/EXIFsamples/left.jpg | Bin 0 -> 3874 bytes .../Images/EXIFsamples/right-mirrored.jpg | Bin 0 -> 15058 bytes _support/Images/EXIFsamples/right.jpg | Bin 0 -> 5990 bytes _support/Images/EXIFsamples/up-mirrored.jpg | Bin 0 -> 11987 bytes _support/Images/EXIFsamples/up.jpg | Bin 0 -> 3266 bytes _support/Images/Steveston_dusk.JPG | Bin 0 -> 121762 bytes _support/Images/ci-logo.gif | Bin 0 -> 1844 bytes _support/Images/ci-logo.jpeg | Bin 0 -> 7534 bytes _support/Images/ci-logo.png | Bin 0 -> 4537 bytes _support/Language/MockLanguage.php | 61 ++++ _support/Language/SecondMockLanguage.php | 27 ++ _support/Language/ab-CD/Allin.php | 8 + _support/Language/ab/Allin.php | 8 + _support/Language/en-ZZ/More.php | 6 + _support/Language/en/Allin.php | 8 + _support/Language/en/Core.php | 20 ++ _support/Language/en/More.php | 7 + _support/Language/ru/Language.php | 5 + _support/Log/Handlers/MockChromeHandler.php | 25 ++ _support/Log/Handlers/MockFileHandler.php | 25 ++ _support/Log/Handlers/TestHandler.php | 64 ++++ _support/Log/TestLogger.php | 82 +++++ _support/MockCodeIgniter.php | 11 + _support/MockCommon.php | 37 +++ _support/Models/EntityModel.php | 20 ++ _support/Models/EventModel.php | 79 +++++ _support/Models/JobModel.php | 19 ++ _support/Models/SecondaryModel.php | 21 ++ _support/Models/SimpleEntity.php | 29 ++ _support/Models/UserModel.php | 21 ++ _support/Models/ValidErrorsModel.php | 30 ++ _support/Models/ValidModel.php | 34 +++ _support/Security/MockSecurity.php | 17 ++ _support/Services.php | 70 +++++ _support/Session/MockSession.php | 72 +++++ _support/SomeEntity.php | 13 + _support/Validation/TestRules.php | 14 + _support/Validation/uploads/phpUxc0ty | Bin 0 -> 4614 bytes _support/View/SampleClass.php | 52 ++++ _support/View/Views/simple.php | 1 + _support/View/Views/simpler.php | 1 + _support/_bootstrap.php | 32 ++ _support/coverage.txt | 70 +++++ app/Config/App.php | 2 +- app/Config/Cache.php | 1 + app/Views/welcome_message.php | 15 +- composer.json | 2 +- env | 6 + phpunit.xml.dist | 28 ++ 84 files changed, 2365 insertions(+), 8 deletions(-) create mode 100644 _support/Autoloader/UnnamespacedClass.php create mode 100644 _support/CIDatabaseTestCase.php create mode 100644 _support/CIUnitTestCase.php create mode 100644 _support/Cache/Handlers/MockHandler.php create mode 100644 _support/Commands/AbstractInfo.php create mode 100644 _support/Commands/AppInfo.php create mode 100644 _support/Commands/CommandsTestStreamFilter.php create mode 100644 _support/Config/BadRegistrar.php create mode 100644 _support/Config/MockAppConfig.php create mode 100644 _support/Config/MockAutoload.php create mode 100644 _support/Config/MockCLIConfig.php create mode 100644 _support/Config/MockLogger.php create mode 100644 _support/Config/Registrar.php create mode 100644 _support/Config/Routes.php create mode 100644 _support/Database/Migrations/20160428212500_Create_test_tables.php create mode 100644 _support/Database/MockBuilder.php create mode 100644 _support/Database/MockConnection.php create mode 100644 _support/Database/MockQuery.php create mode 100644 _support/Database/MockResult.php create mode 100644 _support/Database/Seeds/CITestSeeder.php create mode 100644 _support/Database/SupportMigrations/001_Some_migration.php create mode 100644 _support/Events/MockEvents.php create mode 100644 _support/Files/able/apple.php create mode 100644 _support/Files/able/fig_3.php create mode 100644 _support/Files/able/prune_ripe.php create mode 100644 _support/Files/baker/banana.php create mode 100644 _support/HTTP/Files/CookiesHolder.txt create mode 100644 _support/HTTP/Files/tmp/fileA.txt create mode 100644 _support/HTTP/Files/tmp/fileB.txt create mode 100644 _support/HTTP/MockCURLRequest.php create mode 100644 _support/HTTP/MockIncomingRequest.php create mode 100755 _support/HTTP/MockResponse.php create mode 100644 _support/Images/EXIFsamples/down-mirrored.jpg create mode 100644 _support/Images/EXIFsamples/down.jpg create mode 100644 _support/Images/EXIFsamples/left-mirrored.jpg create mode 100644 _support/Images/EXIFsamples/left.jpg create mode 100644 _support/Images/EXIFsamples/right-mirrored.jpg create mode 100644 _support/Images/EXIFsamples/right.jpg create mode 100644 _support/Images/EXIFsamples/up-mirrored.jpg create mode 100644 _support/Images/EXIFsamples/up.jpg create mode 100644 _support/Images/Steveston_dusk.JPG create mode 100644 _support/Images/ci-logo.gif create mode 100644 _support/Images/ci-logo.jpeg create mode 100644 _support/Images/ci-logo.png create mode 100644 _support/Language/MockLanguage.php create mode 100644 _support/Language/SecondMockLanguage.php create mode 100644 _support/Language/ab-CD/Allin.php create mode 100644 _support/Language/ab/Allin.php create mode 100644 _support/Language/en-ZZ/More.php create mode 100644 _support/Language/en/Allin.php create mode 100644 _support/Language/en/Core.php create mode 100644 _support/Language/en/More.php create mode 100644 _support/Language/ru/Language.php create mode 100644 _support/Log/Handlers/MockChromeHandler.php create mode 100644 _support/Log/Handlers/MockFileHandler.php create mode 100644 _support/Log/Handlers/TestHandler.php create mode 100644 _support/Log/TestLogger.php create mode 100644 _support/MockCodeIgniter.php create mode 100644 _support/MockCommon.php create mode 100644 _support/Models/EntityModel.php create mode 100644 _support/Models/EventModel.php create mode 100644 _support/Models/JobModel.php create mode 100644 _support/Models/SecondaryModel.php create mode 100644 _support/Models/SimpleEntity.php create mode 100644 _support/Models/UserModel.php create mode 100644 _support/Models/ValidErrorsModel.php create mode 100644 _support/Models/ValidModel.php create mode 100644 _support/Security/MockSecurity.php create mode 100644 _support/Services.php create mode 100644 _support/Session/MockSession.php create mode 100644 _support/SomeEntity.php create mode 100644 _support/Validation/TestRules.php create mode 100644 _support/Validation/uploads/phpUxc0ty create mode 100644 _support/View/SampleClass.php create mode 100644 _support/View/Views/simple.php create mode 100644 _support/View/Views/simpler.php create mode 100644 _support/_bootstrap.php create mode 100644 _support/coverage.txt create mode 100644 phpunit.xml.dist diff --git a/_support/Autoloader/UnnamespacedClass.php b/_support/Autoloader/UnnamespacedClass.php new file mode 100644 index 00000000..67b1ed35 --- /dev/null +++ b/_support/Autoloader/UnnamespacedClass.php @@ -0,0 +1,5 @@ +prefix . $key; + + return array_key_exists($key, $this->cache) + ? $this->cache[$key] + : false; + } + + //-------------------------------------------------------------------- + + /** + * Saves an item to the cache store. + * + * The $raw parameter is only utilized by Mamcache in order to + * allow usage of increment() and decrement(). + * + * @param string $key Cache item name + * @param $value the data to save + * @param null $ttl Time To Live, in seconds (default 60) + * @param boolean $raw Whether to store the raw value. + * + * @return mixed + */ + public function save(string $key, $value, int $ttl = 60, bool $raw = false) + { + $key = $this->prefix . $key; + + $this->cache[$key] = $value; + + return true; + } + + //-------------------------------------------------------------------- + + /** + * Deletes a specific item from the cache store. + * + * @param string $key Cache item name + * + * @return mixed + */ + public function delete(string $key) + { + unset($this->cache[$key]); + } + + //-------------------------------------------------------------------- + + /** + * Performs atomic incrementation of a raw stored value. + * + * @param string $key Cache ID + * @param integer $offset Step/value to increase by + * + * @return mixed + */ + public function increment(string $key, int $offset = 1) + { + $key = $this->prefix . $key; + + $data = $this->cache[$key] ?: null; + + if (empty($data)) + { + $data = 0; + } + elseif (! is_int($data)) + { + return false; + } + + return $this->save($key, $data + $offset); + } + + //-------------------------------------------------------------------- + + /** + * Performs atomic decrementation of a raw stored value. + * + * @param string $key Cache ID + * @param integer $offset Step/value to increase by + * + * @return mixed + */ + public function decrement(string $key, int $offset = 1) + { + $key = $this->prefix . $key; + + $data = $this->cache[$key] ?: null; + + if (empty($data)) + { + $data = 0; + } + elseif (! is_int($data)) + { + return false; + } + + return $this->save($key, $data - $offset); + } + + //-------------------------------------------------------------------- + + /** + * Will delete all items in the entire cache. + * + * @return mixed + */ + public function clean() + { + $this->cache = []; + } + + //-------------------------------------------------------------------- + + /** + * Returns information on the entire cache. + * + * The information returned and the structure of the data + * varies depending on the handler. + * + * @return mixed + */ + public function getCacheInfo() + { + return []; + } + + //-------------------------------------------------------------------- + + /** + * Returns detailed information about the specific item in the cache. + * + * @param string $key Cache item name. + * + * @return mixed + */ + public function getMetaData(string $key) + { + return false; + } + + //-------------------------------------------------------------------- + + /** + * Determines if the driver is supported on this system. + * + * @return boolean + */ + public function isSupported(): bool + { + return true; + } + + //-------------------------------------------------------------------- + +} diff --git a/_support/Commands/AbstractInfo.php b/_support/Commands/AbstractInfo.php new file mode 100644 index 00000000..2ca684e2 --- /dev/null +++ b/_support/Commands/AbstractInfo.php @@ -0,0 +1,13 @@ +showError($oops); + } + } + + public function helpme() + { + $this->call('help'); + } +} diff --git a/_support/Commands/CommandsTestStreamFilter.php b/_support/Commands/CommandsTestStreamFilter.php new file mode 100644 index 00000000..599075ba --- /dev/null +++ b/_support/Commands/CommandsTestStreamFilter.php @@ -0,0 +1,18 @@ +data; + $consumed += $bucket->datalen; + } + return PSFS_PASS_ON; + } +} + +stream_filter_register('CommandsTestStreamFilter', 'CodeIgniter\Commands\CommandsTestStreamFilter'); diff --git a/_support/Config/BadRegistrar.php b/_support/Config/BadRegistrar.php new file mode 100644 index 00000000..877d7be5 --- /dev/null +++ b/_support/Config/BadRegistrar.php @@ -0,0 +1,18 @@ + [ + /* + * The log levels that this handler will handle. + */ + 'handles' => [ + 'critical', + 'alert', + 'emergency', + 'debug', + 'error', + 'info', + 'notice', + 'warning', + ], + ], + ]; + +} diff --git a/_support/Config/Registrar.php b/_support/Config/Registrar.php new file mode 100644 index 00000000..9d00c6a2 --- /dev/null +++ b/_support/Config/Registrar.php @@ -0,0 +1,27 @@ + [ + 'first', + 'second', + ], + 'format' => 'nice', + 'fruit' => [ + 'apple', + 'banana', + ], + ]; + } + +} diff --git a/_support/Config/Routes.php b/_support/Config/Routes.php new file mode 100644 index 00000000..2369e33b --- /dev/null +++ b/_support/Config/Routes.php @@ -0,0 +1,7 @@ +add('testing', 'TestController::index'); diff --git a/_support/Database/Migrations/20160428212500_Create_test_tables.php b/_support/Database/Migrations/20160428212500_Create_test_tables.php new file mode 100644 index 00000000..8d4a93a0 --- /dev/null +++ b/_support/Database/Migrations/20160428212500_Create_test_tables.php @@ -0,0 +1,113 @@ +db->DBDriver === 'SQLite3' ? 'unique' : 'auto_increment'; + + // User Table + $this->forge->addField([ + 'id' => [ + 'type' => 'INTEGER', + 'constraint' => 3, + $unique_or_auto => true, + ], + 'name' => [ + 'type' => 'VARCHAR', + 'constraint' => 80, + ], + 'email' => [ + 'type' => 'VARCHAR', + 'constraint' => 100, + ], + 'country' => [ + 'type' => 'VARCHAR', + 'constraint' => 40, + ], + 'deleted' => [ + 'type' => 'TINYINT', + 'constraint' => 1, + 'default' => '0', + ], + ]); + $this->forge->addKey('id', true); + $this->forge->createTable('user', true); + + // Job Table + $this->forge->addField([ + 'id' => [ + 'type' => 'INTEGER', + 'constraint' => 3, + $unique_or_auto => true, + ], + 'name' => [ + 'type' => 'VARCHAR', + 'constraint' => 40, + ], + 'description' => ['type' => 'TEXT'], + 'created_at' => [ + 'type' => 'DATETIME', + 'null' => true, + ], + ]); + $this->forge->addKey('id', true); + $this->forge->createTable('job', true); + + // Misc Table + $this->forge->addField([ + 'id' => [ + 'type' => 'INTEGER', + 'constraint' => 3, + $unique_or_auto => true, + ], + 'key' => [ + 'type' => 'VARCHAR', + 'constraint' => 40, + ], + 'value' => ['type' => 'TEXT'], + ]); + $this->forge->addKey('id', true); + $this->forge->createTable('misc', true); + + // Empty Table + $this->forge->addField([ + 'id' => [ + 'type' => 'INTEGER', + 'constraint' => 3, + $unique_or_auto => true, + ], + 'name' => [ + 'type' => 'VARCHAR', + 'constraint' => 40, + ], + ]); + $this->forge->addKey('id', true); + $this->forge->createTable('empty', true); + + //No Primary Key + $this->forge->addField([ + 'key' => [ + 'type' => 'VARCHAR', + 'constraint' => 40, + ], + 'value' => ['type' => 'TEXT'], + ]); + $this->forge->createTable('secondary', true); + } + + //-------------------------------------------------------------------- + + public function down() + { + $this->forge->dropTable('user'); + $this->forge->dropTable('job'); + $this->forge->dropTable('misc'); + $this->forge->dropTable('empty'); + $this->forge->dropTable('secondary'); + } + + //-------------------------------------------------------------------- + +} diff --git a/_support/Database/MockBuilder.php b/_support/Database/MockBuilder.php new file mode 100644 index 00000000..98c7fb67 --- /dev/null +++ b/_support/Database/MockBuilder.php @@ -0,0 +1,15 @@ +returnValues[$method] = $return; + + return $this; + } + + //-------------------------------------------------------------------- + + public function query(string $sql, $binds = null, bool $setEscapeFlags = true, $queryClass = 'CodeIgniter\\Database\\Query') + { + $queryClass = str_replace('Connection', 'Query', get_class($this)); + + $query = new $queryClass($this); + + $query->setQuery($sql, $binds, $setEscapeFlags); + + if (! empty($this->swapPre) && ! empty($this->DBPrefix)) + { + $query->swapPrefix($this->DBPrefix, $this->swapPre); + } + + $startTime = microtime(true); + + $this->lastQuery = $query; + + // Run the query + if (false === ($this->resultID = $this->simpleQuery($query->getQuery()))) + { + $query->setDuration($startTime, $startTime); + + // @todo deal with errors + + return false; + } + + $query->setDuration($startTime); + + $resultClass = str_replace('Connection', 'Result', get_class($this)); + + return new $resultClass($this->connID, $this->resultID); + } + + //-------------------------------------------------------------------- + + /** + * Connect to the database. + * + * @return mixed + */ + public function connect($persistent = false) + { + $return = $this->returnValues['connect'] ?? true; + + if (is_array($return)) + { + // By removing the top item here, we can + // get a different value for, say, testing failover connections. + $return = array_shift($this->returnValues['connect']); + } + + return $return; + } + + //-------------------------------------------------------------------- + + /** + * Keep or establish the connection if no queries have been sent for + * a length of time exceeding the server's idle timeout. + * + * @return mixed + */ + public function reconnect() + { + return true; + } + + //-------------------------------------------------------------------- + + /** + * Select a specific database table to use. + * + * @param string $databaseName + * + * @return mixed + */ + public function setDatabase(string $databaseName) + { + $this->database = $databaseName; + + return $this; + } + + //-------------------------------------------------------------------- + + /** + * Returns a string containing the version of the database being used. + * + * @return mixed + */ + public function getVersion() + { + return \CodeIgniter\CodeIgniter::CI_VERSION; + } + + //-------------------------------------------------------------------- + + /** + * Executes the query against the database. + * + * @param $sql + * + * @return mixed + */ + protected function execute($sql) + { + return $this->returnValues['execute']; + } + + //-------------------------------------------------------------------- + + /** + * Returns the total number of rows affected by this query. + * + * @return mixed + */ + public function affectedRows(): int + { + return 1; + } + + //-------------------------------------------------------------------- + + /** + * Returns the last error code and message. + * + * Must return an array with keys 'code' and 'message': + * + * return ['code' => null, 'message' => null); + * + * @return array + */ + public function error() + { + return [ + 'code' => null, + 'message' => null, + ]; + } + + //-------------------------------------------------------------------- + + /** + * Insert ID + * + * @return integer + */ + public function insertID() + { + return $this->connID->insert_id; + } + + //-------------------------------------------------------------------- + + /** + * Generates the SQL for listing tables in a platform-dependent manner. + * + * @param boolean $constrainByPrefix + * + * @return string + */ + protected function _listTables($constrainByPrefix = false): string + { + return ''; + } + + //-------------------------------------------------------------------- + + /** + * Generates a platform-specific query string so that the column names can be fetched. + * + * @param string $table + * + * @return string + */ + protected function _listColumns(string $table = ''): string + { + return ''; + } + + /** + * @param string $table + * @return array + */ + protected function _fieldData(string $table): array + { + return []; + } + + /** + * @param string $table + * @return array + */ + protected function _indexData(string $table): array + { + return []; + } + + /** + * @param string $table + * @return array + */ + protected function _foreignKeyData(string $table): array + { + return []; + } + + //-------------------------------------------------------------------- + + /** + * Close the connection. + */ + protected function _close() + { + return; + } + + //-------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return boolean + */ + protected function _transBegin(): bool + { + return true; + } + + //-------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return boolean + */ + protected function _transCommit(): bool + { + return true; + } + + //-------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return boolean + */ + protected function _transRollback(): bool + { + return true; + } + + //-------------------------------------------------------------------- +} diff --git a/_support/Database/MockQuery.php b/_support/Database/MockQuery.php new file mode 100644 index 00000000..0008104a --- /dev/null +++ b/_support/Database/MockQuery.php @@ -0,0 +1,8 @@ + [ + [ + 'name' => 'Derek Jones', + 'email' => 'derek@world.com', + 'country' => 'US', + ], + [ + 'name' => 'Ahmadinejad', + 'email' => 'ahmadinejad@world.com', + 'country' => 'Iran', + ], + [ + 'name' => 'Richard A Causey', + 'email' => 'richard@world.com', + 'country' => 'US', + ], + [ + 'name' => 'Chris Martin', + 'email' => 'chris@world.com', + 'country' => 'UK', + ], + ], + 'job' => [ + [ + 'name' => 'Developer', + 'description' => 'Awesome job, but sometimes makes you bored', + ], + [ + 'name' => 'Politician', + 'description' => 'This is not really a job', + ], + [ + 'name' => 'Accountant', + 'description' => 'Boring job, but you will get free snack at lunch', + ], + [ + 'name' => 'Musician', + 'description' => 'Only Coldplay can actually called Musician', + ], + ], + 'misc' => [ + [ + 'key' => '\\xxxfoo456', + 'value' => 'Entry with \\xxx', + ], + [ + 'key' => '\\%foo456', + 'value' => 'Entry with \\%', + ], + [ + 'key' => 'spaces and tabs', + 'value' => ' One two three tab', + ], + ], + ]; + + foreach ($data as $table => $dummy_data) + { + $this->db->table($table)->truncate(); + + foreach ($dummy_data as $single_dummy_data) + { + $this->db->table($table)->insert($single_dummy_data); + } + } + } + + //-------------------------------------------------------------------- + +} diff --git a/_support/Database/SupportMigrations/001_Some_migration.php b/_support/Database/SupportMigrations/001_Some_migration.php new file mode 100644 index 00000000..2b984987 --- /dev/null +++ b/_support/Database/SupportMigrations/001_Some_migration.php @@ -0,0 +1,24 @@ +forge->addField([ + 'key' => [ + 'type' => 'VARCHAR', + 'constraint' => 255, + ], + ]); + $this->forge->createTable('foo', true); + + $this->db->table('foo')->insert([ + 'key' => 'foobar', + ]); + } + + public function down() + { + $this->forge->dropTable('foo'); + } +} diff --git a/_support/Events/MockEvents.php b/_support/Events/MockEvents.php new file mode 100644 index 00000000..ce30d4f4 --- /dev/null +++ b/_support/Events/MockEvents.php @@ -0,0 +1,66 @@ +output = $output; + + return $this; + } + + //-------------------------------------------------------------------- + + protected function sendRequest(array $curl_options = []): string + { + // Save so we can access later. + $this->curl_options = $curl_options; + + return $this->output; + } + + //-------------------------------------------------------------------- + // for testing purposes only + public function getBaseURI() + { + return $this->baseURI; + } + + // for testing purposes only + public function getDelay() + { + return $this->delay; + } + +} diff --git a/_support/HTTP/MockIncomingRequest.php b/_support/HTTP/MockIncomingRequest.php new file mode 100644 index 00000000..627fc9a0 --- /dev/null +++ b/_support/HTTP/MockIncomingRequest.php @@ -0,0 +1,17 @@ +pretend; + } + + // artificial error for testing + public function misbehave() + { + $this->statusCode = 0; + } + +} diff --git a/_support/Images/EXIFsamples/down-mirrored.jpg b/_support/Images/EXIFsamples/down-mirrored.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34a7b1d39524933051655b93fcf6726a358b1064 GIT binary patch literal 15437 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 literal 0 HcmV?d00001 diff --git a/_support/Images/EXIFsamples/down.jpg b/_support/Images/EXIFsamples/down.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9077a7c92b0f72da0e1a8810ae1e590f6c61facf GIT binary patch literal 7004 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 literal 0 HcmV?d00001 diff --git a/_support/Images/EXIFsamples/left-mirrored.jpg b/_support/Images/EXIFsamples/left-mirrored.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1832702492e71eefcae2410af27b022ee28e3102 GIT binary patch literal 13042 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 S{l5e6?`rrzdN1^7=zjon8f?@6 literal 0 HcmV?d00001 diff --git a/_support/Images/EXIFsamples/left.jpg b/_support/Images/EXIFsamples/left.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad1f89850f5a98e5b8047b2604fece8cba81d421 GIT binary patch literal 3874 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 literal 0 HcmV?d00001 diff --git a/_support/Images/EXIFsamples/right-mirrored.jpg b/_support/Images/EXIFsamples/right-mirrored.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc8a29aebea7fb82127f74a3d7fa3f1e09ccc54e GIT binary patch literal 15058 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 literal 0 HcmV?d00001 diff --git a/_support/Images/EXIFsamples/up-mirrored.jpg b/_support/Images/EXIFsamples/up-mirrored.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e1865a5f0ea372e04b415626d5cee7f807d37447 GIT binary patch literal 11987 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 literal 0 HcmV?d00001 diff --git a/_support/Images/EXIFsamples/up.jpg b/_support/Images/EXIFsamples/up.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70fc26ff2de86d4dfd8cbd9a92a7ed3ec0d7c8e7 GIT binary patch literal 3266 zcmeH``CHOk9>>4nikXV0rU}mIZ80M=3hla$lgo6Ke2UCO(^0#aOYR$raLX1egC{FB zTxue3QTHsZ!j#?UN>uRq`UsqR07ou-q0MUm) z3=EA84b~a0gFx0p*Bcp|m_SVo3{A~UP0TdjMEw|8rw{%K^acci0_ta)${;`sr0J{M z{VIKkfu1f{TSqhdR}&Bb27$G~+7O7Y-Y?T2u$H!tuAV*=VruqhXV(qp-chNUSr1tj z8|`-QJrsPs&+ zM5P38TPt(~!&gwkFZI9AJtKcEHsCQM53t0X?s&F_4y zD$H`^94MzKc@w*we(>a*{^_;R|A;eYzS@4 zGb5dJdhhjNS0`$CD09+T@p;ty(d4dNPDWQU)L9;M|0t$6`BL_V)R2v*+{-3ILTiLS zO42dD4RgV}`gK%h_)FtY>ZROnd`DpdlZTeP2eseF;412ex7M1+^tL^94>`zG9xYtYr&#OLzbEdyN z@~o{xYZR|4TCSJ;Asa}v39ji)Yzr5MyRi%4_si14+@FcB=9JaH$Zdbx=hR0zkbPG$ z;+i&T*C)9L=QB^vV<`rXRq&AUHuH31pJMk4<4UW zO^`g>Nn=-x*}}b&v8Wi?(tp7Naj&bkV=A$&h;>npv82(bEXtIQSSC!F zzTvQdbb#PeKW0>h5AJLyLptjODdfS~B8;rNL>wP6f2#@+ckwIi#F~>sml-qZ5sCTU zq=juSJAFOC%jKWTKPj9z*`&YltwuAH-hB_geA25#p@G^c7ovHJD$ZJ!&*7?lxtvi}z zejYeRFr(9z{zzDI*{?h(AgfVI8fZF3*_`k}hD;iW5W45g#XQ(?gzoUSOTtES9~Ay` z;gap2*4#8TqA@FQWxpTr3cZ zgx}eX6EWizmB&59LsKRnD(aQ4GIF0BYkD9#Jp%56HYvJY3hoTQXlelSMv{hEjCy6~o*Sl~}im7K1#0}O16P|uyembhc) zMipc28*E-N;dH@q`QEe@ANt}NWPl!GQm=*_G>?2rDy|qDBjkR3Vp*yC_DqaLds4?8 zw^7}b7pV)fP%1w+j0=w+VmTJvgzFEd*9eE4wzcw^N!9@`cqysyQWRz9wk3Okbc(t= zi2ts(cfyrm^*xhYSBW}k_x`y}sv3aij|T6#b;mvcr3T)M@cwUZY|PAYF~X-8SP)!4 z`#zKrkku?d?6U>gZ2g=W)U&6sb98XBEYxd9YbbXbopS!#PfIaRsc_rZUye_}O9Ku{ z@?Q9aZ3*D#o#^qPb<7~+WU%*>1JYNdvy2IymlB5wONAPkGk%Y%wV;j9^hBN`*!C2_ zcS=gfuFDs`SSOtPr`6UHAX_&dhh3nWn7$?SJ>T`|F#T@AE#_`#hibdEfUt@2D>wU+z5nY`uaW zg2C9^Yhh$C7z`FOTuhuzt%BAFpylAc0bb+8q%dM|-wLnsTzWgunqm@czBtfCuI(P6 zNkHS^UI4FA;=MZbcuBVYkHG&9j4b_^ETk{SV`wx31ARRE!q|Zf=?lFR^+<*^JRU>R z*C(6m8=D#s@kA3-3dxjWj8Vj7Z{S4s6PWDg(x-u*lECRT2s~j@q%o3k(yxOjFP6*Ug9=7Gmy;m_ zvXkJ_h<_A+w31E$&0k4k z;v5WLn?YP$`htRBB_Um+6@uPx-W0ql_7o` z3FUwKl9#ojhtik&FT`8=M+8Ut0z-WY5laRZ2}?A9ctS~h#@<-OjKnr060!R5V{Bk3FYC|oWTFpA zkW9#i;EUry-x$0=dInfypbYg5$VP}Zw_`)d-q6?(yci%C^p2<-VT~wQ6C&1_Xp8{j zPvSZ!f&(mxYy>J;A_+(X2$IO@3b7^1%LZ^%^`S)q*A$8YfXjY2(&rLn0}9e1{K(4& za@2_w@JZ%$ZwL{PVN8sTNmz=$0g-D(0s}rC#LRIEAV61GB1K*{gyW11V~V&Z8<-dv zW62bXF}n%f>vNK2!zM55$WbRzup|(G6B7di1acDASYFl%%|pNs2^kh5g&VxHK6@Ad zEvOwM0Nw=dVC&4WMcM!k|34723lF%$rT6F7oxJRFPH^l{x%qQxkP%TKfJefT5kQDQ z5RnQngcnj-phn^*h~NohM$|_}9xBWbYixuCJ;V^y3^-~e#0^xikr5V31V+>dPytxL z5UIK4WR4n<0%;glWR}%z9P=(H6(1|8cnNW2w z4kk#TAVh|KxgpoNJ`yJ4hRBv1LFFSu0P!O?5K>^WEH~n6n?TMa1DG&|Q2$0S2jLEu zL_?sVb_^&aEXmje42-!3NWnu|L=y61PgblU+>jTWMZy}AK;49^4!)uKi24vI%mYZ8 z9RiXfQtTjwN(Xg_k29f>sRb_*5%5D|g_<=)kR&734)2IAckB@K^ofXjWVJ9r6k+rz z06$C{14I!WJ;()#6kHP_2Ji>N2PP(n6$Kd>7*lrlWC~a!?qFykBk0tK4EbXL4Ke}( zkvoEb3itphKpT{x3dpbu0a{oRG87Ot+Z_N(GC{bY3I9M1ff|^waKK8j92O(C9x?$r z|6nu_0AMZw1DQ8$cj#cTrNBqPgaw2zVkjt1Fo+QHMQ+do_Z@s7p}<azIAbhv^O~h^-ONH@Zo% z_bs+m)JpxQL&>cdBw{225=<;e4cR*(e~6H~^&(lJd9kxYM1p`K4xk#5v`8qLXi^-o zVTmw=<;I7^L6qGm5mr%zFoY>g(noqn6gZHgL&OId3*^7~uj4;GYORk=Sb= zva%p$2wEJVk%u!-g2jft0kfBUB72y;HaU*LLiSsmwNPEi|Ep$%z>~+JDyEGscMm)#h z=&wQ4hf~EcsxXtFkfC;-Ta!`%PBt&YTjD=eC>8)ip8+mMky%c#0gDwGD zA5JmDV*@+@z@tB`9Y|rrHVr#4MEqA2GmX20Lky5G?7i#i(tv7aiE8qgeNh0Rzy|~7#?KG6X8M37}BJ1fk&Q4k%wt`Nz4iLhY0fo zYTlMx^H3kK0m0Y-@bDoU`7jQl!Su4_F5uu5svVvz;iD0!>>&ln`>z1sf&)I38Gy~+ zvmkHe(G@9L8}40Kfu@d_;%MkW)m627K^E${2JwW5D?s!p0Y=HGqa)Yk)Zg zP_sbC0Nem%MA(Sgu3!QorwYiYPy}2HblrhCkk5I59}&jD09FkW`$Hi-5yMbfaQ9Ha z6qJyo0C0=UNbrOV3gU?~2CxYu!NalzBgy`h!yN((Zv7)`9vgocaTo$v{-8^A2%t#d zssArHEDAwCWgs8hAP6GFLWH$}y>7Fyf~??lhWFS3pWBEO7@!dDMk^!$Avl22Lq66L zk+Fl}VSfro7J4JtO+vVPu#fq5BC?Lq>WMzAj+ zt2lc}Lxu!;gq4m20|I=+kUO}70`@#awrCP;TO^pq$Uy-SDM(}$B(g*047ZQ~1`ZTp z5|bcL63j7V%ZCpHNa>MD$eJr^8o?7YQXo)XPNCeGCXL*(gax; z8N<+$3}FV4jbSOL7$e&j1({duO5&K4*ybi&bJ)F%U^6f>f|bz71lf8FVU#KQu(MMT zkjaL~P_T=TV{X7Uhj?KgQjqWrVQh>^P=rP#$O*tlKBmH4Bpb44A+nya>lZPHLs!T| z#7z2o#sHEuf-0lHHVr5vI}Y;vWCYs}JbMBk`9MTAU_;D)#uOR@C|)BlpunUg8^L3a zu|AZlu|87##sD1!0EB%T)-JL!Y`cBN0Hz|l0uaEAVS2&n0mm4bT!tVco4_hZHUO7o zIO^n$!SFi_o5g|4qVcm9(-$qpyM}~B2QM|n8xYCH@Py>McyR<*V!tRTc!en*Y9G~) zrZ1&0USx`gB9lkHJQ=(O5g0^Z5P?Ai1`!xUU=V>p1O^cpL|_nsK?DX77(`$Yfk6ZY z5g0^Z5P?Ai1`!xUU=V>p1O^cpL|_nsK?DX77(`$Yfxi)fFCAY_i{-)ZeoBe4FEkYR z{Z~n;A<{Bf*`Xsa;$jjK;*t_lQj+j%qGD^1-;I@2kQ%8%oH=Bao4>SbB#yK`b+3$? zMde9FTFdjv1_4nUu(G4aD2*Mbt}#WEphcz_!vDuGwY0Lfv9+^zaQE=^n(gi58yFNE z5*kJik6yYgX8DSht2V~QZHiCWoS2rLk-2@x&aCXbd?u@)u&B7?z`?5OLx*c>f2=!o zy1t?D%-N>a%Wdsfu6A7OymR-LdtLV*JnVk-;^nK?Z{Gg;+q?H-@Vlny#mR^-9|g!q zTvAd(QX0ueOnf=KBorj2RER@H&UBOZj~t~+S}%jMNZng`602rFd#)G|)gn83GWm}B z3nV3WM!zqi4Sy&jUP8QlzMQ})$Y54rawWu6Fyabg5(;8pu47^`GDC()50R3QmX^k1 zWn|@W@^V9m%8ea4YB+AfxJeTyj8j&|Pu81)SJhEdR@O8k=;*`$eIrkrVlvH`WUdGQ z^HmIs#mWtpQ<9fgBB>~=kiPl)(ut9ifZrHakWj$Pz`Vj0&)m1-_Wma~+zqm4OU7%p zTUAgb2Sj$@(UbD%SrnT1-=iYczzA~vtE^^jEkF%LL zt7a#S%7rZ|1xYX5qux0!BR{9#*fJ#A)y?6TO05m6Ja^vRE4Ik^QB#4`;$iorCM2m8 zIl8CsPpi50dTCh&eZJ%#DdVK&_p{f`+*@W}bRk?_HDAGS&qw#+)j{_b?w#+U!IH_1 zcFY={y6btd)ZFuFlRb-DRm1%f-E^4qJ>!&0oLnY9)S9(M+xvVx#zYO*A~BJE_J*6q zN+-gRmG!~Jth9;6jpFI&ObTvoa0}WJ?j7`8lc@UKWO{Wo;bzC*=mAta&(zX!0$!m8O2fp%tU7Bo_ur#ORP{OGS z!p9F@iREYCdff=!F}Y9{`%&xss=!}#~3J7p5ySiS!{(^)CQ&ZYY}9E>zf z#xd<8wk#w6tR-{oh2(qLu1ue4s>^ILybdTl-Su&QL*(m{X8H4ldUlE|t2srE0kwjEw$A-+C4h|kaY2+xH*n09f6PC&o|>#<3FX5&6BcI z2+ERfvlXY*k|O5}ll}a2oLyr6_KMR#>&1^hY{>d8coXqLi*rqzT0{HdrkYQ&EVF|L zuh$U|kP41ro@*(rQ&ZM@F?VEcdGYzmaS!buIO7|ZXnChg>kw?x5^jd7cBD*o*lOPx z?L2uW^SZ5htI@~Fqzm3p!aO}fbLD1!T3PO@FL&j6Ol`Azlu2+}KunicY0k=B&#@Is zv?SG4ids#~Dut@YDF$6XG-V$;NO-p%uxXg1)E2d=>x@UC(+l^N6~m7%=+Ox&z3IK+ zoXY2^t@-C0uReCoREah;URk(4-7E0mkCDHQOD|Vi)Z`KB9^^VPb(uCsOk>}^IKA_$ zZ$!*<_scw}we-S|K1(0e?uah19-1;QQgL2Wo=GC!aqaTj zeq|QP;|e8`K#vahrcYZq_1gVKio?5{*XTXm8xgx^!K88vvxA{=yAIg|bw;0DJeOWRc) zN@|Fnf(tIsC;ve9d7pG8$xEhVqT3AXa%~6uuzDNf>U>{$J&M!L;dco;M#wZ+Nxa;r z?hw7_!RoH07){Fcy(eOa=d};ra{XLknoPb*O45U4)-k8#l|HnF>O4OCq0(mbzR;Bu z^TR@#o^GX1`~2*;t7FYu=h}`dO{iP4Zsn7<&(%HtH-Z(LE7ITHe09!WR9 zyWD*0xYSGSV$CVhIobJMPTtR5b&hW?t(>eT#oAg>K1bVnj6?Fxd(GN2Di2RJ60gor zck(=&a`-^@ixUSMu%a5#~oojj}zdw2PsPAGll5#(5 zXS1|Qx;vVVy_j3IeCRl2OY zbIs{PCz#f6A0+J=HvF*oPY+h?imH#FH*@Yz&6zVbkIuNgXYKT;Ws^vs%eKv(KI!m< z%cXNhPq3u~{CsMaU;M)CpB!#JFZ`(8yeHVFv>|7j%O$92}c_rDxBnQ}1V}K3#A;P)RY*+~iKr$FxV2KVd#+ zW-eSbC9Cs_%$>W(M%F#NrDUBl?N+Y&G4EaT*Ji38%ek}VVaJ>sKO44udQ&!cp>u6n zq66!l=driW5qEwVHb(YWgVOZ6gL>;6TDH|4Q`YnF+uo@3$~xr5vOQ0KR-K|%^;t<{ zi$vX?iC)2BKWtq-b_ntDm8>DDcbL1ZbXYn!ho<2^n_#Z&FTap^?+ZpkZ`ISc_G|9% zY$1E+(ziG0*O<9HJ)S_xDX}hS%q>gxJ-s4%mhDtEo!mgRTX}gK(q=Dz6_D@y)8Xwq zdZJ!@_t5Ko@=s$%>mR;wW}?@cYf_(v45LnvqSds$F8XNEqO|l)Tz;z4YJ(IXhxD4D z3Cz!HU$=!fbpct^C%YE;8v4(z3kH<@%(qsDn&BcYI~ zTi9^m#{NBquj=-DuG#4yD^W7h;N7qv{g-5F`&Z2LH_pe4Lw7)s`$zS4U zzp;{m;dn7m=>uD(zhHb1=-SzN?5XLVXB$^I&T+e$TI1;po|M%G^Iu(xnydFj<-F&0Vy4hpZGp=x2RQ{ym!l5^9V{Y$w_eS0JO<4y0sISeo zPF=;bPwusa+@3S{kn6AMUoeTKFV;oaL{2EbyKQC4x}NrApH`RF$`*&+UKQyYqfJj2 zr$-oHbbHV+quhRCda2^Y?Xw@7e!{`uup zeWiq`l_wra@2$9LPK+r({6s!w-A^-q%RV=1bFyZGmsd!JW^|L=ksrzBKbaLdj;D4e zZ5eGclW=l|^Ksv;SL@#2m`#7X;GC+h#iMl>yT4o2c)8s;+a){h=3D(^>W+6O4S#qj z@0F)qx`~yY!3noBChxCqzqR6=#}6)RrqgeE2Myi*U<&45(1+QT8vfmyP;)?X$5HrY+dqYWnV??r*76bIPtw za{PYXFAYa)7sqGc9HRB&(owB-GcGksPrcRlZgkJonOQH(Fk?$Qm)-tAJA7e?t?!Em zLk*XC__eH!8@_pjZSe|U$}%sk{vw;z<6hZ5FE9M4=H7HEH@a#AF0_1=v7gmm`^oQj z;q<#t-dq|wd>M;UQSkloEEf-nZI5SB8h0pHu6)Fl$gKN%A!-Mq1lg=+J0#zBP2p!hZR% zvG!_(U&MN~_0!a-)tQvGSBJWTL#LNT&vl6?RrV`3+mo0!>QYd%T|wHGbcJu4}ypJNf~cI$j~#PY6R@t>%r-Rt5$oY=NpvDtU`wW}88nVYSD z8DZzP?bn)OwWAY#&aGLytnp=qy}NBtczEPQ!=DXH7dFKf#VZGXXgI3*XforPNuv_} z3r35Gd$)IZmNC7P<(jH~sI;rnSmk)!@_jEgD&~am@hJIC%V`o13=~mif z`~7n=t*YZE)D=k|N2d4U*IV48PR^$?12OCNEa=FmIX}9nt>9o7GuI{jX?sL)*xM&G zd!^SUNz-0xS4@$tx>WI?+9v$`g`3O9&$pSf?eqKM*|d$J?;oE1RkdpA}%;sXIgh- zr^j91r}VV3`h4iv9g!0sY`apB_-JI-E2`T1hILsLEANzCw_18i(c%4>eNi;}hYvvCg zXVk8zy6dRVE+j-YxXlZzSR52%w#Q<6{*0_b^$$I2%}XUdoKF8OVDtP3i(}my+~`S>=^%Dx4p2J z7Z3k<5*M?h=OOtXTUde-dlnfgb{=E*N(IYG=l_ z!_=*L1D%{}k=mVR!lQh@Q}y67@y)ns(QmlRJy+GSZF{@|Y9=U_EQ?(KD)h5t_@}(ji%)O0?MU?t z-33*8iuNptA$IcV_ov*o_A!&yoR=juESsRQ_(RX-?_0iLrp@{Mf!yvh=kBP&@jaSL z)^(Mx)eHYAf{-5VXF#}k?g-1cJ^lDk1oy;4u@`=xI#Pf7-iyDrjXLu*oSw7;F)~kAgU+FHb;;3V$Guef1vCKw=b^!3T%2>3&s@hKuQAw&e#xw>ecf)`&)A*wVlm&H!@Idt) z1gfxqw4C_)c1T0m7gquK`{eK0g9%E*uO#IX}(E29he+gqA2Y@qM(|42Ebn$`$1amHmM`43j{f!Y=TF z42EEHpq7XN5Z#juejqm(8Sw$d{R&0&-&dDc4t+#l2CqLIfe(MW$Ny1>$Nw>T|8pY! z$3Xg*1-kAp>uIo~e?0<&Yrp6r{$IjHC|9ATXnY2_g9!YS5IFu%3U=UF*9|Nll>Sd6 z@QthYH>&^b(Doh(;Co3PC5p!r@*M#6e|Eu^{H`+!w%@**48H#OX+Abe;!(m5CBEt2 ze-aGNX;k0fz(4P31^-Q*2`KY?2ypp)3-K{{LB_y=L0dTs{L1NfqV{c>dq3 z+$RfO!eV%I_Vt&MKu}yqj9%9RP}BirLLzkBd)bU$QWVuEBT-7fp9lT3^ZcD|8U1+f zj}Pkno<*zSL2G~uoe~46a77H{{`=KInO6>orQpRG8Bo9r^4Tp>yk0eNDoXbsO#c$p zR^SfNFa#LvCR#m0B0)vI45-2qzV<*eP~#s)o)tqhmn|Ov+OKrg-*<<+Zu=iLe6J2d zq4)@J2MA0+@7o*vo~eB1Ky!iO*8m0JB7(kQGJwmu1Xdv`%0=!Xv1d-OoLA;Lv3>ucZt_i7G6earqY;08gCA;9Tv zh=8V7h*Efz=q-Uh0Q9Q#q5488+$%(gR0(|lPZhA{S@H-$IbtJVz}FD&gDVo=|Aop5 zb-=S`a5$U*cwAsoIRe4=KFk64f7Bf>yIyC#EIi7jqUtDvdl$uK2G?Oo4i(kd{E%?EDBN3z{6{R>szM80B*if z^tT^C{Fevt`47bRPdfwp11S!g3?lGvL15j#C6Rw$9)m0CzhzASmqzk`DcAqk`aJ&s z>iy4j{?Cc@Ps;jVl<>Mg36eoK|3(D9aWVf!^}ii4?r{N}7vV*m9EjrasZmk7|Fa9W zM24q`8uWJ;eNKdO8U2}Y_;^%ohY}+0R1rK5tN$bze1|*2=Dd?OJcc1G`$`*4>nmy^ z#CSoTNJqTDAg}&Y6LiG0;bZsBonMQ}rwKGynO_4GxZJ*BGWe|dNGg@DAw-VAa~N>Q zhW3KqIfA~uu=zsl{t%%e%3NL4uZZ(JRK#|T>T?>LcR__-3BH%)rxN%ZeP}dT?)U$E zat0s$74j?R|9F0L0kDt;1C^qoaN8oFK{Z9*QOBqo^e$4F%j^rKaIfGMDY5>~|9S4I zh#IdY+~5k>K??W5m3`~^Ki8~p4pgpW;2WI(ql!q_C@p9t;`je}3SxL3*$*KqQAR(y ze#K%H@$eep`aM%&0P_Jweao+}I-Y|O zqgR4{?byrdkLo{mwgg4LKXU;-L!iZ8c~E;Hk)R?Uz*J!gUwa@KpPB&4;0!Jr23N*l z-#O6s4}gFp!3OG2yuac3y}$o2=$6~!IfdB%PQRfE!N()$G0Fc_c3ev>)`& z)}RWO6VIv-Avjv>2$8brv;Xr9d80u^)Oc*+23KH*+=ct#%8-DmTpGEF75DX ze&zT7G3>!W^#{B&grs<(cHbti9Qug<_5+B2VF3TMGoXLr5d76C9sjF4{JZ=6pG)}f z27Ivpe*^-9Yrp7W`d`9DC|9ATXnY2_A`mz(f;Y(euRvgMX#OjP;a?uaf5FoEjUjxa z`rkf&$bkTZeLjUp$leQ&knA^v5PeZmcAv8gq4OS|B5KgzUC0j97<{VyG#?u!@hCw> ziEp~IlMs1~!{Fx%Ip;fCVSH0}y+=p=n(_G-)WHijMYedxkXN7a`RdS$bcrz8u6VvN zR6a$Zxj^;G*<#=#g1&>>Yb>=>w2CP&I)&zPE)U zCFF*qK<(AzQj9(vkqq$4EY9 z|W-MX13v!Smd32|+c1sUWP{+lG-9wCff1Pw~p3kIG+l0P#;d z7x_7Nei-{kOrX(a!b za{Zgi>A$VpvFG_gb|2I~H{{O)UeB)yNjp~0pFuex?_+FAniQ@5u7z~w< z?uTTbYM^H%f;xD?CcD*FlL34#R|cU6xbUdV4kbj~sUmnBR{sYu4F1C%A$#7@3jUkV zWq8T*eDvpAh>yVwGI);o+5ApLq$cEo-%^kk${k!u!Vh{;Q3CEjbCrALY%y?!yl|}; z+`G_mE0xCvLda6+`+q)7u9ZkI_|!Oki9n=RhwB2(Lg0iHw1nGeefB!|+7|?UdQafD z?L(tq#Pu=jqd5TME8qVQU zjZi`Lb<7U3&meR3gunmqYt7~eTXP~2=JqkB_TfNQ-1C0{5j#XQJ@n3}!DETxdE9<_ z7hrR-VepK21fES%dF|g#;1Nx9+>bpHo7!sz?^{~Y~3bC3u2 z@7VvjU7`pI|NcMtMnxP=KHpqZAqA9+!Qk0spYdSyYKWjvb@VQ*(jQ+y?|1G0qC6ql zF;G_=1w7hBVCK(Wlsz|Rwh5|>>Y;bkpQyVa)`$kuEB^&v*;Oj|)jYojN>fn+z4xtd z48{%-3ip8;fPl)Q1(WAv3tMw?;OFu?;TeixBCM}||Ic%P5>fk6cR z6a@Zh-;4YwN&he9`k&x5X#3Aa;P^i`bm7R?2{Q)Ug9!Xl1paAjKleZY4hZmqX9Lju z)6W0VQ$N8TM78>AGC+;X{oUXH_w~Z*3poa%a>)MP@uCEb{*H|Vl^KG~ueSONlV{lP zu??Q5!X`vI;u*ui(jPoq66}T7;&}!RmB(e%T%hU zhvPi77xd1t;()*V#UVYRt3O{-m8suIBk(6++;1zKo^6&rR1w2p% zTKzQa5Wa99T;0F;`+uR||EF@J;8a|1jrD<#C*n(kk3`)dcTsExzrue=;}LrqPK4<2 z1BZdI`&jMoJ~8i^yVPu(k{W>I-kk=F8jvOz%92CVGpF-l{{scTHpBxsQ-hDOFF zrj}OLHnw*54(=YFUbDS@d;^1mLqfyo;n7Q%#VlX3a@EGzxJ~g1n-kO0GcvdD*qN1` zm(OGs6c!bi95`52edusa?T>Y*PS-ayo;lmpdbzFr%GHi*opdIh?%Q(4lf;M~)hfn=o$D#0le+mGP7Hrr=d| z)RdJqjR-pWL^7E?X^P1-W0JX^0huI*#bV`#$|=dqE0I)`RY>1_ed)x=Nr*v65(=0Z zn3peH_N};$bB_}ry?y5pIvw*!3S*ibNtI`kH>s;j$ogV@HN|eb*Ne|z)nX||EnM#; zExV*3)?9W)fkg4$ox{X`NNUgX&Y{P&%&&>1(NvsQ(Ty1n;tfiLi86t4raR;E7^Al%|0JB5WC(6#BF2}1sUhDcFrE|IWET4_Q`w5U zg zBaboJH)EoD=txpg}jFHTqZW?#AJ0Vwy-E z85lQ*Uu69*={KvbX?Q3xAhV+j44hFVT>YY<@#HzBoaDuEh}A= zXNk91pKy8oT$5_<&M2`^CfxQE!{ct7WeJR`JXw0!H~Qm(Hd({g<;+wkQ(3gv%~yA*=24iRaK{TbuqXqOh{6z zQbq=bmWYWVv>{>o8rb=}h%+Winafr|d?%0~PZYqY7nN?-i6Mmd*tus$g^gfEI+Nub z4D6(u$=M4P#xg1Cx>(0V=o(Y6N9fSQRpG~wL$)N=g(T{Uw{CRSpYUT!wR^z+Iy&=8 zL`H105k=kGfq==#*o4ba^w(r|w2s~ozGzmbgPuxQZeS%9ciId``dA3alB+{h6Jf@{ zKfpg%d^?O9et+I>Y8_AnxfQ-EaF??1xaV3a@#|g1cgBmk4)us_lqy{BwK=fTMk`j` zWH?zWe*c-Ggxn#mqwFi0DrA7n3~NuDRH`v^Ddx|7)s_SdlL^_55OPMmM7D;FQQMpNMelv+X_ z%%{Wv7&y&be@E(2Nb?Z^Q$?E)FXl3oN}^VALoJeC?}EDoLA!Y+1fD1q^RkP!#;D-B zaPr$46^BMTZNji9{d6?Knzb|itxb2vOOcrY<*IYW+h0jJ zotJ`juD7d8OZ6I=mTE_cv_FtGCSt0h{PxUE>CPG{hK7lfIN2d)xZ9dF-Ye?$=r_ES ztf7x?M7!KliyQj3GO+8 zahq_$-6F8w+%r$|JIyQ+ZoaWJ1W_J)s_w4qn02QxLom}Wz*p}vr+Kg}#⪼|M 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

  • Kwv`W&nm>{6<^?prJe{yKAAkBGc6adF}M>vW9F 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 TB4h+SmJ!!!SbC=;r3U^VHsmrq literal 0 HcmV?d00001 diff --git a/_support/Images/ci-logo.gif b/_support/Images/ci-logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..3001b2f752626a09562d5e650a953557c84c7a0e GIT binary patch literal 1844 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 literal 0 HcmV?d00001 diff --git a/_support/Images/ci-logo.jpeg b/_support/Images/ci-logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..1b0178bba3fef489dde125a1f3f89b033f7cb533 GIT binary patch literal 7534 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 literal 0 HcmV?d00001 diff --git a/_support/Images/ci-logo.png b/_support/Images/ci-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..34fb010828935f2a5f814213b18aea620e79c995 GIT binary patch literal 4537 zcmV;q5k~HbP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00002 zVoOIv0RM-N%)bBt010qNS#tmY3ljhU3ljkVnw%H_01&@PL_t(|+U=crd{x!8$G`U` zF$4k#1VR`S6NVN9`WO^c&?gW}89pkLV#HU4idd{7h#!ZiRV(&cOKa;;QNU7cad^se zd`~P@P*Er%q6~t}WFkRKAQL(7k4ti=bMHO-oU`{n*Y|$=58!g{I&1 @k!bE$|wy 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[$locale ?? $this->locale][$file] = $data; + + return $this; + } + + //-------------------------------------------------------------------- + + /** + * Provides an override that allows us to set custom + * data to be returned easily during testing. + * + * @param string $path + * + * @return array|mixed + */ + protected function requireFile(string $path): array + { + return $this->data ?? []; + } + + //-------------------------------------------------------------------- + + /** + * Arbitrarily turnoff internationalization support for testing + */ + public function disableIntlSupport() + { + $this->intlSupport = false; + } + +} diff --git a/_support/Language/SecondMockLanguage.php b/_support/Language/SecondMockLanguage.php new file mode 100644 index 00000000..71428854 --- /dev/null +++ b/_support/Language/SecondMockLanguage.php @@ -0,0 +1,27 @@ +load($file, $locale, $return); + } + + //-------------------------------------------------------------------- + + /** + * Expose the loaded language files + */ + public function loaded(string $locale = 'en') + { + return $this->loadedFiles[$locale]; + } + +} diff --git a/_support/Language/ab-CD/Allin.php b/_support/Language/ab-CD/Allin.php new file mode 100644 index 00000000..3b153883 --- /dev/null +++ b/_support/Language/ab-CD/Allin.php @@ -0,0 +1,8 @@ + 'Pyramid of Giza', + 'tre' => 'Colossus of Rhodes', + 'fiv' => 'Temple of Artemis', + 'sev' => 'Hanging Gardens of Babylon', +]; diff --git a/_support/Language/ab/Allin.php b/_support/Language/ab/Allin.php new file mode 100644 index 00000000..69120758 --- /dev/null +++ b/_support/Language/ab/Allin.php @@ -0,0 +1,8 @@ + 'gluttony', + 'tre' => 'greed', + 'six' => 'envy', + 'sev' => 'pride', +]; diff --git a/_support/Language/en-ZZ/More.php b/_support/Language/en-ZZ/More.php new file mode 100644 index 00000000..66810205 --- /dev/null +++ b/_support/Language/en-ZZ/More.php @@ -0,0 +1,6 @@ + 'These are not the droids you are looking for', + 'notaMoon' => "It's made of cheese", + 'wisdom' => 'There is no try', +]; diff --git a/_support/Language/en/Allin.php b/_support/Language/en/Allin.php new file mode 100644 index 00000000..6a10dcc7 --- /dev/null +++ b/_support/Language/en/Allin.php @@ -0,0 +1,8 @@ + 'four calling birds', + 'fiv' => 'five golden rings', + 'six' => 'six geese a laying', + 'sev' => 'seven swans a swimming', +]; diff --git a/_support/Language/en/Core.php b/_support/Language/en/Core.php new file mode 100644 index 00000000..4d03510f --- /dev/null +++ b/_support/Language/en/Core.php @@ -0,0 +1,20 @@ + '{0} extension could not be found.', + 'bazillion' => 'billions and billions', // adds a new setting +]; diff --git a/_support/Language/en/More.php b/_support/Language/en/More.php new file mode 100644 index 00000000..5b4eaea5 --- /dev/null +++ b/_support/Language/en/More.php @@ -0,0 +1,7 @@ + 'These are not the droids you are looking for', + 'notaMoon' => "That's no moon... it's a space station", + 'cannotMove' => 'I have a very bad feeling about this', +]; diff --git a/_support/Language/ru/Language.php b/_support/Language/ru/Language.php new file mode 100644 index 00000000..d6c6632b --- /dev/null +++ b/_support/Language/ru/Language.php @@ -0,0 +1,5 @@ + 'Whatever this would be, translated', +]; diff --git a/_support/Log/Handlers/MockChromeHandler.php b/_support/Log/Handlers/MockChromeHandler.php new file mode 100644 index 00000000..1a64b220 --- /dev/null +++ b/_support/Log/Handlers/MockChromeHandler.php @@ -0,0 +1,25 @@ +json['rows'][0]; + } + +} diff --git a/_support/Log/Handlers/MockFileHandler.php b/_support/Log/Handlers/MockFileHandler.php new file mode 100644 index 00000000..efd72a99 --- /dev/null +++ b/_support/Log/Handlers/MockFileHandler.php @@ -0,0 +1,25 @@ +handles = $config['handles'] ?? []; + $this->destination = $this->path . 'log-' . date('Y-m-d') . '.' . $this->fileExtension; + } + +} diff --git a/_support/Log/Handlers/TestHandler.php b/_support/Log/Handlers/TestHandler.php new file mode 100644 index 00000000..e22559c6 --- /dev/null +++ b/_support/Log/Handlers/TestHandler.php @@ -0,0 +1,64 @@ +handles = $config['handles'] ?? []; + $this->destination = $this->path . 'log-' . date('Y-m-d') . '.' . $this->fileExtension; + + self::$logs = []; + } + + //-------------------------------------------------------------------- + + /** + * Handles logging the message. + * If the handler returns false, then execution of handlers + * will stop. Any handlers that have not run, yet, will not + * be run. + * + * @param $level + * @param $message + * + * @return boolean + */ + public function handle($level, $message): bool + { + $date = date($this->dateFormat); + + self::$logs[] = strtoupper($level) . ' - ' . $date . ' --> ' . $message; + + return true; + } + + //-------------------------------------------------------------------- + + public static function getLogs() + { + return self::$logs; + } + + //-------------------------------------------------------------------- +} diff --git a/_support/Log/TestLogger.php b/_support/Log/TestLogger.php new file mode 100644 index 00000000..a88eb629 --- /dev/null +++ b/_support/Log/TestLogger.php @@ -0,0 +1,82 @@ +assertLogged() methods. + * + * @param string $level + * @param string $message + * @param array $context + * + * @return boolean + */ + public function log($level, $message, array $context = []): bool + { + // While this requires duplicate work, we want to ensure + // we have the final message to test against. + $log_message = $this->interpolate($message, $context); + + // Determine the file and line by finding the first + // backtrace that is not part of our logging system. + $trace = debug_backtrace(); + $file = null; + + foreach ($trace as $row) + { + if (! in_array($row['function'], ['log', 'log_message'])) + { + $file = basename($row['file'] ?? ''); + break; + } + } + + self::$op_logs[] = [ + 'level' => $level, + 'message' => $log_message, + 'file' => $file, + ]; + + // Let the parent do it's thing. + return parent::log($level, $message, $context); + } + + //-------------------------------------------------------------------- + + /** + * Used by CIUnitTestCase class to provide ->assertLogged() methods. + * + * @param string $level + * @param string $message + * + * @return boolean + */ + public static function didLog(string $level, $message) + { + foreach (self::$op_logs as $log) + { + if (strtolower($log['level']) === strtolower($level) && $message === $log['message']) + { + return true; + } + } + + return false; + } + + //-------------------------------------------------------------------- + // Expose cleanFileNames() + public function cleanup($file) + { + return $this->cleanFileNames($file); + } + +} diff --git a/_support/MockCodeIgniter.php b/_support/MockCodeIgniter.php new file mode 100644 index 00000000..3e31d001 --- /dev/null +++ b/_support/MockCodeIgniter.php @@ -0,0 +1,11 @@ +tokens[] = 'beforeInsert'; + + return $data; + } + + protected function afterInsertMethod(array $data) + { + $this->tokens[] = 'afterInsert'; + + return $data; + } + + protected function beforeUpdateMethod(array $data) + { + $this->tokens[] = 'beforeUpdate'; + + return $data; + } + + protected function afterUpdateMethod(array $data) + { + $this->tokens[] = 'afterUpdate'; + + return $data; + } + + protected function afterFindMethod(array $data) + { + $this->tokens[] = 'afterFind'; + + return $data; + } + + protected function afterDeleteMethod(array $data) + { + $this->tokens[] = 'afterDelete'; + + return $data; + } + + public function hasToken(string $token) + { + return in_array($token, $this->tokens); + } + +} diff --git a/_support/Models/JobModel.php b/_support/Models/JobModel.php new file mode 100644 index 00000000..cdda38fb --- /dev/null +++ b/_support/Models/JobModel.php @@ -0,0 +1,19 @@ + [], + 'dates' => [ + 'created_at', + 'updated_at', + 'deleted_at', + ], + 'casts' => [], + ]; +} diff --git a/_support/Models/UserModel.php b/_support/Models/UserModel.php new file mode 100644 index 00000000..c84ca1af --- /dev/null +++ b/_support/Models/UserModel.php @@ -0,0 +1,21 @@ + [ + 'required', + 'min_length[10]', + 'errors' => [ + 'min_length' => 'Minimum Length Error', + ] + ], + 'token' => 'in_list[{id}]', + ]; +} diff --git a/_support/Models/ValidModel.php b/_support/Models/ValidModel.php new file mode 100644 index 00000000..a2521209 --- /dev/null +++ b/_support/Models/ValidModel.php @@ -0,0 +1,34 @@ + [ + 'required', + 'min_length[3]', + ], + 'token' => 'in_list[{id}]', + ]; + + protected $validationMessages = [ + 'name' => [ + 'required' => 'You forgot to name the baby.', + 'min_length' => 'Too short, man!', + ], + ]; +} diff --git a/_support/Security/MockSecurity.php b/_support/Security/MockSecurity.php new file mode 100644 index 00000000..7a9239f5 --- /dev/null +++ b/_support/Security/MockSecurity.php @@ -0,0 +1,17 @@ +CSRFHash; + + return $this; + } + + //-------------------------------------------------------------------- + +} diff --git a/_support/Services.php b/_support/Services.php new file mode 100644 index 00000000..48e8283d --- /dev/null +++ b/_support/Services.php @@ -0,0 +1,70 @@ +driver, true); + } + + //-------------------------------------------------------------------- + + /** + * Starts the session. + * Extracted for testing reasons. + */ + protected function startSession() + { + // session_start(); + } + + //-------------------------------------------------------------------- + + /** + * Takes care of setting the cookie on the client side. + * Extracted for testing reasons. + */ + protected function setCookie() + { + $this->cookies[] = [ + $this->sessionCookieName, + session_id(), + (empty($this->sessionExpiration) ? 0 : time() + $this->sessionExpiration), + $this->cookiePath, + $this->cookieDomain, + $this->cookieSecure, + true, + ]; + } + + //-------------------------------------------------------------------- + + public function regenerate(bool $destroy = false) + { + $this->didRegenerate = true; + $_SESSION['__ci_last_regenerate'] = time(); + } + + //-------------------------------------------------------------------- +} diff --git a/_support/SomeEntity.php b/_support/SomeEntity.php new file mode 100644 index 00000000..70ddc4d6 --- /dev/null +++ b/_support/SomeEntity.php @@ -0,0 +1,13 @@ +JC?wHqEfEL^u^=D> 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 H^7sD&uEzPK literal 0 HcmV?d00001 diff --git a/_support/View/SampleClass.php b/_support/View/SampleClass.php new file mode 100644 index 00000000..a7c1d3c2 --- /dev/null +++ b/_support/View/SampleClass.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/_support/View/Views/simpler.php b/_support/View/Views/simpler.php new file mode 100644 index 00000000..0588b62c --- /dev/null +++ b/_support/View/Views/simpler.php @@ -0,0 +1 @@ +

    {testString}

    \ No newline at end of file diff --git a/_support/_bootstrap.php b/_support/_bootstrap.php new file mode 100644 index 00000000..65dd9a13 --- /dev/null +++ b/_support/_bootstrap.php @@ -0,0 +1,32 @@ + null, 'port' => 6379, 'timeout' => 0, + 'database' => 0, ]; /* diff --git a/app/Views/welcome_message.php b/app/Views/welcome_message.php index 2939098c..ad6168e9 100644 --- a/app/Views/welcome_message.php +++ b/app/Views/welcome_message.php @@ -12,8 +12,9 @@ height: 200px; width: 155px; display: inline-block; - opacity: 0.08; + opacity: 0.12; position: absolute; + z-index: 0; top: 2rem; left: 50%; margin-left: -73px; @@ -32,6 +33,8 @@ margin-top: 145px; margin-bottom: 0; color: #222; + position: relative; + z-index: 1; } .wrap { max-width: 1024px; @@ -81,15 +84,11 @@
    -

    Welcome to CodeIgniter

    - -

    version

    -