The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env php4
<?php

# You must configure bk_connect.pl to connect with
# your database.
#
# You must also set up the bk_code table schema
# and load at least the core bk_code records before
# this will run.  The native language must be English.

print "1..25\n";

function ok($got, $expect = 'NO SECOND ARG') {
    global $ok_counter;
    $ok_counter++;
    if ($expect === 'NO SECOND ARG') {
        if ($got) {
            print "ok $ok_counter\n";
        } else {
            print "not ok $ok_counter\n";
        }
    } else {
        if ( $got == $expect ) {
            print "ok $ok_counter\n";
        } else {
            print "not ok $ok_counter\n";
            print "# Test $ok_counter got: '$got'\n";
            print "#   Expected: '$expect'\n";
        }
    }
}

require_once('bk_connect.inc');
require_once("BabelKit.php");
ok(1);

$dbh = bk_connect();
ok(1);

$bkh = new BabelKit($dbh);
ok(1);

# Clean up old data.
$bkh->remove('regression',  1);
$bkh->slave('regression', '2', NULL);
$bkh->put('regression', 'en', 3, NULL);
ok(1);

# Test basic puts.
$bkh->put('regression', 'en',  1, 'Monday', NULL);
$bkh->put('regression', 'en', '2', 'Tuesday', '');
$bkh->put('regression', 'fr', '2', 'mardi', 3, 'd');
ok(1);

# And gets.

list( $desc, $order, $flag ) = $bkh->get('regression', 'en', '1');
ok( "$desc,$order,$flag", 'Monday,1,' );

list( $desc, $order, $flag ) = $bkh->get('regression', 'en',  2 );
ok( "$desc,$order,$flag", 'Tuesday,2,' );

list( $desc, $order, $flag ) = $bkh->get('regression', 'fr',  2 );
ok( "$desc,$order,$flag", 'mardi,0,' );

# Simple select.
$expect = '<select name="regression">
<option value="" selected>Coffee Date?
<option value="1">Monday
<option value="2">Mardi
</select>
';
ok( $bkh->select('regression', 'fr', array(
                 'select_prompt' => 'Coffee Date?'
                 )), $expect );

# Slave & desc methods.
$bkh->slave('regression', '3', 'wednes day');
list( $desc, $order, $flag ) = $bkh->get('regression', 'en', 3);
ok( "$desc,$order,$flag", 'wednes day,3,' );
ok( $bkh->desc('regression', 'fr', 3),           'wednes day' );
ok( $bkh->ucfirst('regression', 'fr', 3),        'Wednes day' );
ok( $bkh->ucwords('regression', 'fr', 3),        'Wednes Day' );
ok( $bkh->desc('regression', 'fr', 2),           'mardi' );
ok( $bkh->render('regression', 'fr', 3),         'wednes day' );
ok( $bkh->data('regression', 'en', 3),           'wednes day' );
ok( $bkh->data('regression', 'fr', 3),           '' );
ok( $bkh->param('regression', 3),                'wednes day' );

$bkh->slave('regression', '3', 'Wednesday');
list( $desc, $order, $flag ) = $bkh->get('regression', 'en', 3);
ok( "$desc,$order,$flag", 'Wednesday,3,' );


# Select options.
$expect = '<select name="regression_test" onchange="submit()">
<option value="">(None)
<option value="1">Monday
<option value="2" selected>Mardi
</select>
';
ok( $bkh->select('regression', 'fr', array(
                'var_name'     => 'regression_test',
                'value'        => '2',
                'subset'       => array( 1, '2' ),
                'options'      => 'onchange="submit()"',
                'blank_prompt' => '(None)'
                )), $expect );

# Radiobox options.
$expect = '<input type="radio" name="rt" onchange="submit()" value="">(None)<br>
<input type="radio" name="rt" onchange="submit()" value="1">Monday<br>
<input type="radio" name="rt" onchange="submit()" value="2" checked>Mardi';
ok( $bkh->radio('regression', 'fr', array(
                'var_name'     => 'rt',
                'default'      => '2',
                'subset'       => array( 1, '2' ),
                'options'      => 'onchange="submit()"',
                'blank_prompt' => '(None)'
                )), $expect);

# Select multiple options.
$expect= '<select multiple name="reg_test[]" onchange="submit()" size="10">
<option value="1">Monday
<option value="2" selected>Mardi
<option value="3" selected>Wednesday
</select>
';
ok( $bkh->multiple('regression', 'fr', array(
                'var_name' => 'reg_test',
                'value'    => array( '2', 3 ),
                'subset'   => array( 1, '2', 3 ),
                'options'  => 'onchange="submit()"',
                'size'     => 10
                )), $expect);

# Checkbox options.
$expect = '<input type="checkbox" name="checkbox_test[]" onchange="submit()" value="1" checked>Monday<br>
<input type="checkbox" name="checkbox_test[]" onchange="submit()" value="2">Mardi<br>
<input type="checkbox" name="checkbox_test[]" onchange="submit()" value="3" checked>Wednesday';
ok( $bkh->checkbox('regression', 'fr', array(
                'var_name' => 'checkbox_test',
                'value'    => array( '1', 3 ),
                'subset'   => array( 1, '2', 3 ),
                'options'  => 'onchange="submit()"'
                )), $expect);

# Clean up the test data.
$bkh->remove('regression',  1);
$bkh->slave('regression', '2', '');
$bkh->put('regression', 'en', 3, '');
ok(1);

$rows = $bkh->full_set('regression', 'fr');
ok(count($rows), 0);

?>