예제 #1
0
  /**
   * Тестирование на HashMap
   *
   * @throws Exception
   */
  @Test
  public void testOnHashMap() throws Exception {
    Map<UserHashcode, Picture> users = new HashMap<>();
    users.put(user1, user1.getPicture());
    assertTrue(users.containsKey(user1));

    // user3 копия user1 но не содержится в ключах Map. Поиск идет по equals, а он не переопределен
    assertFalse(users.containsKey(user3));

    // В Map есть только user1, но присутствует value для user3,
    // т.к. у класса Picture переопределены оба метода, хотя объекты pic1 и pic3 разные по ссылкам
    assertTrue(users.containsValue(pic3));
    // Объекты разные, а хэш-коды - одинаковые
    assertFalse(pic1 == pic3);
    assertEquals(pic1.hashCode(), pic3.hashCode());

    users.put(user2, user2.getPicture());
    users.put(user3, user3.getPicture());

    // user3 не перезатирает user1, т.к. ключи не равны по equals, а только по hashCode
    assertEquals(3, users.size());
  }