aboutsummaryrefslogtreecommitdiffstats
path: root/lib/htmlpurifier/tests/FSTools
diff options
context:
space:
mode:
Diffstat (limited to 'lib/htmlpurifier/tests/FSTools')
-rw-r--r--lib/htmlpurifier/tests/FSTools/FileSystemHarness.php36
-rw-r--r--lib/htmlpurifier/tests/FSTools/FileTest.php46
2 files changed, 82 insertions, 0 deletions
diff --git a/lib/htmlpurifier/tests/FSTools/FileSystemHarness.php b/lib/htmlpurifier/tests/FSTools/FileSystemHarness.php
new file mode 100644
index 000000000..710196e4f
--- /dev/null
+++ b/lib/htmlpurifier/tests/FSTools/FileSystemHarness.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * Test harness that sets up a filesystem sandbox for file-emulation
+ * functions to safely unit test in.
+ *
+ * @todo Make an automatic FSTools mock or something
+ */
+class FSTools_FileSystemHarness extends UnitTestCase
+{
+
+ protected $dir, $oldDir;
+
+ function __construct() {
+ parent::__construct();
+ $this->dir = 'tmp/' . md5(uniqid(rand(), true)) . '/';
+ mkdir($this->dir);
+ $this->oldDir = getcwd();
+
+ }
+
+ function __destruct() {
+ FSTools::singleton()->rmdirr($this->dir);
+ }
+
+ function setup() {
+ chdir($this->dir);
+ }
+
+ function tearDown() {
+ chdir($this->oldDir);
+ }
+
+}
+
+// vim: et sw=4 sts=4
diff --git a/lib/htmlpurifier/tests/FSTools/FileTest.php b/lib/htmlpurifier/tests/FSTools/FileTest.php
new file mode 100644
index 000000000..e9b703a2d
--- /dev/null
+++ b/lib/htmlpurifier/tests/FSTools/FileTest.php
@@ -0,0 +1,46 @@
+<?php
+
+require_once 'FSTools/FileSystemHarness.php';
+
+/**
+ * These are not really unit tests, just sanity checks of basic functionality.
+ */
+class FSTools_FileTest extends FSTools_FileSystemHarness
+{
+
+ function test() {
+ $name = 'test.txt';
+ $file = new FSTools_File($name);
+ $this->assertFalse($file->exists());
+ $file->write('foobar');
+ $this->assertTrue($file->exists());
+ $this->assertEqual($file->get(), 'foobar');
+ $file->delete();
+ $this->assertFalse($file->exists());
+ }
+
+ function testGetNonExistent() {
+ $name = 'notfound.txt';
+ $file = new FSTools_File($name);
+ $this->expectError();
+ $this->assertFalse($file->get());
+ }
+
+ function testHandle() {
+ $file = new FSTools_File('foo.txt');
+ $this->assertFalse($file->exists());
+ $file->open('w');
+ $this->assertTrue($file->exists());
+ $file->put('Foobar');
+ $file->close();
+ $file->open('r');
+ $this->assertIdentical('F', $file->getChar());
+ $this->assertFalse($file->eof());
+ $this->assertIdentical('oo', $file->read(2));
+ $this->assertIdentical('bar', $file->getLine());
+ $this->assertTrue($file->eof());
+ }
+
+}
+
+// vim: et sw=4 sts=4