```php title="PHP" mockResult = (object)[ 'content' => 'Test content with some words', 'mime_type' => 'text/plain', 'metadata' => [], 'tables' => [], 'detected_languages' => ['eng'], 'chunks' => null, 'images' => null, ]; // Create mock extraction config $this->mockConfig = (object)[]; // Initialize plugin $this->plugin = new WordCountProcessor(); $this->plugin->initialize(); } protected function tearDown(): void { $this->plugin->shutdown(); } public function testPluginInitialization(): void { $this->assertNotNull($this->plugin); $this->assertEqual($this->plugin->name(), "word-count"); } public function testPluginProcessing(): void { // Test that plugin processes results $this->plugin->process($this->mockResult, $this->mockConfig); $this->assertArrayHasKey('word_count', $this->mockResult->metadata); $this->assertGreaterThan(0, $this->mockResult->metadata['word_count']); } public function testShouldProcess(): void { // Test shouldProcess logic $this->assertTrue($this->plugin->shouldProcess($this->mockResult, $this->mockConfig)); // Empty content should not process $emptyResult = (object)['content' => '']; $this->assertFalse($this->plugin->shouldProcess($emptyResult, $this->mockConfig)); } public function testProcessingStage(): void { $stage = $this->plugin->processingStage(); $this->assertEqual($stage, "Early"); } public function testPriority(): void { $priority = $this->plugin->priority(); $this->assertGreaterThanOrEqual(0, $priority); $this->assertLessThanOrEqual(255, $priority); } } ```