mirror of
https://github.com/peklaiho/madlisp.git
synced 2024-11-22 13:24:46 +00:00
unit tests for Printer class
This commit is contained in:
parent
5ed0b0b531
commit
b18fc9cde2
@ -52,6 +52,7 @@ class Printer
|
|||||||
$a = str_replace("\\", "\\\\", $a);
|
$a = str_replace("\\", "\\\\", $a);
|
||||||
$a = str_replace("\n", "\\n", $a);
|
$a = str_replace("\n", "\\n", $a);
|
||||||
$a = str_replace("\r", "\\r", $a);
|
$a = str_replace("\r", "\\r", $a);
|
||||||
|
$a = str_replace("\t", "\\t", $a);
|
||||||
$a = str_replace("\"", "\\\"", $a);
|
$a = str_replace("\"", "\\\"", $a);
|
||||||
return '"' . $a . '"';
|
return '"' . $a . '"';
|
||||||
} else {
|
} else {
|
||||||
|
89
test/PrinterTest.php
Normal file
89
test/PrinterTest.php
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* MadLisp language
|
||||||
|
* @link http://madlisp.com/
|
||||||
|
* @copyright Copyright (c) 2020 Pekka Laiho
|
||||||
|
*/
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
use MadLisp\Func;
|
||||||
|
use MadLisp\Hash;
|
||||||
|
use MadLisp\MList;
|
||||||
|
use MadLisp\Printer;
|
||||||
|
use MadLisp\Symbol;
|
||||||
|
use MadLisp\Vector;
|
||||||
|
|
||||||
|
class PrinterTest extends TestCase
|
||||||
|
{
|
||||||
|
public function notReadableProvider(): array
|
||||||
|
{
|
||||||
|
$mc = $this->createStub(Func::class);
|
||||||
|
$mc->method('isMacro')->willReturn(true);
|
||||||
|
|
||||||
|
$fn = $this->createStub(Func::class);
|
||||||
|
$fn->method('isMacro')->willReturn(false);
|
||||||
|
|
||||||
|
return [
|
||||||
|
[$mc, '<macro>'],
|
||||||
|
[$fn, '<function>'],
|
||||||
|
[new MList([new Symbol('aa'), new Symbol('bb'), new MList([new Symbol('cc')])]), '(aa bb (cc))'],
|
||||||
|
[new Vector([12, 34, new Vector([56])]), '[12 34 [56]]'],
|
||||||
|
[new Hash(['aa' => 'bb', 'cc' => new Hash(['dd' => 'ee'])]), '{aa:bb cc:{dd:ee}}'],
|
||||||
|
[new Symbol('abc'), 'abc'],
|
||||||
|
[new \stdClass(), '<object<stdClass>>'],
|
||||||
|
[true, 'true'],
|
||||||
|
[false, 'false'],
|
||||||
|
[null, 'null'],
|
||||||
|
[123, '123'],
|
||||||
|
[34.56, '34.56'],
|
||||||
|
|
||||||
|
// Test strings
|
||||||
|
['abc', 'abc'],
|
||||||
|
["a\\b\nc\rd\te\"f", "a\\b\nc\rd\te\"f"],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider notReadableProvider
|
||||||
|
*/
|
||||||
|
public function testPrintNotReadable($input, string $expected)
|
||||||
|
{
|
||||||
|
$printer = new Printer();
|
||||||
|
$result = $printer->pstr($input, false);
|
||||||
|
$this->assertSame($expected, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function readableProvider(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[new Hash(['aa' => 'bb', 'cc' => new Hash(['dd' => 'ee'])]), '{"aa":"bb" "cc":{"dd":"ee"}}'],
|
||||||
|
[new Symbol('abc'), 'abc'], // symbol is not quoted
|
||||||
|
|
||||||
|
// Test strings
|
||||||
|
['abc', '"abc"'],
|
||||||
|
["a\\b\nc\rd\te\"f", "\"a\\\\b\\nc\\rd\\te\\\"f\""],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider readableProvider
|
||||||
|
*/
|
||||||
|
public function testPrintReadable($input, string $expected)
|
||||||
|
{
|
||||||
|
$printer = new Printer();
|
||||||
|
$result = $printer->pstr($input, true);
|
||||||
|
$this->assertSame($expected, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testPrintResource()
|
||||||
|
{
|
||||||
|
$file = tmpfile();
|
||||||
|
|
||||||
|
$printer = new Printer();
|
||||||
|
$result = $printer->pstr($file, false);
|
||||||
|
$this->assertSame('<resource>', $result);
|
||||||
|
|
||||||
|
fclose($file);
|
||||||
|
}
|
||||||
|
}
|
@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
use MadLisp\MadLispException;
|
|
||||||
use MadLisp\Hash;
|
use MadLisp\Hash;
|
||||||
use MadLisp\MList;
|
use MadLisp\MList;
|
||||||
use MadLisp\Reader;
|
use MadLisp\Reader;
|
||||||
|
Loading…
Reference in New Issue
Block a user