Eu estava fazendo o mock da enthuware, quando surgiu uma dúvida a qual eu ainda não consegui resolver, abaixo vou escrever dois códigos, um com um teste simples com um array de string o qual o metodo bynarySearch() irá fazer a busca pelo pela ordenação natural, e o outro com a questão do mock:
MyComparator:
[code]import java.util.Comparator;
class MyStringComparator implements Comparator
{
public int compare(Object o1, Object o2)
{
int s1 = ((String) o1).length();
int s2 = ((String) o2).length();
return s1 - s2;
}
}
[/code]
classe de Teste
import java.util.Arrays;
public class TesteComparator {
static String[] sa = { "a","c","d" };
public static void main(String[] args)
{
MyStringComparator comp = new MyStringComparator();
int binarySearch = Arrays.binarySearch(sa, "b");
System.out.println(binarySearch);
}
}
De acordo com o livro da Kathy Sierra, estaremos recebendo um ponto de inserção para buscas mal sucedidas, tal ponto poderá ser calculado da seguinte forma:
(-(ponto de inserção) - 1), e diz também que “0” é um indice que indica uma busca válida certo?
Sendo assim rodando esse código se tem a saída:
Ou seja o ponto de inserção seria (-(-2)-1), o qual nos mostra que seria o segundo elemento com indice igual a 1, tudo isso para mostrar que realmente, a coisa está certa.
Porém no teste do mock tem o seguinte código como abaixo:
[code]import java.util.Arrays;
public class TesteComparator {
static String[] sa = { “d”,“bbb”,“aaaa” };
public static void main(String[] args)
{
MyStringComparator comp = new MyStringComparator();
int binarySearch = Arrays.binarySearch(sa, "c", comp);
System.out.println(binarySearch);
}
}
[/code]
Ao executar esse código se tem o seguinte retorno:
Ou seja, o codigo 0, que segundo o livro e de acordo com o código acima é um resultado para uma busca válida!
Na minha concepção essa busca deveria retornar -2, pois o ponto de inserção para c, seria o indice 1, pois no indice 0 já existe um elemento!, Olha o que a explicação do mock diz:
Alguém poderia me ajudar?
Obrigado.