fixture->query("INSERT INTO test (textstuff) VALUES ('moo'), ('foo'), ('hey'), ('foo'), ('boo'), ('poo')"); } catch (BSDbException $e) { $this->fail('unexpected exception'); } try { $res = $this->fixture->query("SELECT * FROM test WHERE textstuff = 'foo'"); $row = $res->fetchArray(); $this->assertNotNull($row['textstuff']); $row = $res->fetchArray(); $this->assertNotNull($row['textstuff']); $row = $res->fetchArray(); $this->assertNull($row['textstuff']); } catch (BSDbException $e) { $this->fail('unexpected exception'); } } public function testIterator() { $this->fixture->query("INSERT INTO test (textstuff) VALUES ('a'), ('b'), ('c')"); $result = $this->fixture->query("SELECT * FROM test"); $i = 0; foreach ($result as $item) { $i++; } $this->assertEquals(3, $i); } public function testEscapeString() { $this->assertEquals("Robert\'s castle", $this->fixture->escapeString("Robert's castle")); } public function testFetchObject() { try { $this->fixture->query("INSERT INTO test (textstuff) VALUES ('foo')"); } catch (BSDbException $e) { $this->fail('unexpected exception'); } try { $res = $this->fixture->query("SELECT * FROM test"); $obj = $res->fetchObject(); $this->assertNotNull($obj); $this->assertEquals('foo', $obj->textstuff); } catch (BSDbException $e) { $this->fail('unexpected exception'); } } public function testQueryFirst() { try { $this->fixture->query("INSERT INTO test (textstuff) VALUES ('abc'), ('123'), ('def')"); } catch (BSDbException $e) { $this->fail('unexpected exception'); } try { $res = $this->fixture->queryFirst("SELECT * FROM test ORDER BY id DESC"); $this->assertEquals('def', $res['textstuff']); } catch (BSDbException $e) { $this->fail('unexpected exception'); } } public function testInsertId() { try { $this->fixture->query("INSERT INTO test (textstuff) VALUES ('abc')"); $this->assertEquals(1, $this->fixture->insertId('test', 'textstuff')); $this->fixture->query("INSERT INTO test (textstuff) VALUES ('123')"); $this->assertEquals(2, $this->fixture->insertId('test', 'textstuff')); } catch (BSDbException $e) { $this->fail('unexpected exception'); } } public function testNumRows() { try { $this->fixture->query("INSERT INTO test (textstuff) VALUES ('123'), ('456'), ('789')"); $res = $this->fixture->query("SELECT * FROM test"); $this->assertEquals(3, $res->size()); $res = $this->fixture->query("SELECT * FROM test WHERE textstuff = '--invalid value--'"); $this->assertEquals(0, $res->size()); } catch (BSDbException $e) { $this->fail('unexpected exception'); } } public function testAffectedRows() { try { $this->fixture->query("INSERT INTO test (textstuff) VALUES ('123'), ('456'), ('123')"); $res = $this->fixture->query("UPDATE test SET textstuff = 'abc' WHERE textstuff = '123'"); $this->assertEquals(2, $this->fixture->affectedRows()); $res = $this->fixture->query("SELECT * FROM test WHERE textstuff = 'abc'"); $this->assertEquals(2, $res->size()); } catch (BSDbException $e) { $this->fail('unexpected exception'); } } public function testInvalidQuery() { try { $this->fixture->query("SELECT * FROM foobar"); $this->fail('exception expected'); } catch (BSDbException $e) { $this->assertEquals('SELECT * FROM foobar', $e->getQuery()); } } public function testTransactions() { $this->fixture->begin(); $this->fixture->query("INSERT INTO test (textstuff) VALUES ('foo')"); $this->fixture->commit(); $res = $this->fixture->query("SELECT * FROM test WHERE textstuff = 'foo'"); $this->assertEquals(1, $res->size()); $this->fixture->begin(); $this->fixture->query("UPDATE test SET textstuff = 'abc'"); $this->fixture->rollback(); $res = $this->fixture->query("SELECT * FROM test WHERE textstuff = 'abc'"); $this->assertEquals(0, $res->size()); $res = $this->fixture->query("SELECT * FROM test WHERE textstuff = 'foo'"); $this->assertEquals(1, $res->size()); } } ?>