// Copyright 2013 The Closure Library Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS-IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview Unit tests for goog.string. */ goog.provide('goog.string.newlinesTest'); goog.require('goog.string.newlines'); goog.require('goog.testing.jsunit'); goog.setTestOnly('goog.string.newlinesTest'); // test for goog.string.splitLines function testSplitLines() { /** * @param {!Array} expected * @param {string} string * @param {boolean=} opt_keepNewlines */ function assertSplitLines(expected, string, opt_keepNewlines) { var keepNewlines = opt_keepNewlines || false; var lines = goog.string.newlines.splitLines(string, keepNewlines); assertElementsEquals(expected, lines); } // Test values borrowed from Python's splitlines. http://goo.gl/iwawx assertSplitLines(['abc', 'def', '', 'ghi'], 'abc\ndef\n\rghi'); assertSplitLines(['abc', 'def', '', 'ghi'], 'abc\ndef\n\r\nghi'); assertSplitLines(['abc', 'def', 'ghi'], 'abc\ndef\r\nghi'); assertSplitLines(['abc', 'def', 'ghi'], 'abc\ndef\r\nghi\n'); assertSplitLines(['abc', 'def', 'ghi', ''], 'abc\ndef\r\nghi\n\r'); assertSplitLines(['', 'abc', 'def', 'ghi', ''], '\nabc\ndef\r\nghi\n\r'); assertSplitLines(['', 'abc', 'def', 'ghi', ''], '\nabc\ndef\r\nghi\n\r'); assertSplitLines( ['\n', 'abc\n', 'def\r\n', 'ghi\n', '\r'], '\nabc\ndef\r\nghi\n\r', true); assertSplitLines(['', 'abc', 'def', 'ghi', ''], '\nabc\ndef\r\nghi\n\r'); assertSplitLines( ['\n', 'abc\n', 'def\r\n', 'ghi\n', '\r'], '\nabc\ndef\r\nghi\n\r', true); } function testGetLines() { var lines = goog.string.newlines.getLines('abc\ndef\n\rghi'); assertEquals(4, lines.length); assertEquals(0, lines[0].startLineIndex); assertEquals(3, lines[0].endContentIndex); assertEquals(4, lines[0].endLineIndex); assertEquals('abc', lines[0].getContent()); assertEquals('abc\n', lines[0].getFullLine()); assertEquals('\n', lines[0].getNewline()); assertEquals(4, lines[1].startLineIndex); assertEquals(7, lines[1].endContentIndex); assertEquals(8, lines[1].endLineIndex); assertEquals('def', lines[1].getContent()); assertEquals('def\n', lines[1].getFullLine()); assertEquals('\n', lines[1].getNewline()); assertEquals(8, lines[2].startLineIndex); assertEquals(8, lines[2].endContentIndex); assertEquals(9, lines[2].endLineIndex); assertEquals('', lines[2].getContent()); assertEquals('\r', lines[2].getFullLine()); assertEquals('\r', lines[2].getNewline()); assertEquals(9, lines[3].startLineIndex); assertEquals(12, lines[3].endContentIndex); assertEquals(12, lines[3].endLineIndex); assertEquals('ghi', lines[3].getContent()); assertEquals('ghi', lines[3].getFullLine()); assertEquals('', lines[3].getNewline()); }