From 71958482c5e413547c8b1ef762e36904370f3e3b Mon Sep 17 00:00:00 2001 From: babaev-an Date: Mon, 26 May 2025 13:28:46 +0300 Subject: [PATCH] 20250526 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен класс File, который реализует функционал работы с файлами и выполнение операций над файлами одной командой. --- composer.lock | 4 +- sources/classes/File.php | 148 +++++++++++++++++++++++++++++++++++++ tests/classes/FileTest.php | 62 ++++++++++++++++ 3 files changed, 212 insertions(+), 2 deletions(-) create mode 100644 sources/classes/File.php create mode 100644 tests/classes/FileTest.php diff --git a/composer.lock b/composer.lock index 507a853..df8a959 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0c5a35b9c8987ac3fd0f7480fea87d4c", + "content-hash": "0c5a35b9c8987ac3fd0f7480fea87d4c", "packages": [], "packages-dev": [ { @@ -1621,4 +1621,4 @@ }, "platform-dev": {}, "plugin-api-version": "2.6.0" -} \ No newline at end of file +} diff --git a/sources/classes/File.php b/sources/classes/File.php new file mode 100644 index 0000000..6264a2d --- /dev/null +++ b/sources/classes/File.php @@ -0,0 +1,148 @@ +PrepareForTest(); + + $this->assertEquals("test.txt", File::ExtractFileName("c:\\tmp\\test.txt")); + $this->assertEquals("test.txt", File::ExtractFileName("c:/tmp/test.txt")); + $this->assertEquals("test.txt", File::ExtractFileName("\\tmp\\test.txt")); + } + + private function PrepareForTest (): void + { + require_once __DIR__ . '/../../sources/classes/File.php'; + } + + public function testFindFiles () + { + $this->PrepareForTest(); + + $result = File::FindFiles(__DIR__); + + $this->assertIsArray($result); + $this->assertCount(8, $result); + } + + public function testGetRelativePath () + { + $this->PrepareForTest(); + + $fullPath = "c:\\source\\tmp\\test.txt"; + + $basePath = "c:\\source\\"; + + $this->assertEquals("tmp\\test.txt", File::GetRelativePath($fullPath, $basePath)); + } + + public function testExtractFileExtension () + { + $this->PrepareForTest(); + + $this->assertEquals("txt", File::ExtractFileExtension("c:\\tmp\\test.txt")); + $this->assertEquals("txt", File::ExtractFileExtension("c:/tmp/test.txt")); + $this->assertEquals("txt", File::ExtractFileExtension("\\tmp\\test.txt")); + } + + public function testExtractFileNameWithoutExtension () + { + $this->PrepareForTest(); + + $this->assertEquals("test", File::ExtractFileNameWithoutExtension("c:\\tmp\\test.txt")); + $this->assertEquals("test", File::ExtractFileNameWithoutExtension("c:/tmp/test.txt")); + $this->assertEquals("test", File::ExtractFileNameWithoutExtension("\\tmp\\test.txt")); + } +}