xref: /openbsd-src/gnu/usr.bin/perl/cpan/podlators/t/parselink/basic.t (revision e068048151d29f2562a32185e21a8ba885482260)
156d68f1eSafresh1#!/usr/bin/perl
2b8851fccSafresh1#
356d68f1eSafresh1# Tests for Pod::ParseLink.
4b8851fccSafresh1#
5*e0680481Safresh1# Copyright 2001, 2009, 2018, 2020, 2022 by Russ Allbery <rra@cpan.org>
6b8851fccSafresh1#
7b8851fccSafresh1# This program is free software; you may redistribute it and/or modify it
8b8851fccSafresh1# under the same terms as Perl itself.
9f3efcd01Safresh1#
10f3efcd01Safresh1# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl
11b8851fccSafresh1
1256d68f1eSafresh1use 5.008;
1356d68f1eSafresh1use strict;
1456d68f1eSafresh1use warnings;
1556d68f1eSafresh1
1656d68f1eSafresh1use Test::More tests => 28;
1756d68f1eSafresh1
1856d68f1eSafresh1BEGIN {
1956d68f1eSafresh1    use_ok('Pod::ParseLink');
2056d68f1eSafresh1}
2156d68f1eSafresh1
22b8851fccSafresh1# The format of each entry in this array is the L<> text followed by the
23b8851fccSafresh1# five-element parse returned by parselink.
24*e0680481Safresh1#<<<
25b8851fccSafresh1our @TESTS = (
2656d68f1eSafresh1    ['foo'           => (undef, 'foo',              'foo', undef,     'pod')],
2756d68f1eSafresh1    ['foo|bar'       => ('foo', 'foo',              'bar', undef,     'pod')],
2856d68f1eSafresh1    ['foo/bar'       => (undef, '"bar" in foo',     'foo', 'bar',     'pod')],
2956d68f1eSafresh1    ['foo/"baz boo"' => (undef, '"baz boo" in foo', 'foo', 'baz boo', 'pod')],
3056d68f1eSafresh1    ['/bar'          => (undef, '"bar"',            undef, 'bar',     'pod')],
3156d68f1eSafresh1    ['/"baz boo"'    => (undef, '"baz boo"',        undef, 'baz boo', 'pod')],
32*e0680481Safresh1    ['/baz boo'      => (undef, '"baz boo"',        undef, 'baz boo', 'pod')],
3356d68f1eSafresh1    [
3456d68f1eSafresh1        'foo bar/baz boo' =>
35*e0680481Safresh1          (undef, '"baz boo" in foo bar', 'foo bar', 'baz boo', 'pod'),
3656d68f1eSafresh1    ],
3756d68f1eSafresh1    [
3856d68f1eSafresh1        'foo bar  /  baz boo' =>
39*e0680481Safresh1          (undef, '"baz boo" in foo bar', 'foo bar', 'baz boo', 'pod'),
4056d68f1eSafresh1    ],
4156d68f1eSafresh1    [
4256d68f1eSafresh1        "foo\nbar\nbaz\n/\nboo" =>
43*e0680481Safresh1          (undef, '"boo" in foo bar baz', 'foo bar baz', 'boo', 'pod'),
4456d68f1eSafresh1    ],
4556d68f1eSafresh1    ['anchor|name/section' => qw(anchor anchor name section pod)],
4656d68f1eSafresh1    ['"boo var baz"' => (undef, '"boo var baz"', undef, 'boo var baz', 'pod')],
4756d68f1eSafresh1    ['bar baz'       => (undef, '"bar baz"', undef, 'bar baz', 'pod')],
4856d68f1eSafresh1    [
4956d68f1eSafresh1        '"boo bar baz / baz boo"' => (
5056d68f1eSafresh1            undef, '"boo bar baz / baz boo"',
5156d68f1eSafresh1            undef, 'boo bar baz / baz boo',
5256d68f1eSafresh1            'pod',
53*e0680481Safresh1        ),
5456d68f1eSafresh1    ],
5556d68f1eSafresh1    ['fooZ<>bar' => (undef, 'fooZ<>bar', 'fooZ<>bar', undef, 'pod')],
5656d68f1eSafresh1    [
5756d68f1eSafresh1        'Testing I<italics>|foo/bar' =>
58*e0680481Safresh1          ('Testing I<italics>', 'Testing I<italics>', 'foo', 'bar', 'pod'),
5956d68f1eSafresh1    ],
6056d68f1eSafresh1    [
6156d68f1eSafresh1        'foo/I<Italic> text' =>
62*e0680481Safresh1          (undef, '"I<Italic> text" in foo', 'foo', 'I<Italic> text', 'pod'),
6356d68f1eSafresh1    ],
6456d68f1eSafresh1    [
6556d68f1eSafresh1        'fooE<verbar>barZ<>/Section C<with> I<B<other> markup' => (
6656d68f1eSafresh1            undef,
6756d68f1eSafresh1            '"Section C<with> I<B<other> markup" in fooE<verbar>barZ<>',
6856d68f1eSafresh1            'fooE<verbar>barZ<>',
6956d68f1eSafresh1            'Section C<with> I<B<other> markup',
7056d68f1eSafresh1            'pod',
71*e0680481Safresh1        ),
7256d68f1eSafresh1    ],
7356d68f1eSafresh1    [
7456d68f1eSafresh1        'Nested L<http://www.perl.org/>|fooE<sol>bar' => (
7556d68f1eSafresh1            'Nested L<http://www.perl.org/>',
7656d68f1eSafresh1            'Nested L<http://www.perl.org/>',
7756d68f1eSafresh1            'fooE<sol>bar', undef, 'pod',
78*e0680481Safresh1        ),
7956d68f1eSafresh1    ],
8056d68f1eSafresh1    ['ls(1)' => (undef, 'ls(1)', 'ls(1)', undef, 'man')],
8156d68f1eSafresh1    [
8256d68f1eSafresh1        '  perlfunc(1)/open  ' =>
83*e0680481Safresh1          (undef, '"open" in perlfunc(1)', 'perlfunc(1)', 'open', 'man'),
8456d68f1eSafresh1    ],
8556d68f1eSafresh1    [
8656d68f1eSafresh1        'some manual page|perl(1)' =>
87*e0680481Safresh1          ('some manual page', 'some manual page', 'perl(1)', undef, 'man'),
8856d68f1eSafresh1    ],
8956d68f1eSafresh1    [
9056d68f1eSafresh1        'http://www.perl.org/' => (
9156d68f1eSafresh1            undef, 'http://www.perl.org/', 'http://www.perl.org/', undef,
9256d68f1eSafresh1            'url',
93*e0680481Safresh1        ),
9456d68f1eSafresh1    ],
9556d68f1eSafresh1    [
9656d68f1eSafresh1        'news:yld72axzc8.fsf@windlord.stanford.edu' => (
9756d68f1eSafresh1            undef,
9856d68f1eSafresh1            'news:yld72axzc8.fsf@windlord.stanford.edu',
9956d68f1eSafresh1            'news:yld72axzc8.fsf@windlord.stanford.edu',
10056d68f1eSafresh1            undef, 'url',
101*e0680481Safresh1        ),
10256d68f1eSafresh1    ],
10356d68f1eSafresh1    [
10456d68f1eSafresh1        'link|http://www.perl.org/' =>
105*e0680481Safresh1          ('link', 'link', 'http://www.perl.org/', undef, 'url'),
10656d68f1eSafresh1    ],
10756d68f1eSafresh1    [
10856d68f1eSafresh1        '0|http://www.perl.org/' =>
109*e0680481Safresh1          ('0', '0', 'http://www.perl.org/', undef, 'url'),
11056d68f1eSafresh1    ],
11156d68f1eSafresh1    ['0|Pod::Parser' => ('0', '0', 'Pod::Parser', undef, 'pod')],
112b8851fccSafresh1);
113*e0680481Safresh1#>>>
114b8851fccSafresh1
11556d68f1eSafresh1# Run all of the tests.
11656d68f1eSafresh1for my $test (@TESTS) {
11756d68f1eSafresh1    my ($link, @expected) = @$test;
118b8851fccSafresh1    my @results = parselink($link);
119b8851fccSafresh1    my $pretty = $link;
12056d68f1eSafresh1    $pretty =~ s{\n}{\\n}xmsg;
121b8851fccSafresh1    is_deeply(\@results, \@expected, $pretty);
122b8851fccSafresh1}
123