/*
* Copyright (c) 2013-2016 Chris Newland.
* Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD
* Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki
*/
package org.adoptopenjdk.jitwatch.test;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.*;
import static org.junit.Assert.*;
import java.util.HashMap;
import java.util.Map;
import org.adoptopenjdk.jitwatch.util.StringUtil;
import org.junit.Test;
public class TestStringUtil
{
@Test
public void testFormatTimestamp()
{
assertEquals("00:00:00", StringUtil.formatTimestamp(0, false));
assertEquals("00:00:00.000", StringUtil.formatTimestamp(0, true));
assertEquals("00:00:04", StringUtil.formatTimestamp(4000, false));
assertEquals("00:00:04.567", StringUtil.formatTimestamp(4567, true));
assertEquals("00:01:00", StringUtil.formatTimestamp(60 * 1000 + 123, false));
assertEquals("00:01:00.123", StringUtil.formatTimestamp(60 * 1000 + 123, true));
assertEquals("01:00:00", StringUtil.formatTimestamp(60 * 60 * 1000 + 123, false));
assertEquals("01:00:00.123", StringUtil.formatTimestamp(60 * 60 * 1000 + 123, true));
assertEquals("1d 01:00:00.123", StringUtil.formatTimestamp(25*60 * 60 * 1000 + 123, true));
}
@Test
public void testGetLineAttributes()
{
Map<String, Map<String, String>> expected = new HashMap<>();
String line1 = "foo='1' bar='2' baz='3'";
Map<String, String> map1 = new HashMap<>();
map1.put("foo", "1");
map1.put("bar", "2");
map1.put("baz", "3");
String line2 = S_EMPTY;
Map<String, String> map2 = new HashMap<>();
expected.put(line1, map1);
expected.put(line2, map2);
for (Map.Entry<String, Map<String, String>> entry : expected.entrySet())
{
Map<String, String> result = StringUtil.attributeStringToMap(entry.getKey());
assertEquals(entry.getValue().size(), result.size());
for (String key : entry.getValue().keySet())
{
assertTrue(result.containsKey(key));
assertEquals(entry.getValue().get(key), result.get(key));
}
}
}
@Test
public void testGetAttributesRegression()
{
String line = "<task compile_id='21' method='java/util/Properties loadConvert ([CII[C)Ljava/lang/String;' bytes='505' count='10000' backedge_count='5668' iicount='108' stamp='6.801'>";
Map<String, String> result = StringUtil.attributeStringToMap(line);
assertEquals("21", result.get("compile_id"));
assertEquals("java/util/Properties loadConvert ([CII[C)Ljava/lang/String;", result.get("method"));
assertEquals("505", result.get("bytes"));
assertEquals("10000", result.get("count"));
assertEquals("5668", result.get("backedge_count"));
assertEquals("108", result.get("iicount"));
assertEquals("6.801", result.get("stamp"));
}
}