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

sub new {
	my $class = shift;

	my $self = {};

	$self->{a} = 9;
	$self->{b} = 8;
	$self->{_private} = 7;

	bless $self, $class;

	return $self;
}

sub a {
	my $self = shift;
	return $self->{a};
}

sub b {
	my $self = shift;
	return $self->{b};
}

sub _private {
	my $self = shift;
	return $self->{_private};
}

1;

package main;

use Test::More tests => 13;
use Scalar::Util qw(blessed);
use Data::Dumper;

use Table::Simple;

my $table = new Table::Simple;
my $test2 = new Test2;

ok($test2->a == 9, "sanity check");
ok(! $table->_is_moose_object($test2), "is not a moose object");
ok($table->extract_columns($test2), "extract columns");
ok($table->type eq "Test2", "column type is Test2");
ok($table->has_columns == 2, "have 2 columns");
ok($table->get_column("a")->name() eq "a", "get column 'a'");
ok($table->get_column("b")->name() eq "b", "get column 'b'");
ok(! $table->get_column("_private"), "don't have column '_private'");
ok(! $table->extract_columns( [ qw( a b c d ) ] ), "arrayref doesn't work");

my $test3 = new Test2;
ok($table->extract_row($test2), "extract 1st row");
ok($table->extract_row($test3), "extract 2nd row");
ok($table->row_count == 2, "row count is 2");
ok(! $table->extract_columns($test2), "extract columns fails after adding rows");