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