assertFalse(FileVersions::splitPathVersion("")); } /** * Returns false for a plain file path that has no version suffix. */ public function testSplitPathVersionReturnsFalseWhenNoVersionSuffix(): void { $this->assertFalse(FileVersions::splitPathVersion("/files/document.docx")); } /** * Returns false when the version suffix is non-numeric, as the version identifier must be a timestamp. */ public function testSplitPathVersionReturnsFalseForNonNumericVersion(): void { $this->assertFalse(FileVersions::splitPathVersion("/files/document.docx.vabc")); } /** * Splits a correctly suffixed path into the base file path and the numeric version identifier. */ public function testSplitPathVersionReturnsPathAndVersionForValidInput(): void { $result = FileVersions::splitPathVersion("/files/document.docx.v1234567890"); $this->assertIsArray($result); $this->assertSame("/files/document.docx", $result[0]); $this->assertSame("1234567890", $result[1]); } /** * Handles nested directory paths, returning the full path up to the version suffix as the file component. */ public function testSplitPathVersionHandlesNestedPath(): void { $result = FileVersions::splitPathVersion("/users/alice/files/report.xlsx.v1234567890"); $this->assertIsArray($result); $this->assertSame("/users/alice/files/report.xlsx", $result[0]); $this->assertSame("1234567890", $result[1]); } /** * Parses filenames containing multiple dots correctly, treating only the trailing .v{digits} as the version. */ public function testSplitPathVersionHandlesFilenameWithMultipleDots(): void { $result = FileVersions::splitPathVersion("/files/report.final.v2.docx.v1234567890"); $this->assertIsArray($result); $this->assertSame("/files/report.final.v2.docx", $result[0]); $this->assertSame("1234567890", $result[1]); } }