예제 #1
0
T::ok($conn1->start(), 'started a transaction on conn1');
T::ok($conn2->start(), 'started a transaction on conn2');
$rs = $conn1->execute("insert into {$table} values (3)");
T::ok($rs, 'inserted a row into test table from conn1');
//if( ! $rs ) T::debug( $conn1 );
$rs = $conn2->execute("insert into {$table} values(4)");
T::ok($rs, 'inserted a row into test table from conn2');
//if( ! $rs ) T::debug( $conn2 );
T::ok($conn1->commit(), 'committed inserted row on conn1');
T::ok($conn2->commit(), 'committed inserted row on conn2');
T::ok(Transaction::rollback(), 'rolled back the transaction at the global level');
T::ok($rs = $dbmain->execute("select id from {$table}"), 'selected all rows from the table');
$ct = $rs->affected();
T::is($ct, 2, '2 rows in the table, new rows rolled back');
$rs = $conn1->execute("select id from {$table}");
T::is($rs, FALSE, 'after rolling back, new queries fail on rolled back db object');
$dbmain->execute("drop table {$table}");
$db = $newconn();
$raw = file_get_contents(__DIR__ . '/sample/i_can_eat_glass.txt');
$lines = explode("\n", $raw);
$lines = array_slice($lines, 0, 10) + array_slice($lines, 100, 10) + array_slice($lines, 200, 10) + array_slice($lines, 200, 10);
$raw = implode("\n", $lines);
$sql = "CREATE TEMPORARY TABLE t1utf8 (`i` INT UNSIGNED NOT NULL PRIMARY KEY, `line` VARCHAR(5000) ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8";
$db->execute($sql);
foreach ($lines as $i => $line) {
    //$lines[ $i ] = $line = mb_convert_encoding($line, 'UTF-8', 'auto');
    $db->execute('INSERT INTO t1utf8 (`i`, `line`) VALUES (%i, %s)', $i, $line);
}
$rs = $db->execute('SELECT * FROM t1utf8');
$readlines = array();
while ($row = $rs->fetch()) {
예제 #2
0
T::ok(!$cache->replace($k, 1, 10), 'replace fails after key deletion');
T::ok($cache->add($k, 1, 10), 'add works after key deletion');
T::ok($cache->replace($k, 1, 10), 'replace works after key is added');
$k = 'wukka/cache/test/' . microtime(TRUE) . '/' . mt_rand(1, 10000);
T::ok($cache->get($k) === NULL, 'cache get on a non-existent key returns NULL (not false)');
$k = 'wukka/cache/test/' . microtime(TRUE) . '/' . mt_rand(1, 10000);
T::is($cache->increment($k, 1), FALSE, 'increment a new key returns (bool) FALSE');
T::is($cache->decrement($k, 1), FALSE, 'decrement a new key returns (bool) FALSE');
T::cmp_ok($cache->set($k, 'test'), '===', TRUE, 'setting a key returns bool TRUE');
T::cmp_ok($cache->replace($k, 'test1'), '===', TRUE, 'replacing a key returns bool TRUE');
T::cmp_ok($cache->{$k} = '11', '===', '11', 'setting using the magic method property approach returns value');
unset($cache->{$k});
T::cmp_ok($cache->add($k, 'fun'), '===', TRUE, 'adding a key returns (bool) TRUE');
T::is($cache->set($k, NULL), TRUE, 'setting a key to null returns true');
T::cmp_ok($cache->get(array($k)), '===', array(), 'after setting the key to null, key is deleted');
T::is($cache->set($k, $v = '0'), TRUE, 'setting a key to zero returns true');
T::cmp_ok($cache->get($k), '===', $v, 'after setting the key to 0, get returns zero value');
T::cmp_ok($cache->get(array($k)), '===', array($k => $v), 'multi-get returns the key with zero value');
T::ok($cache->set($k, 1, $ttl = 3600 * 24 * 30), 'setting with a huge timeout');
T::cmp_ok(strval($cache->get($k)), '===', '1', 'get returns correct value');
$incr = 1000000;
T::ok($cache->increment($k, $incr), 'incrementing with a large number');
T::cmp_ok(strval($cache->get($k)), '===', strval($incr + 1), 'get returns correct value');
T::ok($cache->decrement($k, $incr), 'decrementing with a large number');
T::cmp_ok(intval($cache->get($k)), '===', 1, 'get returns correct value');
$huge_number = 9223372036854775806;
if (!is_int($huge_number)) {
    $huge_number = 2147483646;
}
T::Debug("testing with {$huge_number}");
T::ok($cache->set($k, $v = $huge_number), 'setting a huge number');
예제 #3
0
$each = array();
while (list($k, $v) = $c->each()) {
    $each[$k] = $v;
}
T::is($c->all(), $each, 'each loop returns all the data in the container');
T::is(array_keys($input), $c->keys(), 'keys returns all the keys passed to input');
T::is(array_keys($input, 'a'), $c->keys('a'), 'search for a key');
T::is($c->pop(), $v = array_pop($input), 'popped off an element, same as input');
T::is($c->push($v), array_push($input, $v), 'pushed an element back onto the container');
T::is($c->all(), $input, 'after pop and push, input matches container');
T::is($c->shift(), $v = array_shift($input), 'shifted off an element, same as input');
T::is($c->unshift($v), array_unshift($input, $v), 'unshift an element back onto the container');
T::is($c->all(), $input, 'after shift and unshift, input matches container');
@asort($input);
@$c->sort();
T::is($c->all(), $input, 'after sorting, matches sorted input');
ksort($input);
$c->ksort();
T::is($c->all(), $input, 'after key sorting, matches sorted input');
krsort($input);
T::is($c->all(), $input, 'after reverse key sorting, matches sorted input');
$c->flush();
T::is($c->all(), array(), 'flush removes everything from the container');
$c->load($input);
T::is($c->all(), $input, 'load puts it all back in again');
$c->push(0);
$c->push(NULL);
array_push($input, 0);
array_push($input, NULL);
T::is($c->keys(NULL, TRUE), array_keys($input, NULL, TRUE), 'strict match works');