# Source for file Mock.php

Documentation is available at Mock.php

1. <?php
2. /*
3. * $Id: Mock.php 1819 2007-06-25 17:48:44Z subzero2000 $
4. *
5. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9. * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16. *
17. * This software consists of voluntary contributions made by many individuals
18. * and is licensed under the LGPL. For more information, see
19. * <http://www.phpdoctrine.com>.
20. */
21. /**
22. * Doctrine_Adapter_Mock
23. * This class is used for special testing purposes.
24. *
25. * @package Doctrine
26. * @subpackage Doctrine_Adapter
27. * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
28. * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
29. * @category Object Relational Mapping
30. * @link www.phpdoctrine.com
31. * @since 1.0
32. * @version $Revision: 1819 $
33. */
34. class Doctrine_Adapter_Mock implements Doctrine_Adapter_Interface, Countable
35. {
36. private $name;
38. private $queries = array();
40. private $exception = array();
42. private $lastInsertIdFail = false;
44. public function __construct($name = null)
45. {
46. $this->name = $name;
47. }
48. public function getName()
49. {
50. return $this->name;
51. }
52. public function pop()
53. {
54. return array_pop($this->queries);
55. }
56. public function forceException($name, $message = '', $code = 0)
57. {
58. $this->exception = array($name, $message, $code);
59. }
60. public function prepare($query)
61. {
62. $mock = new Doctrine_Adapter_Statement_Mock($this, $query);
63. $mock->queryString = $query;
65. return $mock;
66. }
67. public function addQuery($query)
68. {
69. $this->queries[] = $query;
70. }
71. public function query($query)
72. {
73. $this->queries[] = $query;
75. $e = $this->exception;
77. if( ! empty($e)) {
78. $name = $e[0];
80. $this->exception = array();
82. throw new $name($e[1], $e[2]);
83. }
85. $stmt = new Doctrine_Adapter_Statement_Mock($this, $query);
86. $stmt->queryString = $query;
88. return $stmt;
89. }
90. public function getAll()
91. {
92. return $this->queries;
93. }
94. public function quote($input)
95. {
96. return "'" . addslashes($input) . "'";
97. }
98. public function exec($statement)
99. {
100. $this->queries[] = $statement;
102. $e = $this->exception;
104. if( ! empty($e)) {
105. $name = $e[0];
107. $this->exception = array();
109. throw new $name($e[1], $e[2]);
110. }
112. return 0;
113. }
114. public function forceLastInsertIdFail($fail = true)
115. {
116. if ($fail) {
117. $this->lastInsertIdFail = true;
118. } else {
119. $this->lastInsertIdFail = false;
120. }
121. }
122. public function lastInsertId()
123. {
124. $this->queries[] = 'LAST_INSERT_ID()';
125. if ($this->lastInsertIdFail) {
126. return null;
127. } else {
128. return 1;
129. }
130. }
131. public function count()
132. {
133. return count($this->queries);
134. }
135. public function beginTransaction()
136. {
137. $this->queries[] = 'BEGIN TRANSACTION';
138. }
139. public function commit()
140. {
141. $this->queries[] = 'COMMIT';
142. }
143. public function rollBack()
144. {
145. $this->queries[] = 'ROLLBACK';
146. }
147. public function errorCode()
148. { }
149. public function errorInfo()
150. { }
151. public function getAttribute($attribute)
152. {
153. if($attribute == Doctrine::ATTR_DRIVER_NAME)
154. return strtolower($this->name);
155. }
156. public function setAttribute($attribute, $value)
157. {
159. }
160. public function sqliteCreateFunction()
161. { }
162. }