Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Test::LongString(3)   User Contributed Perl Documentation  Test::LongString(3)

NAME
       Test::LongString	- tests	strings	for equality, with more	helpful
       failures

SYNOPSIS
	   use Test::More tests	=> 1;
	   use Test::LongString;
	   like_string(	$html, qr/(perl|cpan)\.org/ );

	   #	 Failed	test (html-test.t at line 12)
	   #	      got: "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Trans"...
	   #	   length: 58930
	   #	 doesn't match '(?-xism:(perl|cpan)\.org)'

DESCRIPTION
       This module provides some drop-in replacements for the string
       comparison functions of Test::More, but which are more suitable when
       you test	against	long strings.  If you've ever had to search for	text
       in a multi-line string like an HTML document, or	find specific items in
       binary data, this is the	module for you.

FUNCTIONS
   is_string( $string, $expected [, $label ] )
       "is_string()" is	equivalent to "Test::More::is()", but with more
       helpful diagnostics in case of failure.

       o   It doesn't print the	entire strings in the failure message.

       o   It reports the lengths of the strings that have been	compared.

       o   It reports the length of the	common prefix of the strings.

       o   It reports the line and column the strings started to differ	on.

       o   In the diagnostics, non-ASCII characters are	escaped	as "\x{xx}".

       For example:

	   is_string( $soliloquy, $juliet );

	   #	 Failed	test (soliloquy.t at line 15)
	   #	      got: "To be, or not to be: that is the question:\x{0a}Whether"...
	   #	   length: 1490
	   #	 expected: "O Romeo, Romeo,\x{0a}wherefore art thou Romeo?\x{0a}Deny thy"...
	   #	   length: 154
	   #	 strings begin to differ at char 1 (line 1 column 1)

   is_string_nows( $string, $expected [, $label	] )
       Like "is_string()", but removes whitespace (in the "\s" sense) from the
       arguments before	comparing them.

   like_string(	$string, qr/regex/ [, $label ] )
   unlike_string( $string, qr/regex/ [,	$label ] )
       "like_string()" and "unlike_string()" are replacements for
       "Test::More:like()" and "unlike()" that only print the beginning	of the
       received	string in the output.  Unfortunately, they can't print out the
       position	where the regex	failed to match.

	   like_string(	$soliloquy, qr/Romeo|Juliet|Mercutio|Tybalt/ );

	   #	 Failed	test (soliloquy.t at line 15)
	   #	      got: "To be, or not to be: that is the question:\x{0a}Whether"...
	   #	   length: 1490
	   #	 doesn't match '(?-xism:Romeo|Juliet|Mercutio|Tybalt)'

   contains_string( $string, $substring	[, $label ] )
       "contains_string()" searches for	$substring in $string.	It's the same
       as "like_string()", except that it's not	a regular expression search.

	   contains_string( $soliloquy,	"Romeo"	);

	   #	 Failed	test (soliloquy.t at line 10)
	   #	     searched: "To be, or not to be: that is the question:\x{0a}Whether"...
	   #   and can't find: "Romeo"

       As of version 0.12, "contains_string()" will also report	the Longest
       Common SubString	(LCSS) found in	$string	and, if	the LCSS is short
       enough, the surroundings	will also be shown under LCSS Context. This
       should help debug tests for really long strings like HTML output, so
       you'll get something like:

	  contains_string( $html, '<div	id="MainContent">' );
	  #   Failed test at t/foo.t line 10.
	  #	searched: "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0	Stric"...
	  #   can't find: "<div	id="MainContent">"
	  #	    LCSS: "ainContent""
	  # LCSS context: "dolor sit amet</span>\x{0a}<div id="mainContent" class="

       You can turn off	LCSS reporting by setting $Test::LongString::LCSS to
       0, or by	specifying an argument to "use":

	   use Test::LongString	lcss =>	0;

   lacks_string( $string, $substring [,	$label ] )
       "lacks_string()"	makes sure that	$substring does	NOT exist in $string.
       It's the	same as	"like_string()", except	that it's not a	regular
       expression search.

	   lacks_string( $soliloquy, "slings" );

	   #	 Failed	test (soliloquy.t at line 10)
	   #	     searched: "To be, or not to be: that is the question:\x{0a}Whether"...
	   #	    and	found: "slings"
	   #	  at position: 147 (line 3 column 4)

CONTROLLING OUTPUT
       By default, only	the first 50 characters	of the compared	strings	are
       shown in	the failure message.  This value is in $Test::LongString::Max,
       and can be set at run-time.

       You can also set	it by specifying an argument to	"use":

	   use Test::LongString	max => 100;

       When the	compared strings begin to differ after a large prefix,
       Test::LongString	will not print them from the beginning,	but will start
       at the middle, more precisely at	$Test::LongString::Context characters
       before the first	difference. By default this value is 10	characters. If
       you want	Test::LongString to always print the beginning of compared
       strings no matter where they differ, undefine
       $Test::LongString::Context.

       When computing line numbers this	module uses "\n" to count line
       endings.	This may not be	appropriate for	strings	on your	platform, and
       can be overridden by setting the	$Test::LongString::EOL variable	to a
       suitable	regular	expression (either a reference to a regular expression
       or a string that	can be interpolated into a regular expression.)

       You can also set	it by specifying an argument to	"use":

	   use Test::LongString	eol => "\x{0a}\x{0c}";

AUTHOR
       Written by Rafael Garcia-Suarez.	Thanks to Mark Fowler (and to Joss
       Whedon) for the inspirational Acme::Test::Buffy.	Thanks to Andy Lester
       for lots	of patches.

       This program is free software; you may redistribute it and/or modify it
       under the same terms as Perl itself.

       A git repository	for this module	is available at

	   git://github.com/rgs/Test-LongString.git

       and the project page at

	   http://github.com/rgs/Test-LongString

SEE ALSO
       Test::Builder, Test::Builder::Tester, Test::More.

perl v5.32.1			  2014-11-06		   Test::LongString(3)

NAME | SYNOPSIS | DESCRIPTION | FUNCTIONS | CONTROLLING OUTPUT | AUTHOR | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Test::LongString&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help