PageRenderTime 46ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/mock.stest.php

http://snaptest.googlecode.com/
PHP | 159 lines | 123 code | 36 blank | 0 comment | 0 complexity | 9db036503520e7b893ff2a853f0aba7e MD5 | raw file
  1. <?php
  2. include_once SNAPTEST_ROOT.'mock.php';
  3. class Snap_MockObject_Mockable {
  4. public function pubReturnTrue() {
  5. return true;
  6. }
  7. public function pubCallReturnTrueThreeTimes() {
  8. $this->pubReturnTrue();
  9. $this->pubReturnTrue();
  10. $this->pubReturnTrue();
  11. }
  12. public function pubCallReturnTrueTwoTimesFromPro() {
  13. $this->proCallReturnTrueTwoTimes();
  14. }
  15. protected function proReturnTrue() {
  16. return true;
  17. }
  18. protected function proCallReturnTrueTwoTimes() {
  19. $this->proReturnTrue();
  20. $this->proReturnTrue();
  21. }
  22. }
  23. interface Snap_MockObject_MockableInterface {
  24. public function pubReturnTrue();
  25. public function pubCallReturnTrueThreeTimes();
  26. public function pubCallReturnTrueTwoTimesFromPro();
  27. }
  28. class Snap_MockObject_Mockable_Using_Interface implements Snap_MockObject_MockableInterface {
  29. public function pubReturnTrue() {}
  30. public function pubCallReturnTrueThreeTimes() {}
  31. public function pubCallReturnTrueTwoTimesFromPro() {}
  32. }
  33. class Snap_MockObject_Test_StubGeneration extends Snap_UnitTestCase {
  34. public function setUp() {
  35. $this->mock = new Snap_MockObject('Snap_MockObject_Mockable');
  36. $this->mock_generated = $this->mock->construct();
  37. $this->mock_generated->pubCallReturnTrueThreeTimes();
  38. }
  39. public function tearDown() {
  40. unset($this->mock);
  41. unset($this->mock_generated);
  42. }
  43. public function testInstanceIsMockOjbect() {
  44. return $this->assertIsA($this->mock, 'Snap_MockObject');
  45. }
  46. public function testGeneratedMockHasNoParentClass() {
  47. return $this->assertFalse(get_parent_class($this->mock_generated));
  48. }
  49. public function testPublicMethodsAreCopied() {
  50. return $this->assertTrue(method_exists($this->mock_generated, 'pubReturnTrue'));
  51. }
  52. public function testProtectedMethodsAreNotCopied() {
  53. return $this->assertFalse(method_exists($this->mock_generated, 'proReturnTrue'));
  54. }
  55. public function testCalledMethodsCanBeTallied() {
  56. $count = $this->mock->getTally('pubCallReturnTrueThreeTimes');
  57. return $this->assertEqual($count, 1);
  58. }
  59. public function testIndirectCalledMethodsNotCalled() {
  60. $count = $this->mock->getTally('pubReturnTrue');
  61. return $this->assertEqual($count, 0);
  62. }
  63. }
  64. class Snap_MockObject_Test_StubGeneration_With_Interface extends Snap_UnitTestCase {
  65. public function setUp() {
  66. $this->mock = new Snap_MockObject('Snap_MockObject_MockableInterface');
  67. $this->mock_generated = $this->mock->construct();
  68. }
  69. public function tearDown() {
  70. unset($this->mock);
  71. unset($this->mock_generated);
  72. }
  73. public function testBaseIsMockOjbect() {
  74. return $this->assertIsA($this->mock, 'Snap_MockObject');
  75. }
  76. public function testInstanceImplementsInterface() {
  77. return $this->assertIsA($this->mock_generated, 'Snap_MockObject_MockableInterface');
  78. }
  79. }
  80. class Snap_MockObject_Test_MockGeneration_With_Interface_With_Inheritance extends Snap_UnitTestCase {
  81. public function setUp() {
  82. $this->mock = new Snap_MockObject('Snap_MockObject_Mockable_Using_Interface');
  83. $this->mock_generated = $this->mock->requiresInheritance()->construct();
  84. }
  85. public function tearDown() {
  86. unset($this->mock);
  87. unset($this->mock_generated);
  88. }
  89. public function testBaseIsMockOjbect() {
  90. return $this->assertIsA($this->mock, 'Snap_MockObject');
  91. }
  92. public function testInstanceImplementsInterface() {
  93. return $this->assertIsA($this->mock_generated, 'Snap_MockObject_MockableInterface');
  94. }
  95. public function testMaintainsOriginalClassAsSuperClass() {
  96. return $this->assertIsA($this->mock_generated, 'Snap_MockObject_Mockable_Using_Interface');
  97. }
  98. }
  99. class Snap_MockObject_Test_MockGeneration extends Snap_UnitTestCase {
  100. public function setUp() {
  101. $this->mock = new Snap_MockObject('Snap_MockObject_Mockable');
  102. $this->mock_generated = $this->mock->requiresInheritance()
  103. ->setReturnValue('pubReturnTrue', false)
  104. ->construct();
  105. $this->mock_generated->pubCallReturnTrueThreeTimes();
  106. }
  107. public function tearDown() {
  108. unset($this->mock);
  109. unset($this->mock_generated);
  110. }
  111. public function testProectedMethodsAreCopied() {
  112. return $this->assertTrue(method_exists($this->mock_generated, 'proReturnTrue'));
  113. }
  114. public function testSetReturnValueChangesReturnValue() {
  115. return $this->assertFalse($this->mock_generated->pubReturnTrue());
  116. }
  117. public function testProtectedMethodsCalled() {
  118. $this->mock_generated->pubCallReturnTrueTwoTimesFromPro();
  119. $count = $this->mock->getTally('proReturnTrue');
  120. return $this->assertEqual($count, 2);
  121. }
  122. }
  123. ?>