Context-Singleton

 view release on metacpan or  search on metacpan

t/Context-Singleton-Frame.t  view on Meta::CPAN

		$object->deduce ('constant');

		object      => $object,
		with_rule   => 'constant',
		with_value  => 'foo',
		throws      => 'Context::Singleton::Exception::Deduced',
	};

	test_method_proclaim "should throw when rule is already deduce()-ed as dependency" => do {
		my $object = build_frame;
		$object->deduce ('cascaded');

		object      => $object,
		with_rule   => 'constant',
		with_value  => 'foo',
		throws      => 'Context::Singleton::Exception::Deduced',
	};

	test_method_proclaim "should proclaim() rule with known builder after its deduce() failed" => do {
		my $object = build_frame;
		$object->try_deduce ('with_deps');

t/Context-Singleton-Frame.t  view on Meta::CPAN

	};

	should_be_deduced       'after deduce() should be deduced' => do {
		my $object = build_frame;
		$object->deduce ('constant');

		object     => $object,
		with_rule  => 'constant',
	};

	should_be_deduced       'after cascaded deduce() should be deduced' => do {
		my $object = build_frame;
		$object->deduce ('cascaded');

		object     => $object,
		with_rule  => 'constant',
	};

	should_not_be_deduced   'after unsuccessful cascaded deduce() should not be deduced' => do {
		my $object = build_frame;
		$object->try_deduce ('with_multi_deps');

		object     => $object,
		with_rule  => 'constant',
	};

	return;
};

t/Context-Singleton-Frame.t  view on Meta::CPAN

	};

	should_be_deducible     'after deduce() should be deducible' => do {
		my $object = build_frame;
		$object->deduce ('constant');

		object      => $object,
		with_rule   => 'constant',
	};

	should_be_deducible     'after cascaded deduce() should be deducible' => do {
		my $object = build_frame;
		$object->deduce ('cascaded');

		object      => $object,
		with_rule   => 'constant',
	};

	return;
};

describe_method 'deduce' => [qw[ rule ]]         => as {
	shared->frame_class = 'Sample::Context::Singleton::Frame::__::Basic';

t/lib/Sample/Context/Singleton/Frame.pm  view on Meta::CPAN

		as => sub { join '/', @_ },
		default => { foo => 'value', bar => 42 },
		dep => [ 'foo', 'bar' ],
	));

	$self->db->contrive (with_deps => (
		as => sub { join '-', @_ },
		dep => [ 'foo', 'bar' ],
	));

	$self->db->contrive (cascaded => (
		as => sub { join ':', 'cascaded', @_ },
		default => { param => 'param' },
		dep => [ 'param', 'with_deps' ],
	));

	$self->db->trigger (with_trigger => sub {
		my $copy = 'copy_trigger';
		$self->proclaim ($copy, $_[0]) unless $self->is_deduced ($copy);
	});

	$self->proclaim ('Calc', 'Sample::Context::Singleton::Frame::003::Calc');

t/lib/Sample/Context/Singleton/Frame.pm  view on Meta::CPAN

package Sample::Context::Singleton::Frame::__::Basic;
our @ISA = 'Sample::Context::Singleton::Frame::001::Unique::DB';

sub contrive_builders {
	my ($self) = @_;

	$self->contrive (constant => (
		value => 'value-42',
	));

	$self->contrive (cascaded => (
		dep => [ 'constant' ],
		as => sub { "cascaded:$_[0]" },
	));

	$self->contrive (with_deps => (
		dep => [ 'unknown' ],
		as => sub { "with_deps:$_[0]" },
	));

	$self->contrive (with_multi_deps => (
		dep => [ 'unknown', 'constant' ],
		as => sub { "with_deps:$_[0]:$_[1]" },



( run in 0.547 second using v1.01-cache-2.11-cpan-49f99fa48dc )