/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* See LICENSE.txt included in this distribution for the specific
* language governing permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at LICENSE.txt.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
*/
package org.opensolaris.opengrok.util;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* Unit tests for the {@code StringUtils} class.
*
* @author Vladimir Kotal
*/
public class StringUtilsTest {
@Test
public void testValues() {
int i;
long[] values = {
0, 100, 1000, 1500, 64000, 124531, 3651782, 86400000, 86434349,
1075634299
};
String[] expected = {
"0", "100 ms", "1.0 seconds", "1.500 seconds", "0:01:04",
"0:02:04", "1:00:51", "1 day", "1 day 34.349 seconds",
"12 days 10:47:14"
};
for (i = 0; i < values.length; i++) {
assertEquals(expected[i], StringUtils.getReadableTime(values[i]));
}
}
@Test
public void testNthIndexOf() {
Object[][] tests = new Object[][]{
{"", "", -1},
{"", "", 0},
{"", "", 1},
{"", "", 2},
{"foo", "foo", 0},
{"foo", "foo", 1},
{"foo", "foo", 2},
{"foo", "foo", 3},
{"foo", "f", 0},
{"foo", "f", 1},
{"foo", "f", 2},
{"foo", "f", 3},
{"foo", "o", 0},
{"foo", "o", 1},
{"foo", "o", 2},
{"foo", "o", 3},
{"This is an example string", "a", 2},
{"This is an example string", "a", 3},
{"This is an example string", "i", 1},
{"This is an example string", "i", 2},
{"This is an example string", "i", 3},
{"This is an example string", "is", 1},
{"This is an example string", "is", 2},
{"aabbccddaabbccdd", "a", 1},
{"aabbccddaabbccdd", "a", 2},
{"aabbccddaabbccdd", "a", 3},
{"aabbccddaabbccdd", "a", 4},
{"aabbccddaabbccdd", "cd", 1},
{"aabbccddaabbccdd", "cd", 2},
{"aabbccddaabbccdd", "ccdd", 1},
{"aabbccddaabbccdd", "ccdd", 2},};
int[] indices = new int[]{
-1, -1, 0, -1,
-1, 0, -1, -1,
-1, 0, -1, -1,
-1, 1, 2, -1,
13, -1,
2, 5, 22,
2, 5,
0, 1, 8, 9,
5, 13,
4, 12
};
assertEquals(tests.length, indices.length);
for (int i = 0; i < tests.length; i++) {
int index = StringUtils.nthIndexOf((String) tests[i][0], (String) tests[i][1], (Integer) tests[i][2]);
assertEquals(String.format("%d-th occurrence of \"%s\" in \"%s\" should start at %d but started at %d",
new Object[]{tests[i][2], tests[i][1], tests[i][0], indices[i], index}),
index, indices[i]);
}
}
}