/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* 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.ogm.datastore.infinispan.test.dialect.impl;
import static org.fest.assertions.Assertions.assertThat;
import static org.junit.Assert.assertTrue;
import org.hibernate.ogm.datastore.infinispan.persistencestrategy.kind.externalizer.impl.IdSourceKeyExternalizer;
import org.hibernate.ogm.model.impl.DefaultIdSourceKeyMetadata;
import org.hibernate.ogm.model.key.spi.IdSourceKey;
import org.hibernate.ogm.model.key.spi.IdSourceKeyMetadata;
import org.junit.Before;
import org.junit.Test;
/**
* Unit test for {@link IdSourceKeyExternalizer}.
*
* @author Gunnar Morling
*/
public class IdSourceKeyExternalizerTest {
private ExternalizerTestHelper<IdSourceKey, IdSourceKeyExternalizer> externalizerHelper;
@Before
public void setupMarshallerFactory() {
externalizerHelper = ExternalizerTestHelper.getInstance( IdSourceKeyExternalizer.INSTANCE );
}
@Test
public void shouldSerializeAndDeserializeRowKey() throws Exception {
IdSourceKeyMetadata keyMetadata = DefaultIdSourceKeyMetadata.forTable( "Hibernate_Sequences", "sequence_name", "next_val" );
// given
IdSourceKey key = IdSourceKey.forTable( keyMetadata, "Foo_Sequence" );
// when
byte[] bytes = externalizerHelper.marshall( key );
IdSourceKey unmarshalledKey = externalizerHelper.unmarshall( bytes );
// then
assertThat( unmarshalledKey.getTable() ).isEqualTo( key.getTable() );
assertThat( unmarshalledKey.getColumnName() ).isEqualTo( key.getColumnName() );
assertThat( unmarshalledKey.getColumnValue() ).isEqualTo( key.getColumnValue() );
assertTrue( key.equals( unmarshalledKey ) );
assertTrue( unmarshalledKey.equals( key ) );
assertThat( unmarshalledKey.hashCode() ).isEqualTo( key.hashCode() );
}
}