57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\v\base;
 | |
| 
 | |
| use nur\b\ui\IContent;
 | |
| use nur\b\ui\IPrintable;
 | |
| use nur\c;
 | |
| use nur\t\TestCase;
 | |
| use nur\v\vo;
 | |
| 
 | |
| class ComponentTest extends TestCase {
 | |
|   function testGetContent() {
 | |
|     $component = new MyComponent();
 | |
|     $content = c::string($component->getContent());
 | |
|     self::assertSame("<h1>le titre</h1>\n<helloworld><bonjourmonde>print!static-content!generated-content!", $content);
 | |
|   }
 | |
| 
 | |
|   function testPrint() {
 | |
|     $component = new MyComponent();
 | |
|     ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_FLUSHABLE);
 | |
|     $component->print();
 | |
|     $content = ob_get_clean();
 | |
|     self::assertSame("<h1>le titre</h1>\n<helloworld><bonjourmonde>print!static-content!generated-content!", $content);
 | |
|   }
 | |
| }
 | |
| 
 | |
| class ZePrint implements IPrintable {
 | |
|   function print(): void {
 | |
|     echo "print!";
 | |
|   }
 | |
| }
 | |
| 
 | |
| class ZeStaticContent implements IContent {
 | |
|   function getContent(): array {
 | |
|     return ["static-content!"];
 | |
|   }
 | |
| }
 | |
| 
 | |
| class ZeGeneratedContent implements IContent {
 | |
|   function getContent(): iterable {
 | |
|     yield "generated-content!";
 | |
|   }
 | |
| }
 | |
| 
 | |
| class MyComponent extends SimplePrintable {
 | |
|   function print(): void {
 | |
|     vo::h1(null);
 | |
|     vo::h1("le titre");
 | |
|     vo::write("<hello");
 | |
|     vo::write("world>");
 | |
|     vo::write(["<bonjour"]);
 | |
|     vo::write(["monde>"]);
 | |
|     vo::write(new ZePrint());
 | |
|     vo::write(new ZeStaticContent());
 | |
|     vo::write(new ZeGeneratedContent());
 | |
|   }
 | |
| }
 |