#!/usr/bin/env php 'demo', 'chart_type' => 'line', 'data_range' => '24h', ] ); echo " ✓ ChartComponent created successfully\n"; echo " - ID: " . $chart->getId() . "\n"; // Test action method $result = $chart->refreshData(); echo " ✓ refreshData() returns array: " . (is_array($result) ? 'YES' : 'NO') . "\n"; echo " - Keys: " . implode(', ', array_keys($result)) . "\n"; } catch (\Throwable $e) { echo " ✗ Error: " . $e->getMessage() . "\n"; echo " File: " . $e->getFile() . ":" . $e->getLine() . "\n"; } echo "\n"; // Test 2: AutocompleteComponent echo "2. Testing AutocompleteComponent...\n"; try { $provider = new DemoSuggestionProvider(); $autocomplete = new AutocompleteComponent( id: 'autocomplete-test', suggestionProvider: $provider, initialData: ['context' => 'general'] ); echo " ✓ AutocompleteComponent created successfully\n"; echo " - ID: " . $autocomplete->getId() . "\n"; // Test action method $result = $autocomplete->getSuggestions('test', 'general'); echo " ✓ getSuggestions() returns array: " . (is_array($result) ? 'YES' : 'NO') . "\n"; echo " - Keys: " . implode(', ', array_keys($result)) . "\n"; } catch (\Throwable $e) { echo " ✗ Error: " . $e->getMessage() . "\n"; echo " File: " . $e->getFile() . ":" . $e->getLine() . "\n"; } echo "\n"; // Test 3: InfiniteScrollComponent echo "3. Testing InfiniteScrollComponent...\n"; try { $provider = new DemoScrollDataProvider(); $scroll = new InfiniteScrollComponent( id: 'scroll-test', dataProvider: $provider, initialData: ['page_size' => 20] ); echo " ✓ InfiniteScrollComponent created successfully\n"; echo " - ID: " . $scroll->getId() . "\n"; // Test action method $result = $scroll->loadMore(); echo " ✓ loadMore() returns array: " . (is_array($result) ? 'YES' : 'NO') . "\n"; echo " - Keys: " . implode(', ', array_keys($result)) . "\n"; } catch (\Throwable $e) { echo " ✗ Error: " . $e->getMessage() . "\n"; echo " File: " . $e->getFile() . ":" . $e->getLine() . "\n"; } echo "\n"; // Test 4: ActivityFeedComponent echo "4. Testing ActivityFeedComponent...\n"; try { $provider = new DemoActivityDataProvider(); $activity = new ActivityFeedComponent( id: 'activity-test', dataProvider: $provider, initialData: ['filter' => 'all'] ); echo " ✓ ActivityFeedComponent created successfully\n"; echo " - ID: " . $activity->getId() . "\n"; // Test action method $result = $activity->setFilter('comments'); echo " ✓ setFilter() returns array: " . (is_array($result) ? 'YES' : 'NO') . "\n"; echo " - Keys: " . implode(', ', array_keys($result)) . "\n"; } catch (\Throwable $e) { echo " ✗ Error: " . $e->getMessage() . "\n"; echo " File: " . $e->getFile() . ":" . $e->getLine() . "\n"; } echo "\n"; // Test 5: MetricsDashboardComponent echo "5. Testing MetricsDashboardComponent...\n"; try { $provider = new DemoMetricsDataProvider(); $metrics = new MetricsDashboardComponent( id: 'metrics-test', dataProvider: $provider, initialData: ['time_range' => '30d'] ); echo " ✓ MetricsDashboardComponent created successfully\n"; echo " - ID: " . $metrics->getId() . "\n"; // Test action method $result = $metrics->refreshMetrics(); echo " ✓ refreshMetrics() returns array: " . (is_array($result) ? 'YES' : 'NO') . "\n"; echo " - Keys: " . implode(', ', array_keys($result)) . "\n"; } catch (\Throwable $e) { echo " ✗ Error: " . $e->getMessage() . "\n"; echo " File: " . $e->getFile() . ":" . $e->getLine() . "\n"; } echo "\n"; echo "==================================\n"; echo "All component tests completed!\n";