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());
 | 
						|
  }
 | 
						|
}
 |