/** * Oshi (https://github.com/oshi/oshi) * * Copyright (c) 2010 - 2017 The Oshi Project Team * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Maintainers: * dblock[at]dblock[dot]org * widdis[at]gmail[dot]com * enrico.bianchi[at]gmail[dot]com * * Contributors: * https://github.com/oshi/oshi/graphs/contributors */ package oshi.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Arrays; import org.junit.Test; /** * The Class ParseUtilTest. */ public class ParseUtilTest { /** * Test parse hertz. */ @Test public void testParseHertz() { assertEquals(-1L, ParseUtil.parseHertz("OneHz")); assertEquals(-1L, ParseUtil.parseHertz("NotEvenAHertz")); assertEquals(Long.MAX_VALUE, ParseUtil.parseHertz("10000000000000000000 Hz")); assertEquals(1L, ParseUtil.parseHertz("1Hz")); assertEquals(500L, ParseUtil.parseHertz("500 Hz")); assertEquals(1000L, ParseUtil.parseHertz("1kHz")); assertEquals(1000000L, ParseUtil.parseHertz("1MHz")); assertEquals(1000000000L, ParseUtil.parseHertz("1GHz")); assertEquals(1500000000L, ParseUtil.parseHertz("1.5GHz")); assertEquals(1000000000000L, ParseUtil.parseHertz("1THz")); } /** * Test parse string. */ @Test public void testParseLastInt() { assertEquals(-1, ParseUtil.parseLastInt("foo : bar", -1)); assertEquals(1, ParseUtil.parseLastInt("foo : 1", 0)); assertEquals(2, ParseUtil.parseLastInt("foo", 2)); } /** * Test parse string. */ @Test public void testParseLastString() { assertEquals("bar", ParseUtil.parseLastString("foo : bar")); assertEquals("foo", ParseUtil.parseLastString("foo")); assertEquals("", ParseUtil.parseLastString("")); } /** * Test hex string to byte array. */ @Test public void testHexStringToByteArray() { byte[] temp = { (byte) 0x12, (byte) 0xaf }; assertTrue(Arrays.equals(temp, ParseUtil.hexStringToByteArray("12af"))); temp = new byte[0]; assertTrue(Arrays.equals(temp, ParseUtil.hexStringToByteArray("expected error abcde"))); assertTrue(Arrays.equals(temp, ParseUtil.hexStringToByteArray("abcde"))); } /** * Test string to byte array. */ @Test public void testStringToByteArray() { byte[] temp = { (byte) '1', (byte) '2', (byte) 'a', (byte) 'f', (byte) 0 }; assertTrue(Arrays.equals(temp, ParseUtil.stringToByteArray("12af", 5))); } /** * Test long to byte array. */ @Test public void testLongToByteArray() { byte[] temp = { (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78, (byte) 0 }; assertTrue(Arrays.equals(temp, ParseUtil.longToByteArray(0x12345678, 4, 5))); } /** * Test string and byte array to long. */ @Test public void testStringAndByteArrayToLong() { byte[] temp = { (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e' }; long abcde = (long) temp[0] << 32 | temp[1] << 24 | temp[2] << 16 | temp[3] << 8 | temp[4]; // Test string assertEquals(abcde, ParseUtil.strToLong("abcde", 5)); // Test byte array assertEquals(abcde, ParseUtil.byteArrayToLong(temp, 5)); } @Test(expected = IllegalArgumentException.class) public void testByteArrayToLongSizeTooBig() { ParseUtil.byteArrayToLong(new byte[10], 9); } @Test(expected = IllegalArgumentException.class) public void testByteArrayToLongSizeBigger() { ParseUtil.byteArrayToLong(new byte[7], 8); } /** * Test byte arry to float */ @Test public void testByteArrayToFloat() { byte[] temp = { (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78, (byte) 0x9a }; float f = (temp[0] << 22 | temp[1] << 14 | temp[2] << 6 | temp[3] >>> 2) + (float) (temp[3] & 0x3) / 0x4; assertEquals(f, ParseUtil.byteArrayToFloat(temp, 4, 2), Float.MIN_VALUE); f = 0x12345 + (float) 0x6 / 0x10; assertEquals(f, ParseUtil.byteArrayToFloat(temp, 3, 4), Float.MIN_VALUE); f = 0x123 + (float) 0x4 / 0x10; assertEquals(f, ParseUtil.byteArrayToFloat(temp, 2, 4), Float.MIN_VALUE); } /** * Test CIM date to long. */ @Test public void testCimDateTimeToDate() { assertEquals(1463149790782L, ParseUtil.cimDateTimeToMillis("20160513072950.782000-420")); assertEquals(0L, ParseUtil.cimDateTimeToMillis("20160513072950.782000")); assertEquals(0L, ParseUtil.cimDateTimeToMillis("20160513072950.782000-ABC")); assertEquals(0L, ParseUtil.cimDateTimeToMillis("NotAValidDateString00-000")); } /** * Test hex string to string */ @Test public void testHexStringToString() { assertEquals("ABC", ParseUtil.hexStringToString("414243")); assertEquals("ab00cd", ParseUtil.hexStringToString("ab00cd")); assertEquals("ab88cd", ParseUtil.hexStringToString("ab88cd")); assertEquals("notHex", ParseUtil.hexStringToString("notHex")); assertEquals("320", ParseUtil.hexStringToString("320")); assertEquals("0", ParseUtil.hexStringToString("0")); } /** * Test parse int */ @Test public void testParseIntOrDefault() { assertEquals(123, ParseUtil.parseIntOrDefault("123", 45)); assertEquals(45, ParseUtil.parseIntOrDefault("123X", 45)); } /** * Test parse long */ @Test public void testParseLongOrDefault() { assertEquals(123L, ParseUtil.parseLongOrDefault("123", 45L)); assertEquals(45L, ParseUtil.parseLongOrDefault("123L", 45L)); } /** * Test parse long */ @Test public void testParseUnsignedLongOrDefault() { assertEquals(9223372036854775807L, ParseUtil.parseUnsignedLongOrDefault("9223372036854775807", 123L)); assertEquals(-9223372036854775808L, ParseUtil.parseUnsignedLongOrDefault("9223372036854775808", 45L)); assertEquals(-1L, ParseUtil.parseUnsignedLongOrDefault("18446744073709551615", 123L)); assertEquals(0L, ParseUtil.parseUnsignedLongOrDefault("18446744073709551616", 45L)); assertEquals(123L, ParseUtil.parseUnsignedLongOrDefault("9223372036854775808L", 123L)); } /** * Test parse double */ @Test public void testParseDoubleOrDefault() { assertEquals(1.23d, ParseUtil.parseDoubleOrDefault("1.23", 4.5d), Double.MIN_VALUE); assertEquals(4.5d, ParseUtil.parseDoubleOrDefault("one.twentythree", 4.5d), Double.MIN_VALUE); } /** * Test parse DHMS */ @Test public void testParseDHMSOrDefault() { assertEquals(93784050L, ParseUtil.parseDHMSOrDefault("1-02:03:04.05", 0L)); assertEquals(93784000L, ParseUtil.parseDHMSOrDefault("1-02:03:04", 0L)); assertEquals(7384000L, ParseUtil.parseDHMSOrDefault("02:03:04", 0L)); assertEquals(184050L, ParseUtil.parseDHMSOrDefault("03:04.05", 0L)); assertEquals(184000L, ParseUtil.parseDHMSOrDefault("03:04", 0L)); assertEquals(0L, ParseUtil.parseDHMSOrDefault("04", 0L)); } /** * Test parse UUID */ @Test public void testParseUuidOrDefault() { assertEquals("123e4567-e89b-12d3-a456-426655440000", ParseUtil.parseUuidOrDefault("123e4567-e89b-12d3-a456-426655440000", "default")); assertEquals("123e4567-e89b-12d3-a456-426655440000", ParseUtil.parseUuidOrDefault("The UUID is 123E4567-E89B-12D3-A456-426655440000!", "default")); assertEquals("default", ParseUtil.parseUuidOrDefault("foo", "default")); } /** * Test parse SingleQuoteString */ @Test public void testGetSingleQuoteStringValue() { assertEquals("bar", ParseUtil.getSingleQuoteStringValue("foo = 'bar' (string)")); assertEquals("", ParseUtil.getSingleQuoteStringValue("foo = bar (string)")); } /** * Test parse FirstIntValue */ @Test public void testGetFirstIntValue() { assertEquals(42, ParseUtil.getFirstIntValue("foo = 42 (0x2a) (int)")); assertEquals(0, ParseUtil.getFirstIntValue("foo = 0x2a (int)")); assertEquals(42, ParseUtil.getFirstIntValue("42")); assertEquals(10, ParseUtil.getFirstIntValue("10.12.2")); } /** * Test parse NthIntValue */ @Test public void testGetNthIntValue() { assertEquals(2, ParseUtil.getNthIntValue("foo = 42 (0x2a) (int)", 3)); assertEquals(0, ParseUtil.getNthIntValue("foo = 0x2a (int)", 3)); assertEquals(12, ParseUtil.getNthIntValue("10.12.2", 2)); } }