/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content.contentdata.custom; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import com.enonic.cms.core.AbstractEqualsTest; import com.enonic.cms.core.content.contentdata.custom.stringbased.TextDataEntry; import com.enonic.cms.core.content.contenttype.dataentryconfig.DataEntryConfig; import com.enonic.cms.core.content.contenttype.dataentryconfig.MultipleChoiceDataEntryConfig; import static org.junit.Assert.*; public class MultipleChoiceDataEntryTest extends AbstractEqualsTest { private MultipleChoiceDataEntry oneAlternativeTestEntry; private MultipleChoiceDataEntry yesNoTestEntry; private MultipleChoiceDataEntry yesNoTestEntry2; private MultipleChoiceDataEntry yesNoTestEntry3; private MultipleChoiceDataEntry nullTextTestEntry; private MultipleChoiceDataEntry blankTextTestEntry; private MultipleChoiceDataEntry namesTestEntry; private MultipleChoiceDataEntry noListTestEntry; private MultipleChoiceDataEntry emptyTextEntry; private TextDataEntry textTextDataEntry; @Before public void setUp() { DataEntryConfig requiredConfig = new MultipleChoiceDataEntryConfig( "question1", true, "Required question", "result/question1" ); DataEntryConfig nonRequiredConfig = new MultipleChoiceDataEntryConfig( "question2", false, "Non required question", "result/question2" ); List<MultipleChoiceAlternative> tooFewAltsSet = new ArrayList<MultipleChoiceAlternative>(); tooFewAltsSet.add( new MultipleChoiceAlternative( "Ja", true ) ); List<MultipleChoiceAlternative> yesNoAltSet = new ArrayList<MultipleChoiceAlternative>(); yesNoAltSet.add( new MultipleChoiceAlternative( "Ja", true ) ); yesNoAltSet.add( new MultipleChoiceAlternative( "Nei", false ) ); List<MultipleChoiceAlternative> yesNoAltSet2 = new ArrayList<MultipleChoiceAlternative>(); yesNoAltSet2.add( new MultipleChoiceAlternative( "Ja", true ) ); yesNoAltSet2.add( new MultipleChoiceAlternative( "Nei", false ) ); List<MultipleChoiceAlternative> oneToFourSet = new ArrayList<MultipleChoiceAlternative>(); oneToFourSet.add( new MultipleChoiceAlternative( "1", false ) ); oneToFourSet.add( new MultipleChoiceAlternative( "2", true ) ); oneToFourSet.add( new MultipleChoiceAlternative( "3", false ) ); oneToFourSet.add( new MultipleChoiceAlternative( "4", true ) ); List<MultipleChoiceAlternative> namesSet = new ArrayList<MultipleChoiceAlternative>(); namesSet.add( new MultipleChoiceAlternative( "Lars", true ) ); namesSet.add( new MultipleChoiceAlternative( "Trond", false ) ); oneAlternativeTestEntry = new MultipleChoiceDataEntry( nonRequiredConfig, "Har du testet?", tooFewAltsSet ); yesNoTestEntry = new MultipleChoiceDataEntry( nonRequiredConfig, "Har du testet?", yesNoAltSet ); yesNoTestEntry2 = new MultipleChoiceDataEntry( nonRequiredConfig, "Har du testet?", yesNoAltSet2 ); yesNoTestEntry3 = new MultipleChoiceDataEntry( nonRequiredConfig, "Har du testet?", yesNoAltSet ); nullTextTestEntry = new MultipleChoiceDataEntry( nonRequiredConfig, null, yesNoAltSet ); blankTextTestEntry = new MultipleChoiceDataEntry( nonRequiredConfig, " ", oneToFourSet ); namesTestEntry = new MultipleChoiceDataEntry( requiredConfig, "Har du testet?", namesSet ); noListTestEntry = new MultipleChoiceDataEntry( nonRequiredConfig, "Har du testet?", null ); emptyTextEntry = new MultipleChoiceDataEntry( nonRequiredConfig, null, null ); textTextDataEntry = new TextDataEntry( requiredConfig, "Har du testet?" ); } @Test public void testBreaksRequiredContract() { assertTrue( "testBreaksRequiredContract(): Needs at least 2 alternatives.", oneAlternativeTestEntry.breaksRequiredContract() ); assertFalse( "testBreaksRequiredContract(): 2 alternatives should be enough.", yesNoTestEntry.breaksRequiredContract() ); assertTrue( "testBreaksRequiredContract(): Text cannot be null", nullTextTestEntry.breaksRequiredContract() ); assertTrue( "testBreaksRequiredContract(): Text cannot be blank", blankTextTestEntry.breaksRequiredContract() ); } @Test public void testHasValue() { assertTrue( "testHasValue(): Normal entry should have value.", yesNoTestEntry.hasValue() ); assertTrue( "testHasValue(): Entry without text should still have a value", nullTextTestEntry.hasValue() ); assertTrue( "testHasValue(): Entry without alternatives should still have a value", noListTestEntry.hasValue() ); assertFalse( "testHasValue(): Entry without text or alternatives should not have a value", emptyTextEntry.hasValue() ); } @Test public void testEquals() { assertEqualsContract(); } public Object getObjectX() { return yesNoTestEntry; } public Object[] getObjectsThatNotEqualsX() { return new Object[]{oneAlternativeTestEntry, nullTextTestEntry, blankTextTestEntry, textTextDataEntry, namesTestEntry}; } public Object getObjectThatEqualsXButNotTheSame() { return yesNoTestEntry2; } public Object getObjectThatEqualsXButNotTheSame2() { return yesNoTestEntry3; } }