|  | // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  | package com.android.tools.r8.utils; | 
|  |  | 
|  | import static org.junit.Assert.assertEquals; | 
|  | import static org.junit.Assert.assertSame; | 
|  |  | 
|  | import com.android.tools.r8.utils.StringUtils.BraceType; | 
|  | import com.google.common.base.Strings; | 
|  | import com.google.common.collect.ImmutableList; | 
|  | import java.util.List; | 
|  | import org.junit.Test; | 
|  |  | 
|  | public class StringUtilsTest { | 
|  |  | 
|  | @Test | 
|  | public void splitLines() { | 
|  | assertListEquals(ImmutableList.of(), StringUtils.splitLines("")); | 
|  | assertListEquals(ImmutableList.of(""), StringUtils.splitLines("\n")); | 
|  | assertListEquals(ImmutableList.of("", "", ""), StringUtils.splitLines("\n\n\n")); | 
|  | assertListEquals(ImmutableList.of(" "," "), StringUtils.splitLines(" \n ")); | 
|  | assertListEquals(ImmutableList.of("a","b"), StringUtils.splitLines("a\nb")); | 
|  |  | 
|  | assertListEquals(ImmutableList.of("\r\r\r"), StringUtils.splitLines("\r\r\r")); | 
|  | assertListEquals(ImmutableList.of("", "\r"), StringUtils.splitLines("\r\n\r")); | 
|  | assertListEquals(ImmutableList.of("", "", "", "\r"), StringUtils.splitLines("\r\n\r\n\r\n\r")); | 
|  | assertListEquals(ImmutableList.of("\r ", "\r \r"), StringUtils.splitLines("\r \r\n\r \r")); | 
|  | assertListEquals(ImmutableList.of("\ra", "\rb\r"), StringUtils.splitLines("\ra\r\n\rb\r")); | 
|  |  | 
|  | assertListEquals(ImmutableList.of("\ra\r\rb\r"), StringUtils.splitLines("\ra\r\rb\r")); | 
|  | } | 
|  |  | 
|  | private void assertListEquals(List<String> xs, List<String> ys) { | 
|  | assertEquals( | 
|  | StringUtils.join(xs, ", ", BraceType.SQUARE, s -> '"' + StringUtils.toASCIIString(s) + '"'), | 
|  | StringUtils.join(ys, ", ", BraceType.SQUARE, s -> '"' + StringUtils.toASCIIString(s) + '"') | 
|  | ); | 
|  | } | 
|  |  | 
|  | @Test | 
|  | public void testTrim() { | 
|  | assertEquals("", StringUtils.trim("")); | 
|  | String empty = ""; | 
|  | assertSame(empty, StringUtils.trim(empty)); | 
|  | assertSame(Strings.repeat("A", 1), StringUtils.trim(Strings.repeat("A", 1))); | 
|  | String oneChar = "A"; | 
|  | assertSame(oneChar, StringUtils.trim(oneChar)); | 
|  | assertEquals(Strings.repeat("A", 2), Strings.repeat("A", 2)); | 
|  | String twoChar = "AB"; | 
|  | assertSame(twoChar, StringUtils.trim(twoChar)); | 
|  | assertEquals(Strings.repeat("A", 10), Strings.repeat("A", 10)); | 
|  | String manyChar = Strings.repeat("A", 10); | 
|  | assertSame(manyChar, StringUtils.trim(manyChar)); | 
|  | } | 
|  |  | 
|  | @Test | 
|  | public void testTrimWithWhitespace() { | 
|  | List<String> ws = | 
|  | ImmutableList.of( | 
|  | "", | 
|  | " ", | 
|  | "  ", | 
|  | "\t ", | 
|  | " \t", | 
|  | "" + StringUtils.BOM, | 
|  | StringUtils.BOM + " " + StringUtils.BOM); | 
|  | List<String> strings = ImmutableList.of("", "A", "AB", Strings.repeat("A", 10)); | 
|  | for (String before : ws) { | 
|  | for (String after : ws) { | 
|  | for (String string : strings) { | 
|  | assertEquals(string, StringUtils.trim(before + string + after)); | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | } |