package tests::SQLExtRegistryTest;

use strict;

use base qw/Lire::Test::TestCase tests::TestStoreFixture/;

use Lire::SQLExt::Registry;

sub new {
    my $self = shift()->SUPER::new( @_ );

    $self->init();

    $self;
}

sub set_up {
    my $self = shift->SUPER::set_up();

    $self->set_up_test_store();
}

sub tear_down {
    my $self = shift->SUPER::tear_down();

    $self->tear_down_test_store();
}

sub mytestfunc {
    return 'mytestfunc';
}

sub test_register_aggregates {
    my $self = $_[0];

    local @Lire::SQLExt::Registry::EXT_AGGREGATES =
      (
       [ 'myaggregate', 0, 'myaggregate' ]
      );

    my $dbh = $self->{'store'}->_dbh();

    Lire::SQLExt::Registry->register_aggregates( $dbh );
    my $res =  $dbh->selectrow_arrayref( "SELECT myaggregate() FROM dlf_test");
    $self->assert_deep_equals( [ 260 ], $res );
}

sub test_register_functions {
    my $self = $_[0];

    local @Lire::SQLExt::Registry::EXT_FUNCTIONS =
      (
       [ 'mytestfunc', 0, \&mytestfunc ]
      );

    my $dbh = $self->{'store'}->_dbh();

    Lire::SQLExt::Registry->register_functions( $dbh );
    my $res =  $dbh->selectrow_arrayref( "SELECT mytestfunc()" );
    $self->assert_deep_equals( [ 'mytestfunc' ], $res );
}

package myaggregate;

sub new {
    return bless {}, shift;
}

sub step {
    return;
}

sub finalize {
    return 260;
}

1;


syntax highlighted by Code2HTML, v. 0.9.1