001/*
002 * The contents of this file are subject to the license and copyright
003 * detailed in the LICENSE and NOTICE files at the root of the source
004 * tree.
005 */
006package org.fcrepo.http.commons.domain;
007
008import static org.fcrepo.kernel.api.RdfLexicon.PREFER_MINIMAL_CONTAINER;
009import static org.junit.Assert.assertEquals;
010import static org.junit.Assert.assertFalse;
011import static org.junit.Assert.assertNotNull;
012import static org.junit.Assert.assertTrue;
013
014import org.junit.Test;
015
016/**
017 * @author cabeer
018 */
019public class PreferTagTest {
020
021    @Test
022    public void testEmpty() {
023        final PreferTag preferTag = PreferTag.emptyTag();
024        assertEquals("", preferTag.getTag());
025        assertEquals("", preferTag.getValue());
026        assertTrue(preferTag.getParams().isEmpty());
027    }
028
029    @Test
030    public void testTrailingSemicolon() {
031        final PreferTag preferTag = new PreferTag("foo=bar;");
032        assertNotNull(preferTag.getParams());
033    }
034
035    @Test
036    public void testEquals() {
037        final PreferTag preferTag1 = new PreferTag("handling=lenient; received=\"minimal\"");
038        final PreferTag preferTag2 = new PreferTag("handling=lenient; received=\"minimal\"");
039        final PreferTag preferTag3 = PreferTag.emptyTag();
040        assertTrue(preferTag1.equals(preferTag2));
041        assertTrue(preferTag1.equals(preferTag1));  // ensure consistency
042        assertTrue(preferTag2.equals(preferTag1));
043        assertFalse(preferTag1.equals(preferTag3));
044        assertFalse(preferTag1.equals(null));
045        assertFalse(preferTag1.equals("some string"));
046    }
047
048    @Test
049    public void testHashCode() {
050        doTestHashCode(new PreferTag("handling=lenient; received=\"minimal\""),
051                new PreferTag("handling=lenient; received=\"minimal\""),
052                true);
053
054        doTestHashCode(new PreferTag("handling=lenient; received=\"minimal\""),
055                new PreferTag("return=representation; include=\"" + PREFER_MINIMAL_CONTAINER + "\""),
056                false);
057
058        doTestHashCode(new PreferTag("handling=lenient; received=\"minimal\""),
059                PreferTag.emptyTag(),
060                false);
061    }
062
063    private static void doTestHashCode(final PreferTag tag0, final PreferTag tag1, final boolean expectEqual)    {
064        assertEquals(expectEqual, tag0.equals(tag1));
065        assertEquals(expectEqual, tag0.hashCode() == tag1.hashCode());
066    }
067
068}