| 
<?php
 require("PublicWrap.php");
 
 /**
 * Test Case for PublicWrap
 *
 * Requires PHPUnit (developped using 3.6.12)
 */
 class PublicWrapTest extends PHPUnit_Framework_TestCase
 {
 
 private $stuff;
 
 public function setUp()
 {
 $this->stuff = new PublicWrap(new Something());
 }
 
 public function testAccessPublicProperty()
 {
 $this->stuff->a = 10;
 $this->assertEquals(10, $this->stuff->a);
 }
 
 public function testAccessProtectedProperty()
 {
 $this->stuff->b = 19;
 $this->assertEquals(19, $this->stuff->b);
 }
 
 public function testAccessPrivateProperty()
 {
 $this->stuff->c = 24;
 $this->assertEquals(24, $this->stuff->c);
 }
 
 public function testAccessPublicStaticProperty()
 {
 $this->stuff->d = 31;
 $this->assertEquals(31, $this->stuff->d);
 }
 
 public function testAccessProtectedStaticProperty()
 {
 $this->stuff->e = 42;
 $this->assertEquals(42, $this->stuff->e);
 }
 
 public function testAccessPrivateStaticProperty()
 {
 $this->stuff->f = 5;
 $this->assertEquals(5, $this->stuff->f);
 }
 
 public function testAccessPublicMethod()
 {
 $this->assertEquals("g...\n", $this->stuff->g());
 }
 
 public function testAccessProtectedMethod()
 {
 $this->assertEquals("h...\n", $this->stuff->h());
 }
 
 public function testAccessPrivateMethod()
 {
 $this->assertEquals("i...\n", $this->stuff->i());
 }
 
 public function testAccessPublicStaticMethod()
 {
 $this->assertEquals("j...\n", $this->stuff->j());
 }
 
 public function testAccessProtectedStaticMethod()
 {
 $this->assertEquals("k...\n", $this->stuff->k());
 }
 
 public function testAccessPrivateStaticMethod()
 {
 $this->assertEquals("l...\n", $this->stuff->l());
 }
 
 public function testBadConstructorArgument()
 {
 try
 {
 $this->stuff = new PublicWrap("Hello, world!");
 }
 catch (\Exception $e)
 {
 $expected = "PublicWrap::__construct: first argument expected to be an object.";
 $this->assertEquals($expected, $e->getMessage());
 return;
 }
 $this->fail("Expected exception, but never raised.");
 }
 
 public function testGetPropertyDoesNotExists()
 {
 try
 {
 $this->stuff->hello;
 }
 catch (\Exception $e)
 {
 $expected = "PublicWrap::__get: hello property does not exist in Something class.";
 $this->assertEquals($expected, $e->getMessage());
 return;
 }
 $this->fail("Expected exception, but never raised.");
 }
 
 public function testSetPropertyDoesNotExists()
 {
 try
 {
 $this->stuff->hello = 42;
 }
 catch (\Exception $e)
 {
 $expected = "PublicWrap::__set: hello property does not exist in Something class.";
 $this->assertEquals($expected, $e->getMessage());
 return;
 }
 $this->fail("Expected exception, but never raised.");
 }
 
 public function testMethodDoesNotExists()
 {
 try
 {
 $this->stuff->hello();
 }
 catch (\Exception $e)
 {
 $expected = "PublicWrap::__call: hello method does not exist in Something class.";
 $this->assertEquals($expected, $e->getMessage());
 return;
 }
 $this->fail("Expected exception, but never raised.");
 }
 
 }
 
 class Something
 {
 
 public $a = "a...\n";
 protected $b = "b...\n";
 private $c = "c...\n";
 static public $d = "d...\n";
 static protected $e = "e...\n";
 static private $f = "f...\n";
 
 public function g()
 {
 return "g...\n";
 }
 
 protected function h()
 {
 return "h...\n";
 }
 
 private function i()
 {
 return "i...\n";
 }
 
 static public function j()
 {
 return "j...\n";
 }
 
 static protected function k()
 {
 return "k...\n";
 }
 
 static private function l()
 {
 return "l...\n";
 }
 
 }
 
 |