001/*
002 * ModeShape (http://www.modeshape.org)
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *       http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.modeshape.common.util;
017
018import static org.hamcrest.core.Is.is;
019import static org.hamcrest.core.IsNot.not;
020import static org.junit.Assert.assertThat;
021import org.junit.Test;
022
023/**
024 * @author Randall Hauch
025 */
026public class HashCodeTest {
027
028    @Test
029    public void shouldComputeHashCodeForOnePrimitive() {
030        assertThat(HashCode._compute(1), is(not(0)));
031        assertThat(HashCode.compute((long)8), is(not(0)));
032        assertThat(HashCode._compute((short) 3), is(not(0)));
033        assertThat(HashCode.compute(1.0f), is(not(0)));
034        assertThat(HashCode.compute(1.0d), is(not(0)));
035        assertThat(HashCode.compute(true), is(not(0)));
036    }
037
038    @Test
039    public void shouldComputeHashCodeForMultiplePrimitives() {
040        assertThat(HashCode._compute(1, 2, 3), is(not(0)));
041        assertThat(HashCode.compute((long)8, (long)22, 33), is(not(0)));
042        assertThat(HashCode._compute((short) 3, (long) 22, true), is(not(0)));
043    }
044
045    @Test
046    public void shouldAcceptNoArguments() {
047        assertThat(HashCode.compute(), is(0));
048    }
049
050    @Test
051    public void shouldAcceptNullArguments() {
052        assertThat(HashCode.compute((Object)null), is(0));
053        assertThat(HashCode.compute("abc", (Object)null), is(not(0)));
054    }
055
056}