12daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#!/usr/bin/perl -w
22daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#
32daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# Copyright (C) 2011 Research In Motion Limited. All rights reserved.
42daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#
52daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# This library is free software; you can redistribute it and/or
62daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# modify it under the terms of the GNU Lesser General Public
72daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# License as published by the Free Software Foundation; either
82daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# version 2.1 of the License, or (at your option) any later version.
92daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#
102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# This library is distributed in the hope that it will be useful,
112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# but WITHOUT ANY WARRANTY; without even the implied warranty of
122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# Lesser General Public License for more details.
142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#
152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# You should have received a copy of the GNU Lesser General Public
162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# License along with this library; if not, write to the Free Software
172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# Unit tests of VCSUtils::parseFirstEOL().
202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
212daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochuse strict;
222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochuse warnings;
232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochuse Test::Simple tests => 7;
252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochuse VCSUtils;
262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochmy $title;
282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# New test
302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch$title = "parseFirstEOL: Empty string.";
312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochok(!defined(firstEOLInString("")), $title);
322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# New test
342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch$title = "parseFirstEOL: Line without a line ending character";
352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochok(!defined(firstEOLInString("This line doesn't have a line ending character.")), $title);
362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# New test
382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch$title = "parseFirstEOL: Line with Windows line ending.";
392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochok(firstEOLInString("This line ends with a Windows line ending.\r\n") eq "\r\n", $title);
402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# New test
422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch$title = "parseFirstEOL: Line with Unix line ending.";
432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochok(firstEOLInString("This line ends with a Unix line ending.\n") eq "\n", $title);
442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# New test
462daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch$title = "parseFirstEOL: Line with Mac line ending.";
472daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochok(firstEOLInString("This line ends with a Mac line ending.\r") eq "\r", $title);
482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# New test
502daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch$title = "parseFirstEOL: Line with Mac line ending followed by line without a line ending.";
512daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochok(firstEOLInString("This line ends with a Mac line ending.\rThis line doesn't have a line ending.") eq "\r", $title);
522daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
532daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch# New test
542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch$title = "parseFirstEOL: Line with a mix of line endings.";
552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochok(firstEOLInString("This line contains a mix of line endings.\r\n\r\n\r\r\n\n\n\n") eq "\r\n", $title);
562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochsub firstEOLInString
582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    my ($string) = @_;
602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    my $fileHandle;
612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    open($fileHandle, "<", \$string);
622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    return parseFirstEOL($fileHandle);
632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
64