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