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