The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#copy-mode test with c/c++ comments
#

use strict;
use Test::More tests => 12;
BEGIN { use_ok('Text::Tokenizer') };

my($tokid, $fh);

#create tokenizer
ok(open($fh, $0),	'open() call');
ok(($tokid = tokenizer_new($fh)), 'Tokenizer create');
ok(tokenizer_exists($tokid), 'Tokenizer exists');
ok(tokenizer_switch($tokid), 'Tokenizer switch');
ok(tokenizer_options(TOK_OPT_NOUNESCAPE|TOK_OPT_PASS_COMMENT|TOK_OPT_C_COMMENT|TOK_OPT_CC_COMMENT), 'Tokenizer options');
ok(($tokid = tokenizer_new($fh)), 'Tokenizer create 2');
ok(tokenizer_switch($tokid), 'Tokenizer switch');

#get size of file via tokenizer
my ($str, $tok, $lin, $err, $errlin, $file_len);
$file_len	= 0;
my $go		= 1;

while($go == 1)
{
	($str, $tok, $lin, $err, $errlin)	= tokenizer_scan();
	last if($tok == TOK_ERROR || $tok == TOK_EOF);

	if($tok == TOK_TEXT)		{ 	}
	elsif($tok == TOK_BLANK)	{ 	}
	elsif($tok == TOK_DQUOTE)	{ $str	= "\"$str\"";	}
	elsif($tok == TOK_SQUOTE)	{ $str	= "\'$str\'";	}
	elsif($tok == TOK_SIQUOTE)	{ $str	= "\`$str\'";	}
	elsif($tok == TOK_IQUOTE)	{ $str	= "\`$str\`";	}
	elsif($tok == TOK_EOL)		{	}
	elsif($tok == TOK_COMMENT)	{ $str  = '#'.$str;	}
	elsif($tok == TOK_C_COMMENT)	{ $str  = "/*$str*/";	}
	elsif($tok == TOK_CC_COMMENT)	{ $str  = "//$str";	}
	elsif($tok == TOK_UNDEF)
		{ last;		}
	else	{ last;	};

	#print STDERR $str;
	$file_len	+= length($str);
}
ok( $tok == TOK_EOF,		'File read');

ok(tokenizer_delete($tokid),	'Tokenizer delete');

#stat file size
my (@sti);
@sti	= stat($fh);
ok( defined($sti[7]), 'stat() call');
ok( $file_len == $sti[7] , 'Size compare' );

__END__

SOME TEST CASES:

//wsdasd
/*sfd
ad
asd
*/ /* adasd */