/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.id.uuid;
import java.util.UUID;
import org.hibernate.testing.junit4.BaseUnitTestCase;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
/**
* @author Steve Ebersole
*/
public class CustomVersionOneStrategyTest extends BaseUnitTestCase {
@Test
public void testUniqueCounter() {
CustomVersionOneStrategy strategy = new CustomVersionOneStrategy();
long now = System.currentTimeMillis();
UUID uuid1 = new UUID(
strategy.getMostSignificantBits(),
CustomVersionOneStrategy.generateLeastSignificantBits( now )
);
assertEquals( 2, uuid1.variant() );
assertEquals( 1, uuid1.version() );
for ( int i = 0; i < 100; i++ ) {
UUID uuidX = new UUID(
strategy.getMostSignificantBits(),
CustomVersionOneStrategy.generateLeastSignificantBits( now )
);
assertEquals( 2, uuidX.variant() );
assertEquals( 1, uuidX.version() );
assertFalse( uuid1.equals( uuidX ) );
assertEquals( uuid1.getMostSignificantBits(), uuidX.getMostSignificantBits() );
}
}
@Test
public void testRangeOfValues() {
CustomVersionOneStrategy strategy = new CustomVersionOneStrategy();
UUID uuid = new UUID(
strategy.getMostSignificantBits(),
CustomVersionOneStrategy.generateLeastSignificantBits( 0 )
);
assertEquals( 2, uuid.variant() );
assertEquals( 1, uuid.version() );
uuid = new UUID(
strategy.getMostSignificantBits(),
CustomVersionOneStrategy.generateLeastSignificantBits( Long.MAX_VALUE )
);
assertEquals( 2, uuid.variant() );
assertEquals( 1, uuid.version() );
}
}