2009-05-14 3 views
14

У меня есть пользовательская реализация интерфейса карты, которая делает некоторые причудливые вещи, как ленивая оценка функций. реализация должна выглядеть неизменной после построения снаружи (например, не поддерживаются методы put() и putAll())Универсальный испытательный жгут для java.util.Map?

Похоже, что это работает в самых простых условиях. Поскольку он довольно сложный, я уверен, что в нем должны быть тонны скрытых ошибок, связанных с безопасностью резьбы, нерегулярным порядком операций и т. Д.

Поскольку договор интерфейса карты четко определен, я уверен, что там должно быть общая коллекция тестов, которая проверяет угловые шкафы, безопасность резьбы и т. д.

Я слышал, что Google Collections запускает около 25000 модульных тестов для своей библиотеки. Можно ли их скачать где-нибудь?

ответ

0

Вы можете увидеть, если Google Collections есть то, что соответствует вашим потребностям, так что вы не должны поддерживать свою собственную карту. См, например, MapMaker

private Map<Key, Graph> createMap() { 
    ConcurrentMap<Key, Graph> graphs = new MapMaker() 
    .concurrencyLevel(32) 
    .softKeys() 
    .weakValues() 
    .expiration(30, TimeUnit.MINUTES) 
    .makeComputingMap(
     new Function<Key, Graph>() { 
      public Graph apply(Key key) { 
      return createExpensiveGraph(key); 
      } 
     }); 
    return Collections.unmodifiableMap(graphs); 
} 

Обратите внимание, что карта не будет отображаться полностью неизменна после строительства, так как делать map.get(key) с ранее невидимым ключом изменит то, что видно по Map.entrySet()

Если вам нужно для написания пользовательской реализации карты и для хорошего места для начала тестирования, предложение Адама об использовании Google Collections MapInterfaceTest является хорошим.

+0

в моем случае дано другое значение округления, вычислить ключ –

Смежные вопросы