/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. */ package org.apache.harmony.tests.java.util; import java.util.UUID; import org.apache.harmony.testframework.serialization.SerializationTest; import junit.framework.TestCase; public class UUIDTest extends TestCase { /** * @see UUID#UUID(long, long) */ public void test_ConstructorJJ() { UUID uuid = new UUID(0xf81d4fae7dec11d0L, 0xa76500a0c91e6bf6L); assertEquals(2, uuid.variant()); assertEquals(1, uuid.version()); assertEquals(0x1d07decf81d4faeL, uuid.timestamp()); assertEquals(130742845922168750L, uuid.timestamp()); assertEquals(0x2765, uuid.clockSequence()); assertEquals(0xA0C91E6BF6L, uuid.node()); } /** * @see UUID#getLeastSignificantBits() */ public void test_getLeastSignificantBits() { UUID uuid = new UUID(0, 0); assertEquals(0, uuid.getLeastSignificantBits()); uuid = new UUID(0, Long.MIN_VALUE); assertEquals(Long.MIN_VALUE, uuid.getLeastSignificantBits()); uuid = new UUID(0, Long.MAX_VALUE); assertEquals(Long.MAX_VALUE, uuid.getLeastSignificantBits()); } /** * @see UUID#getMostSignificantBits() */ public void test_getMostSignificantBits() { UUID uuid = new UUID(0, 0); assertEquals(0, uuid.getMostSignificantBits()); uuid = new UUID(Long.MIN_VALUE, 0); assertEquals(Long.MIN_VALUE, uuid.getMostSignificantBits()); uuid = new UUID(Long.MAX_VALUE, 0); assertEquals(Long.MAX_VALUE, uuid.getMostSignificantBits()); } /** * @see UUID#version() */ public void test_version() { UUID uuid = new UUID(0, 0); assertEquals(0, uuid.version()); uuid = new UUID(0x0000000000001000L, 0); assertEquals(1, uuid.version()); uuid = new UUID(0x0000000000002000L, 0); assertEquals(2, uuid.version()); uuid = new UUID(0x0000000000003000L, 0); assertEquals(3, uuid.version()); uuid = new UUID(0x0000000000004000L, 0); assertEquals(4, uuid.version()); uuid = new UUID(0x0000000000005000L, 0); assertEquals(5, uuid.version()); } /** * @see UUID#variant() */ public void test_variant() { UUID uuid = new UUID(0, 0x0000000000000000L); assertEquals(0, uuid.variant()); uuid = new UUID(0, 0x7000000000000000L); assertEquals(0, uuid.variant()); uuid = new UUID(0, 0x3000000000000000L); assertEquals(0, uuid.variant()); uuid = new UUID(0, 0x1000000000000000L); assertEquals(0, uuid.variant()); uuid = new UUID(0, 0x8000000000000000L); assertEquals(2, uuid.variant()); uuid = new UUID(0, 0xB000000000000000L); assertEquals(2, uuid.variant()); uuid = new UUID(0, 0xA000000000000000L); assertEquals(2, uuid.variant()); uuid = new UUID(0, 0x9000000000000000L); assertEquals(2, uuid.variant()); uuid = new UUID(0, 0xC000000000000000L); assertEquals(6, uuid.variant()); uuid = new UUID(0, 0xD000000000000000L); assertEquals(6, uuid.variant()); uuid = new UUID(0, 0xE000000000000000L); assertEquals(7, uuid.variant()); uuid = new UUID(0, 0xF000000000000000L); assertEquals(7, uuid.variant()); } /** * @see UUID#timestamp() */ public void test_timestamp() { UUID uuid = new UUID(0x0000000000001000L, 0x8000000000000000L); assertEquals(0x0, uuid.timestamp()); uuid = new UUID(0x7777777755551333L, 0x8000000000000000L); assertEquals(0x333555577777777L, uuid.timestamp()); uuid = new UUID(0x0000000000000000L, 0x8000000000000000L); try { uuid.timestamp(); fail("No UnsupportedOperationException"); } catch (UnsupportedOperationException e) {} uuid = new UUID(0x0000000000002000L, 0x8000000000000000L); try { uuid.timestamp(); fail("No UnsupportedOperationException"); } catch (UnsupportedOperationException e) {} } /** * @see UUID#clockSequence() */ public void test_clockSequence() { UUID uuid = new UUID(0x0000000000001000L, 0x8000000000000000L); assertEquals(0x0, uuid.clockSequence()); uuid = new UUID(0x0000000000001000L, 0x8FFF000000000000L); assertEquals(0x0FFF, uuid.clockSequence()); uuid = new UUID(0x0000000000001000L, 0xBFFF000000000000L); assertEquals(0x3FFF, uuid.clockSequence()); uuid = new UUID(0x0000000000000000L, 0x8000000000000000L); try { uuid.clockSequence(); fail("No UnsupportedOperationException"); } catch (UnsupportedOperationException e) {} uuid = new UUID(0x0000000000002000L, 0x8000000000000000L); try { uuid.clockSequence(); fail("No UnsupportedOperationException"); } catch (UnsupportedOperationException e) {} } /** * @see UUID#node() */ public void test_node() { UUID uuid = new UUID(0x0000000000001000L, 0x8000000000000000L); assertEquals(0x0, uuid.node()); uuid = new UUID(0x0000000000001000L, 0x8000FFFFFFFFFFFFL); assertEquals(0xFFFFFFFFFFFFL, uuid.node()); uuid = new UUID(0x0000000000000000L, 0x8000000000000000L); try { uuid.node(); fail("No UnsupportedOperationException"); } catch (UnsupportedOperationException e) {} uuid = new UUID(0x0000000000002000L, 0x8000000000000000L); try { uuid.node(); fail("No UnsupportedOperationException"); } catch (UnsupportedOperationException e) {} } /** * @see UUID#compareTo(UUID) */ public void test_compareTo() { UUID uuid1 = new UUID(0, 0); assertEquals(0, uuid1.compareTo(uuid1)); UUID uuid2 = new UUID(1, 0); assertEquals(-1, uuid1.compareTo(uuid2)); assertEquals(1, uuid2.compareTo(uuid1)); uuid2 = new UUID(0, 1); assertEquals(-1, uuid1.compareTo(uuid2)); assertEquals(1, uuid2.compareTo(uuid1)); } /** * @see UUID#hashCode() */ public void test_hashCode() { UUID uuid = new UUID(0, 0); assertEquals(0, uuid.hashCode()); uuid = new UUID(123, 123); UUID uuidClone = new UUID(123, 123); assertEquals(uuid.hashCode(), uuidClone.hashCode()); } /** * @see UUID#equals(Object) */ public void test_equalsObject() { UUID uuid1 = new UUID(0, 0); assertEquals(uuid1, uuid1); assertFalse(uuid1.equals(null)); assertFalse(uuid1.equals("NOT A UUID")); UUID uuid2 = new UUID(0, 0); assertEquals(uuid1, uuid2); assertEquals(uuid2, uuid1); uuid1 = new UUID(0xf81d4fae7dec11d0L, 0xa76500a0c91e6bf6L); uuid2 = new UUID(0xf81d4fae7dec11d0L, 0xa76500a0c91e6bf6L); assertEquals(uuid1, uuid2); assertEquals(uuid2, uuid1); uuid2 = new UUID(0xf81d4fae7dec11d0L, 0xa76500a0c91e6bf7L); assertFalse(uuid1.equals(uuid2)); assertFalse(uuid2.equals(uuid1)); } /** * @see UUID#toString() */ public void test_toString() { UUID uuid = new UUID(0xf81d4fae7dec11d0L, 0xa76500a0c91e6bf6L); String actual = uuid.toString(); assertEquals("f81d4fae-7dec-11d0-a765-00a0c91e6bf6", actual); uuid = new UUID(0x0000000000001000L, 0x8000000000000000L); actual = uuid.toString(); assertEquals("00000000-0000-1000-8000-000000000000", actual); } /** * @tests serialization/deserialization. */ public void testSerializationSelf() throws Exception { SerializationTest.verifySelf(new UUID(0xf81d4fae7dec11d0L, 0xa76500a0c91e6bf6L)); } /** * @tests serialization/deserialization compatibility with RI. */ public void testSerializationCompatibility() throws Exception { SerializationTest.verifyGolden(this, new UUID(0xf81d4fae7dec11d0L, 0xa76500a0c91e6bf6L)); } /** * @see UUID#randomUUID() */ public void test_randomUUID() { UUID uuid = UUID.randomUUID(); assertEquals(2, uuid.variant()); assertEquals(4, uuid.version()); } /** * @see UUID#nameUUIDFromBytes(byte[]) */ public void test_nameUUIDFromBytes() throws Exception { byte[] name = { (byte) 0x6b, (byte) 0xa7, (byte) 0xb8, (byte) 0x11, (byte) 0x9d, (byte) 0xad, (byte) 0x11, (byte) 0xd1, (byte) 0x80, (byte) 0xb4, (byte) 0x00, (byte) 0xc0, (byte) 0x4f, (byte) 0xd4, (byte) 0x30, (byte) 0xc8 }; UUID uuid = UUID.nameUUIDFromBytes(name); assertEquals(2, uuid.variant()); assertEquals(3, uuid.version()); assertEquals(0xaff565bc2f771745L, uuid.getLeastSignificantBits()); assertEquals(0x14cdb9b4de013faaL, uuid.getMostSignificantBits()); uuid = UUID.nameUUIDFromBytes(new byte[0]); assertEquals(2, uuid.variant()); assertEquals(3, uuid.version()); assertEquals(0xa9800998ecf8427eL, uuid.getLeastSignificantBits()); assertEquals(0xd41d8cd98f003204L, uuid.getMostSignificantBits()); try { UUID.nameUUIDFromBytes(null); fail("No NPE"); } catch (NullPointerException e) {} } /** * @see UUID#fromString(String) */ public void test_fromString() { UUID actual = UUID.fromString("f81d4fae-7dec-11d0-a765-00a0c91e6bf6"); UUID expected = new UUID(0xf81d4fae7dec11d0L, 0xa76500a0c91e6bf6L); assertEquals(expected, actual); assertEquals(2, actual.variant()); assertEquals(1, actual.version()); assertEquals(130742845922168750L, actual.timestamp()); assertEquals(10085, actual.clockSequence()); assertEquals(690568981494L, actual.node()); actual = UUID.fromString("00000000-0000-1000-8000-000000000000"); expected = new UUID(0x0000000000001000L, 0x8000000000000000L); assertEquals(expected, actual); assertEquals(2, actual.variant()); assertEquals(1, actual.version()); assertEquals(0L, actual.timestamp()); assertEquals(0, actual.clockSequence()); assertEquals(0L, actual.node()); try { UUID.fromString(null); fail("No NPE"); } catch (NullPointerException e) {} try { UUID.fromString(""); fail("No IAE"); } catch (IllegalArgumentException e) {} try { UUID.fromString("f81d4fae_7dec-11d0-a765-00a0c91e6bf6"); fail("No IAE"); } catch (IllegalArgumentException e) {} try { UUID.fromString("f81d4fae-7dec_11d0-a765-00a0c91e6bf6"); fail("No IAE"); } catch (IllegalArgumentException e) {} try { UUID.fromString("f81d4fae-7dec-11d0_a765-00a0c91e6bf6"); fail("No IAE"); } catch (IllegalArgumentException e) {} try { UUID.fromString("f81d4fae-7dec-11d0-a765_00a0c91e6bf6"); fail("No IAE"); } catch (IllegalArgumentException e) {} } /** * @tests java.util.UUID#fromString(String) */ public void test_fromString_LString_Exception() { UUID uuid = UUID.fromString("0-0-0-0-0"); try { uuid = UUID.fromString("0-0-0-0-"); fail("should throw IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } try { uuid = UUID.fromString("-0-0-0-0-0"); fail("should throw IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } try { uuid = UUID.fromString("-0-0-0-0"); fail("should throw IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } try { uuid = UUID.fromString("-0-0-0-"); fail("should throw IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } try { uuid = UUID.fromString("0--0-0-0"); fail("should throw IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } try { uuid = UUID.fromString("0-0-0-0-"); fail("should throw IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } try { uuid = UUID.fromString("-1-0-0-0-0"); fail("should throw IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } uuid = UUID.fromString("123456789-0-0-0-0"); assertEquals(0x2345678900000000L, uuid.getMostSignificantBits()); assertEquals(0x0L, uuid.getLeastSignificantBits()); uuid = UUID.fromString("111123456789-0-0-0-0"); assertEquals(0x2345678900000000L, uuid.getMostSignificantBits()); assertEquals(0x0L, uuid.getLeastSignificantBits()); uuid = UUID.fromString("7fffffffffffffff-0-0-0-0"); assertEquals(0xffffffff00000000L, uuid.getMostSignificantBits()); assertEquals(0x0L, uuid.getLeastSignificantBits()); try { uuid = UUID.fromString("8000000000000000-0-0-0-0"); fail("should throw NumberFormatException"); } catch (NumberFormatException e) { // expected } uuid = UUID .fromString("7fffffffffffffff-7fffffffffffffff-7fffffffffffffff-0-0"); assertEquals(0xffffffffffffffffL, uuid.getMostSignificantBits()); assertEquals(0x0L, uuid.getLeastSignificantBits()); uuid = UUID.fromString("0-0-0-7fffffffffffffff-7fffffffffffffff"); assertEquals(0x0L, uuid.getMostSignificantBits()); assertEquals(0xffffffffffffffffL, uuid.getLeastSignificantBits()); try { uuid = UUID.fromString("0-0-0-8000000000000000-0"); fail("should throw NumberFormatException"); } catch (NumberFormatException e) { // expected } try { uuid = UUID.fromString("0-0-0-0-8000000000000000"); fail("should throw NumberFormatException"); } catch (NumberFormatException e) { // expected } } }