晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /usr/share/doc/perl-Test-Simple/t/Test2/modules/Event/ |
Upload File : |
use strict;
use warnings;
use Test2::Tools::Tiny;
use Test2::EventFacet::Trace;
use Test2::API qw/context intercept/;
sub tool {
my $ctx = context();
my $e = $ctx->send_event('Generic', @_);
$ctx->release;
return $e;
}
my $e;
intercept { $e = tool() };
ok($e, "got event");
ok($e->isa('Test2::Event'), "It is an event");
ok($e->isa('Test2::Event::Generic'), "It is an event");
delete $e->{trace};
is_deeply(
$e,
{
causes_fail => 0,
increments_count => 0,
diagnostics => 0,
no_display => 0,
_eid => $e->eid,
hubs => [
{
'buffered' => 0,
'details' => 'Test2::Hub::Interceptor',
'hid' => $e->hubs->[0]->{hid},
'ipc' => 0,
'nested' => 0,
'pid' => $$,
'tid' => 0,
$e->hubs->[0]->{uuid} ? (uuid => $e->hubs->[0]->{uuid}) : (uuid => undef),
}
],
$e->uuid ? (uuid => $e->uuid) : (),
},
"Defaults"
);
for my $f (qw/causes_fail increments_count diagnostics no_display/) {
is($e->$f, 0, "'$f' is 0");
is_deeply([$e->$f], [0], "'$f' is 0 is list context as well");
my $set = "set_$f";
$e->$set(1);
is($e->$f, 1, "'$f' was set to 1");
}
for my $f (qw/callback terminate global sets_plan/) {
is($e->$f, undef, "no $f");
is_deeply([$e->$f], [], "$f is empty in list context");
}
like($e->summary, qr/Test2::Event::Generic/, "Got base class summary");
like(
exception { $e->set_sets_plan('bad') },
qr/'sets_plan' must be an array reference/,
"Must provide an arrayref"
);
$e->set_sets_plan([0, skip => 'cause']);
is_deeply([$e->sets_plan], [0, skip => 'cause'], "sets_plan returns a list, not a ref");
$e->set_sets_plan(undef);
ok(!exists $e->{sets_plan}, "Removed sets_plan key");
ok(!$e->sets_plan, "sets_plan is cleared");
$e->set_global(0);
is($e->global, 0, "global is off");
$e->set_global(1);
is($e->global, 1, "global is on");
$e->set_global(0);
is($e->global, 0, "global is again");
$e->set_global(undef);
ok(!exists $e->{global}, "removed global key");
is($e->global, undef, "global is not defined");
like(
exception { $e->set_callback('dogfood') },
qr/callback must be a code reference/,
"Callback must be code"
);
my $ran = 0;
$e->set_callback(sub {
$ran++;
my $self = shift;
is($self, $e, "got self");
is_deeply( \@_, ['a', 'b', 'c'], "Got args" );
return 'foo';
});
is($e->callback('a', 'b', 'c'), 'foo', "got callback's return");
ok($ran, "ran callback");
$e->set_callback(undef);
ok(!$e->callback, "no callback");
ok(!exists $e->{callback}, "no callback key");
like(
exception { $e->set_terminate('1.1') },
qr/terminate must be a positive integer/,
"terminate only takes integers"
);
like(
exception { $e->set_terminate('foo') },
qr/terminate must be a positive integer/,
"terminate only takes numbers"
);
like(
exception { $e->set_terminate('-1') },
qr/terminate must be a positive integer/,
"terminate only takes positive integers"
);
$e->set_terminate(0),
is($e->terminate, 0, "set to 0, 0 is valid");
$e->set_terminate(1),
is($e->terminate, 1, "set to 1");
$e->set_terminate(123),
is($e->terminate, 123, "set to 123");
$e->set_terminate(0),
is($e->terminate, 0, "set to 0, 0 is valid");
$e->set_terminate(undef);
is($e->terminate, undef, "terminate is not defined");
ok(!exists $e->{terminate}, "no terminate key");
# Test constructor args
intercept { $e = tool(causes_fail => 1, increments_count => 'a') };
is($e->causes_fail, 1, "attr from constructor");
is($e->increments_count, 'a', "attr from constructor");
done_testing;