/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.content.contentdata.custom;
import org.junit.Before;
import org.junit.Test;
import com.enonic.cms.core.AbstractEqualsTest;
import com.enonic.cms.core.content.contentdata.custom.stringbased.HtmlAreaDataEntry;
import com.enonic.cms.core.content.contenttype.dataentryconfig.BinaryDataEntryConfig;
import com.enonic.cms.core.content.contenttype.dataentryconfig.DataEntryConfig;
import com.enonic.cms.core.content.contenttype.dataentryconfig.HtmlAreaDataEntryConfig;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
/**
* Created by IntelliJ IDEA.
* User: rmh
* Date: Mar 9, 2010
* Time: 3:01:43 PM
*/
public class BinaryDataEntryEqualsTest
extends AbstractEqualsTest
{
private DataEntryConfig config1;
private DataEntryConfig config2;
private byte[] binary1;
private byte[] binary2;
private String binaryName1;
private String binaryName2;
@Before
public void setUp()
{
config1 = new BinaryDataEntryConfig( "a config", true, "a config", "/root/entry" );
config2 = new BinaryDataEntryConfig( "another config", true, "another config", "/root/entry2" );
binary1 = "This is binary1".getBytes();
binary2 = "This is binary2".getBytes();
binaryName1 = "binary1";
binaryName2 = "binary2";
}
@Test
public void testEqualsExistingBinaryKey()
{
BinaryDataEntry b1 = new BinaryDataEntry( config1, 101 );
BinaryDataEntry b2 = new BinaryDataEntry( config1, 101 );
BinaryDataEntry b3 = new BinaryDataEntry( config1, 102 );
BinaryDataEntry b4 = new BinaryDataEntry( config2, 102 );
assertTrue( b1.equals( b2 ) );
assertFalse( b1.equals( b3 ) );
assertFalse( b3.equals( b4 ) );
}
@Test
public void testEqualsFullConstructor()
{
BinaryDataEntry b1 = new BinaryDataEntry( config1, "%0", binary1, binaryName1 );
BinaryDataEntry b2 = new BinaryDataEntry( config1, "%0", binary1, binaryName1 );
BinaryDataEntry b3 = new BinaryDataEntry( config2, "%0", binary1, binaryName1 );
BinaryDataEntry b4 = new BinaryDataEntry( config1, "%1", binary1, binaryName1 );
BinaryDataEntry b5 = new BinaryDataEntry( config1, "%0", binary1, binaryName2 );
BinaryDataEntry b6 = new BinaryDataEntry( config1, "%0", binary2, binaryName1 );
assertTrue( "Differs despite all equal", b1.equals( b2 ) );
assertFalse( "Equals despite different config", b1.equals( b3 ) );
assertFalse( "Equals despite different placeholer", b1.equals( b4 ) );
assertFalse( "Equals despite different binaryname", b1.equals( b5 ) );
assertFalse( "Equals despite different binary data", b1.equals( b6 ) );
}
@Test
public void testEqualsDifferentConstructors()
{
BinaryDataEntry b1 = new BinaryDataEntry( config1, "%0", binary1, binaryName1 );
BinaryDataEntry b2 = new BinaryDataEntry( config1, 101 );
assertFalse( "Equals despite different data", b1.equals( b2 ) );
assertFalse( "Equals despite different data", b2.equals( b1 ) );
b2.setBinaryKeyPlaceholder( "%0" );
assertFalse( "Equals despite different data", b1.equals( b2 ) );
b1.setExistingBinaryKey( 101 );
assertFalse( "Equals despite different data", b1.equals( b2 ) );
}
@Test
public void testEquals()
{
assertEqualsContract();
}
public Object getObjectX()
{
BinaryDataEntryConfig config = new BinaryDataEntryConfig( "test", true, "test", "contentdata/test" );
return new BinaryDataEntry( config, "%0" );
}
public Object[] getObjectsThatNotEqualsX()
{
BinaryDataEntryConfig config = new BinaryDataEntryConfig( "test", true, "test", "contentdata/test" );
BinaryDataEntryConfig config2 = new BinaryDataEntryConfig( "test", true, "test", "contentdata/test2" );
BinaryDataEntryConfig config3 = new BinaryDataEntryConfig( "test2", true, "test", "contentdata/test" );
HtmlAreaDataEntryConfig config4 = new HtmlAreaDataEntryConfig( "test", true, "test", "contentdata/test" );
return new Object[]{new BinaryDataEntry( config, "%1" ), new BinaryDataEntry( config2, "%0" ), new BinaryDataEntry( config3, "%0" ),
new HtmlAreaDataEntry( config4, "%0" )};
}
public Object getObjectThatEqualsXButNotTheSame()
{
BinaryDataEntryConfig config = new BinaryDataEntryConfig( "test", true, "test", "contentdata/test" );
return new BinaryDataEntry( config, "%0" );
}
public Object getObjectThatEqualsXButNotTheSame2()
{
BinaryDataEntryConfig config = new BinaryDataEntryConfig( "test", true, "test", "contentdata/test" );
return new BinaryDataEntry( config, "%0" );
}
}