The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Test::ObjAnno::Util;

use strict;
use warnings;

use DBI;
use Fatal;

my ($schema, $db, $dsn, @db_pair);

BEGIN { 
  $schema = do {
    open my $schema_file, "<", "sql/sqlite.sql";
    local $/;
    <$schema_file>;
  };

  $db  = "t/notes.db";
  $dsn = "dbi:SQLite:dbname=$db";

  @db_pair = (
    db => { 
      dsn   => $dsn,
      table => 'annotations',
    }
  );
}

sub build_empty_db {
  unlink $db if -e $db;
  my $dbh = DBI->connect($dsn, undef, undef);
  $dbh->do($schema);
}

BEGIN { build_empty_db; }

{
  package Some::Object;
  use Object::Annotate -annotator => {
    @db_pair,
    obj_class => 'thinger',
  };

  sub new { return bless {} }
  sub id { return $_[0] + 0 };
}

{
  package Some::Widget;
  use Object::Annotate -annotator => { @db_pair };

  sub new { return bless {} => shift }
  sub id { return $_[0] + 0 };
}

{
  package Some::Widget::Generic;
  our @ISA = qw(Some::Widget);
  use Object::Annotate -annotator => {
    @db_pair,
    obj_class => 'widgeneric',
    id_attr   => \'generic',
  };
}

"true value";