2015-05-02 4 views
0

Когда я проверить следующие тестовые случаи:Получение только `false` в качестве возвращаемого значения

public void put_remove2(IMiniMap<Integer,Double> map){ 
     int [] ia = { 8, 6, 7, 5, 3, 0, 9,-86,-75,-30,-90}; 
     double[] da = {.6,.07,.50,.33,.00,.90,.86,.75,.30,.90,.08}; 
     for(int i=0; i<ia.length; i++){ 
      assertEquals(null, map.put(ia[i], da[i])); 
     } 

     int expectSize = ia.length; 
     assertEquals(expectSize, map.size()); 

     int [] remove = { 7, 1, 6, 4}; 
     for(int rdx : remove){ 
      assertEquals(true, map.contains(ia[rdx])); 
      assertEquals(new Double(da[rdx]), map.get(ia[rdx])); 
      assertEquals(new Double(da[rdx]), map.remove(ia[rdx])); 
      assertEquals(false, map.contains(ia[rdx])); 
      assertEquals(null, map.get(ia[rdx])); 
      expectSize--; 
      assertEquals(expectSize,map.size()); 
     } 
     } 

я получаю результат false, но я должен получить true и независимо от числа я кладу в ıA [..] I получите false. Я думаю, что ошибка скрывается где-то в indexOf(K key) или contains(K key).

Основной класс:

public class Tester { 

    public static void main(String[] args) 
    { 
     IMiniMap<Integer,Double> map = new FastGetListMM<Integer,Double>(); 
     int [] ia = { 8, 6, 7, 5, 3, 0, 9,-86,-75,-30,-90}; 

     boolean check = map.contains(ia[4]); 
     System.out.println(check); 
    } 
} 

Отдельный класс:

public class FastGetListMM<K,V> extends AbstractListMM<K,V> 
    { 
     public final Comparator<K> cmp; 

    public FastGetListMM() 
    { 
     super(new ArrayList<K>(), new ArrayList<V>()); 
     cmp = null; 
    } 
    public FastGetListMM(Comparator<K> cmp) 
    { 
     this.cmp = cmp; 
    } 

    public boolean contains(K key) 
    { 
     int pos = this.indexOf(key); 
     if(pos < 0) 
      return false; 
     else 
      return true; 
    } 


    public void ensureComparable(K key) 
    { 
     if(!(key instanceof Comparable) && cmp == null) 
      throw new RuntimeException("The key is not instance of Comparable or comparator object is null"); 
    } 
    public int indexOf(K key) 
    { 
     ensureComparable(key); 
     int foundIndex = Collections.binarySearch(keys, key, cmp); 

     return foundIndex; 
    } 
} 
+0

В вашем примере ваша 'карта' пуста. –

ответ

1

Вы не кормить map. Вы создали экземпляр map, затем загрузили ia переменную и проверку map.contains().

map.contains(<key>) будет искать ключи на карте. В вашем случае нет keys, присутствующих в map. поэтому он всегда возвращает false.

+0

Я так не думаю. 'K key' имеет общий тип, поэтому он должен быть прав, @Dilip –

+1

@John посмотрите на метод' main'. Вы создаете карту, но вы не помещаете какие-либо данные на карту (если вы не делаете этого в другом коде, который вы не показываете). Итак, конечно, карта будет сообщать вам, что она не содержит элемент, который вы ищете. – Jesper

+0

@John В соответствии с кодом, который вы отправили, я не видел никаких «map.put (K, V)» (т. Е. Вы не помещаете какие-либо данные в «карту»). –

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