/* JUG Java Uuid Generator
* UUIDPackageAccessTest.java
* Created on October 7, 2003, 7:56 PM
*
* Copyright (c) 2003 Eric Bie
*
* Licensed under the License specified in the file LICENSE which is
* included with the source code.
* You may not use this file except in compliance with the License.
*
* 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.safehaus.uuid;
import junit.framework.*;
import java.util.Arrays;
import org.safehaus.uuid.UUID;
/**
* JUnit Test class for checking the package access
* methods of the org.safehaus.uuid.UUID class.
*
* @author Eric Bie
*/
public class UUIDPackageAccessTest extends TestCase
{
public UUIDPackageAccessTest(java.lang.String testName)
{
super(testName);
}
public static Test suite()
{
TestSuite suite = new TestSuite(UUIDPackageAccessTest.class);
return suite;
}
public static void main(String[] args)
{
junit.textui.TestRunner.run(suite());
}
/**************************************************************************
* Begin constructor tests
*************************************************************************/
/**
* Test of UUID(int, byte[]) constructor, of class org.safehaus.uuid.UUID.
*/
public void testTypeAndByteArrayUUIDConstructor()
{
// passing null
try
{
UUID uuid = new UUID(UUID.TYPE_RANDOM_BASED, (byte[])null);
fail("Expected exception not caught");
}
catch (NullPointerException ex)
{
// this is the success case so do nothing
}
catch (Exception ex)
{
fail("Caught unexpected exception: " + ex);
}
// passing array that is too small
try
{
UUID uuid =
new UUID(UUID.TYPE_RANDOM_BASED,
new byte[UUID_BYTE_ARRAY_LENGTH - 1]);
fail("Expected exception not caught");
}
catch (ArrayIndexOutOfBoundsException ex)
{
// this is the success case so do nothing
}
catch (Exception ex)
{
fail("Caught unexpected exception: " + ex);
}
// test creating an array from a good byte array with extra data on end
UUID uuid =
new UUID(UUID.TYPE_RANDOM_BASED,
VALID_UUID_BYTE_ARRAY_WITH_EXTRA_END);
assertEquals("constructor did not create expected UUID",
MIXED_CASE_VALID_UUID_STRING.toLowerCase(),
uuid.toString().toLowerCase());
// test creating an array from a good byte array with the right type
// Random UUID in this case
uuid = new UUID(UUID.TYPE_RANDOM_BASED, VALID_UUID_BYTE_ARRAY);
assertEquals("constructor did not create expected UUID",
MIXED_CASE_VALID_UUID_STRING.toLowerCase(),
uuid.toString().toLowerCase());
// test creating an array from a good byte array with the right type
// time based UUID in this case
uuid = new UUID(UUID.TYPE_TIME_BASED, TIME_BASED_UUID_BYTE_ARRAY);
assertEquals("constructor did not create expected UUID",
TIME_BASED_UUID_STRING.toLowerCase(),
uuid.toString().toLowerCase());
// test name based UUID in this case
uuid = new UUID(UUID.TYPE_NAME_BASED, NAME_BASED_UUID_BYTE_ARRAY);
assertEquals("constructor did not create expected UUID",
NAME_BASED_UUID_STRING.toLowerCase(),
uuid.toString().toLowerCase());
// test DCE based UUID in this case
uuid = new UUID(UUID.TYPE_DCE, DCE_BASED_UUID_BYTE_ARRAY);
assertEquals("constructor did not create expected UUID",
DCE_BASED_UUID_STRING.toLowerCase(),
uuid.toString().toLowerCase());
/*
* technically, this test does not work (this constructor always pokes
* a version into the UUID, even if you pass UUID.TYPE_NULL
* since this is a default access constructor, this is likely
* acceptable behavior, but test is here and commented out in case
* there is a desire for this to work differently
*/
// // test that creating a uuid from a zero'd array with TYPE_NULL
// // gives us a null UUID (null UUID is array of all 0s)
// uuid = new UUID(UUID.TYPE_NULL, new byte[UUID_BYTE_ARRAY_LENGTH]);
// assertEquals("constructor did not create expected null UUID",
// NULL_UUID_STRING,
// uuid.toString());
// assertTrue("NULL UUID byte arrays were not equal",
// Arrays.equals(NULL_UUID_BYTE_ARRAY, uuid.toByteArray()));
}
/**************************************************************************
* End constructor tests
*************************************************************************/
/**************************************************************************
* Begin private constants for use in tests above
*************************************************************************/
private static final int UUID_BYTE_ARRAY_LENGTH = 16;
private static final String UPPER_CASE_VALID_UUID_STRING =
"4D687664-3A1E-4F30-ACC1-87F59306D30C";
private static final String MIXED_CASE_VALID_UUID_STRING =
"4d687664-3A1e-4F30-aCc1-87F59306d30C";
private static final String LOWER_CASE_VALID_UUID_STRING =
"4d687664-3a1e-4f30-acc1-87f59306d30c";
private static final byte[] VALID_UUID_BYTE_ARRAY =
{
(byte)0x4d, (byte)0x68, (byte)0x76, (byte)0x64,
(byte)0x3a, (byte)0x1e, (byte)0x4f, (byte)0x30,
(byte)0xac, (byte)0xc1, (byte)0x87, (byte)0xf5,
(byte)0x93, (byte)0x06, (byte)0xd3, (byte)0x0c
};
private static final byte[] VALID_UUID_BYTE_ARRAY_WITH_EXTRA_START =
{
'e', 'x', 't', 'r', 'a', ' ', 'j', 'u', 'n', 'k',
(byte)0x4d, (byte)0x68, (byte)0x76, (byte)0x64,
(byte)0x3a, (byte)0x1e, (byte)0x4f, (byte)0x30,
(byte)0xac, (byte)0xc1, (byte)0x87, (byte)0xf5,
(byte)0x93, (byte)0x06, (byte)0xd3, (byte)0x0c
};
private static final byte[] VALID_UUID_BYTE_ARRAY_WITH_EXTRA_END =
{
(byte)0x4d, (byte)0x68, (byte)0x76, (byte)0x64,
(byte)0x3a, (byte)0x1e, (byte)0x4f, (byte)0x30,
(byte)0xac, (byte)0xc1, (byte)0x87, (byte)0xf5,
(byte)0x93, (byte)0x06, (byte)0xd3, (byte)0x0c,
'o', 'n', ' ', 't', 'h', 'e', ' ', 'e', 'n', 'd',
' ', 'a', 's', ' ', 'w', 'e', 'l', 'l'
};
private static final byte[] VALID_UUID_BYTE_ARRAY_WITH_EXTRA_BOTH =
{
'e', 'x', 't', 'r', 'a', ' ', 'j', 'u', 'n', 'k',
(byte)0x4d, (byte)0x68, (byte)0x76, (byte)0x64,
(byte)0x3a, (byte)0x1e, (byte)0x4f, (byte)0x30,
(byte)0xac, (byte)0xc1, (byte)0x87, (byte)0xf5,
(byte)0x93, (byte)0x06, (byte)0xd3, (byte)0x0c,
'o', 'n', ' ', 't', 'h', 'e', ' ', 'e', 'n', 'd',
' ', 'a', 's', ' ', 'w', 'e', 'l', 'l'
};
// valid null UUID string
private static final String NULL_UUID_STRING =
"00000000-0000-0000-0000-000000000000";
private static final byte[] NULL_UUID_BYTE_ARRAY =
new byte[UUID_BYTE_ARRAY_LENGTH];
// valid time based UUID string
private static final String TIME_BASED_UUID_STRING =
"ebb8e8fe-b1b1-11d7-8adb-00b0d078fa18";
private static final byte[] TIME_BASED_UUID_BYTE_ARRAY =
{
(byte)0xeb, (byte)0xb8, (byte)0xe8, (byte)0xfe,
(byte)0xb1, (byte)0xb1, (byte)0x11, (byte)0xd7,
(byte)0x8a, (byte)0xdb, (byte)0x00, (byte)0xb0,
(byte)0xd0, (byte)0x78, (byte)0xfa, (byte)0x18
};
// valid namespace based UUID string
private static final String NAME_BASED_UUID_STRING =
"71ee9b64-39d3-386c-bce3-c70549ca8829";
private static final byte[] NAME_BASED_UUID_BYTE_ARRAY =
{
(byte)0x71, (byte)0xee, (byte)0x9b, (byte)0x64,
(byte)0x39, (byte)0xd3, (byte)0x38, (byte)0x6c,
(byte)0xbc, (byte)0xe3, (byte)0xc7, (byte)0x05,
(byte)0x49, (byte)0xca, (byte)0x88, (byte)0x29
};
// dummy DCE based UUID string since I have no real examples to use
private static final String DCE_BASED_UUID_STRING =
"01234567-0123-2000-8000-0123456789ab";
private static final byte[] DCE_BASED_UUID_BYTE_ARRAY =
{
(byte)0x01, (byte)0x23, (byte)0x45, (byte)0x67,
(byte)0x01, (byte)0x23, (byte)0x20, (byte)0x00,
(byte)0x80, (byte)0x00, (byte)0x01, (byte)0x23,
(byte)0x45, (byte)0x67, (byte)0x89, (byte)0xab
};
/**************************************************************************
* End private constants for use in tests above
*************************************************************************/
}