12637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin/*
22637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin * Copyright (c) 2007 Mockito contributors
32637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin * This program is made available under the terms of the MIT License.
42637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin */
52637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
62637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpackage org.mockito.internal.matchers;
72637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
82637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.junit.Test;
92637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockitoutil.TestBase;
102637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
112637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static junit.framework.TestCase.*;
122637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
132637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
142637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpublic class EqualsTest extends TestBase {
152637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
162637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
172637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldBeEqual() {
182637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertEquals(new Equals(null), new Equals(null));
192637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertEquals(new Equals(new Integer(2)), new Equals(new Integer(2)));
202637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertFalse(new Equals(null).equals(null));
212637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertFalse(new Equals(null).equals("Test"));
222637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertEquals(1, new Equals(null).hashCode());
232637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
242637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
252637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
262637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldArraysBeEqual() {
272637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertTrue(new Equals(new int[] {1, 2}).matches(new int[] {1, 2}));
282637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertFalse(new Equals(new Object[] {"1"}).matches(new Object[] {"1.0"}));
292637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
302637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
312637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
322637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldDescribeWithExtraTypeInfo() throws Exception {
332637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        String descStr = new Equals(100).toStringWithType();
342637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
352637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertEquals("(Integer) 100", descStr);
362637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
372637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
382637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
392637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldDescribeWithExtraTypeInfoOfLong() throws Exception {
402637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        String descStr = new Equals(100L).toStringWithType();
412637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
422637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertEquals("(Long) 100L", descStr);
432637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
442637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
452637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
462637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldDescribeWithTypeOfString() throws Exception {
472637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        String descStr = new Equals("x").toStringWithType();
482637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
492637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertEquals("(String) \"x\"", descStr);
502637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
512637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
522637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
532637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldAppendQuotingForString() {
542637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        String descStr = new Equals("str").toString();
552637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
562637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertEquals("\"str\"", descStr);
572637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
582637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
592637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
602637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldAppendQuotingForChar() {
612637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        String descStr = new Equals('s').toString();
622637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
632637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertEquals("'s'", descStr);
642637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
652637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
662637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
672637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldDescribeUsingToString() {
682637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        String descStr = new Equals(100).toString();
692637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
702637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertEquals("100", descStr);
712637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
722637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
732637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
742637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldDescribeNull() {
752637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        String descStr = new Equals(null).toString();
762637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
772637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertEquals("null", descStr);
782637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
792637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
802637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
812637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldMatchTypes() throws Exception {
822637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        //when
832637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        ContainsExtraTypeInfo equals = new Equals(10);
842637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
852637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        //then
862637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertTrue(equals.typeMatches(10));
872637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertFalse(equals.typeMatches(10L));
882637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
892637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
902637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
912637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldMatchTypesSafelyWhenActualIsNull() throws Exception {
922637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        //when
932637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        ContainsExtraTypeInfo equals = new Equals(null);
942637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
952637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        //then
962637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertFalse(equals.typeMatches(10));
972637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
982637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
992637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
1002637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldMatchTypesSafelyWhenGivenIsNull() throws Exception {
1012637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        //when
1022637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        ContainsExtraTypeInfo equals = new Equals(10);
1032637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
1042637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        //then
1052637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        assertFalse(equals.typeMatches(null));
1062637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
1072637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin}
108