xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Event/V2.t (revision 5486feefcc8cb79b19e014ab332cc5dfd05b3b33)
15759b3d2Safresh1use strict;
25759b3d2Safresh1use warnings;
35759b3d2Safresh1use Test2::Tools::Tiny;
45759b3d2Safresh1
55759b3d2Safresh1use Test2::API qw/context intercept/;
65759b3d2Safresh1
75759b3d2Safresh1use Test2::Event::V2();
85759b3d2Safresh1
95759b3d2Safresh1my $CLASS = 'Test2::Event::V2';
105759b3d2Safresh1
115759b3d2Safresh1ok($CLASS->isa('Test2::Event'), "Subclass of Test2::Event");
125759b3d2Safresh1
135759b3d2Safresh1is_deeply(
145759b3d2Safresh1    [Test2::Event::V2->non_facet_keys],
155759b3d2Safresh1    ['uuid', '_meta'],
165759b3d2Safresh1    "Got non-facet keys"
175759b3d2Safresh1);
185759b3d2Safresh1
195759b3d2Safresh1ok($CLASS->can($_), "has method $_") for qw{
205759b3d2Safresh1    causes_fail diagnostics global increments_count no_display sets_plan
215759b3d2Safresh1    subtest_id summary terminate
225759b3d2Safresh1    uuid set_uuid
235759b3d2Safresh1    meta
245759b3d2Safresh1    facet_data
255759b3d2Safresh1    about
265759b3d2Safresh1};
275759b3d2Safresh1
285759b3d2Safresh1ok(!exception { $CLASS->new(uuid => 2, about => {uuid => 2}) }, "Can have matching uuids");
295759b3d2Safresh1
305759b3d2Safresh1like(
315759b3d2Safresh1    exception { $CLASS->new(uuid => 1, about => {uuid => 2}) },
325759b3d2Safresh1    qr/uuid '1' passed to constructor, but uuid '2' is already set in the 'about' facet/,
335759b3d2Safresh1    "Cannot have a uuid mismatch"
345759b3d2Safresh1);
355759b3d2Safresh1
365759b3d2Safresh1my $one = $CLASS->new(uuid => 123);
375759b3d2Safresh1is($one->about->{uuid}, 123, "Set uuid in about facet");
385759b3d2Safresh1
395759b3d2Safresh1$one = $CLASS->new(about => { uuid => 123 });
405759b3d2Safresh1is($one->uuid, 123, "set uuid attribute");
415759b3d2Safresh1
42*5486feefSafresh1my $trace = {frame => ['main', 'file.t', 42, 'foo'], tid => 0, pid => $$, stamp => 123};
435759b3d2Safresh1$one = $CLASS->new(trace => $trace);
445759b3d2Safresh1ok($trace != $one->trace, "Did not keep or modify the original trace ref");
455759b3d2Safresh1ok($one->trace->isa('Test2::EventFacet::Trace'), "Blessed the trace");
465759b3d2Safresh1is_deeply($one->trace, $trace, "Trace has all data");
475759b3d2Safresh1
485759b3d2Safresh1$one = $CLASS->new;
495759b3d2Safresh1ok(!$one->uuid, "no uuid attribute");
50256a93a4Safresh1ok(!($one->about && $one->about->{uuid}), "no uuid in about facet");
515759b3d2Safresh1$one->set_uuid(123);
525759b3d2Safresh1is($one->about->{uuid}, 123, "Set uuid in about facet");
535759b3d2Safresh1is($one->uuid, 123, "set uuid attribute");
545759b3d2Safresh1
555759b3d2Safresh1
565759b3d2Safresh1$one = $CLASS->new(
575759b3d2Safresh1    uuid => '123',
585759b3d2Safresh1    trace => $trace,
595759b3d2Safresh1    assert => {pass => 1, details => 'pass'},
605759b3d2Safresh1    info => [{tag => 'NOTE', details => 'a note'}],
615759b3d2Safresh1);
625759b3d2Safresh1
635759b3d2Safresh1$one->set_meta('foo' => {'xyz' => 1});
645759b3d2Safresh1
655759b3d2Safresh1$one->{_custom_sttr} = 'xxx';
665759b3d2Safresh1
675759b3d2Safresh1is_deeply(
685759b3d2Safresh1    $one->facet_data,
695759b3d2Safresh1    {
705759b3d2Safresh1        trace  => $trace,
715759b3d2Safresh1        assert => {pass => 1, details => 'pass'},
725759b3d2Safresh1        info   => [{tag => 'NOTE', details => 'a note'}],
735759b3d2Safresh1        meta  => {foo  => {'xyz' => 1}},
745759b3d2Safresh1        about => {uuid => 123},
755759b3d2Safresh1    },
765759b3d2Safresh1    "Facet data has everything we want, and nothing we do not"
775759b3d2Safresh1);
785759b3d2Safresh1
795759b3d2Safresh1sub my_tool {
805759b3d2Safresh1    my $ctx = context();
815759b3d2Safresh1
825759b3d2Safresh1    my $event = $ctx->send_ev2(info => [{tag => 'NOTE', details => "This is a note"}]);
835759b3d2Safresh1
845759b3d2Safresh1    $ctx->release;
855759b3d2Safresh1
865759b3d2Safresh1    return $event;
875759b3d2Safresh1}
885759b3d2Safresh1
895759b3d2Safresh1my $events = intercept {
905759b3d2Safresh1    my_tool();
915759b3d2Safresh1};
925759b3d2Safresh1
935759b3d2Safresh1is(@$events, 1, "Got 1 event");
945759b3d2Safresh1ok($events->[0]->isa($CLASS), "Created the right type of event");
955759b3d2Safresh1is_deeply(
965759b3d2Safresh1    $events->[0]->facet_data->{info},
975759b3d2Safresh1    [{tag => 'NOTE', details => "This is a note"}],
985759b3d2Safresh1    "Got the specified info facet"
995759b3d2Safresh1);
1005759b3d2Safresh1
1015759b3d2Safresh1done_testing;
102