/** Testa exclusão em árvore de altura H=2 É necessário redistribuição */ @Test public void testaExclui3() throws FileNotFoundException, Exception { montaArvoreH2Cheia(); int end = instance.exclui(13, NOME_ARQUIVO_METADADOS, NOME_ARQUIVO_INDICE, NOME_ARQUIVO_DADOS); assertEquals(0, end); tabDados = new ArrayList<NoFolha>(); tabIndice = new ArrayList<NoInterno>(); tabIndice.add( new NoInterno( 2, true, -1, Arrays.asList(0, 1 * NoFolha.TAMANHO, 2 * NoFolha.TAMANHO), Arrays.asList(20, 25))); List<Cliente> clientes = new ArrayList<Cliente>(); clientes.add(new Cliente(10, "JOAO ")); clientes.add(new Cliente(15, "JOSE ")); // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes tabDados.add(new NoFolha(2, 0, 1 * NoFolha.TAMANHO, clientes)); // Este nó agora é lixo. Dependendo da implementação, tem que mudar este código de teste. clientes = new ArrayList<Cliente>(); clientes.add(new Cliente(20, "MARIANA ")); clientes.add(new Cliente(21, "BRUNA ")); clientes.add(new Cliente(23, "BRUNO ")); // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes tabDados.add(new NoFolha(3, 0, 2 * NoFolha.TAMANHO, clientes)); clientes = new ArrayList<Cliente>(); clientes.add(new Cliente(25, "RONALDO ")); clientes.add(new Cliente(35, "MARCELA ")); clientes.add(new Cliente(37, "LEONARDO ")); // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes tabDados.add(new NoFolha(3, 0, -1, clientes)); tabIndiceSaida = Arquivos.leNosInternos(NOME_ARQUIVO_INDICE); tabDadosSaida = Arquivos.leNosFolha(NOME_ARQUIVO_DADOS); assertArrayEquals(tabDados.toArray(), tabDadosSaida.toArray()); assertArrayEquals(tabIndice.toArray(), tabIndiceSaida.toArray()); }
/** Testa exclusão em árvore de altura H=2 Não é necessário concatenação */ @Test public void testaExclui1() throws FileNotFoundException, Exception { // Árvore tem um dos nós folha cheio. E é neste nó que a exclusão ocorrerá montaArvoreH2Cheia(); int end = instance.exclui(20, NOME_ARQUIVO_METADADOS, NOME_ARQUIVO_INDICE, NOME_ARQUIVO_DADOS); assertEquals(1 * NoFolha.TAMANHO, end); tabDados = new ArrayList<NoFolha>(); tabIndice = new ArrayList<NoInterno>(); tabIndice.add( new NoInterno( 2, true, -1, Arrays.asList(0, 1 * NoFolha.TAMANHO, 2 * NoFolha.TAMANHO), Arrays.asList(15, 25))); List<Cliente> clientes = new ArrayList<Cliente>(); clientes.add(new Cliente(10, "JOAO ")); clientes.add(new Cliente(13, "ANA MARIA ")); // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes tabDados.add(new NoFolha(2, 0, 1 * NoFolha.TAMANHO, clientes)); clientes = new ArrayList<Cliente>(); clientes.add(new Cliente(15, "JOSE ")); clientes.add(new Cliente(21, "BRUNA ")); clientes.add(new Cliente(23, "BRUNO ")); // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes tabDados.add(new NoFolha(3, 0, 2 * NoFolha.TAMANHO, clientes)); clientes = new ArrayList<Cliente>(); clientes.add(new Cliente(25, "RONALDO ")); clientes.add(new Cliente(35, "MARCELA ")); clientes.add(new Cliente(37, "LEONARDO ")); // Estrutura do nó folha: m, pontPai, pontProx, registros de clientes tabDados.add(new NoFolha(3, 0, -1, clientes)); tabIndiceSaida = Arquivos.leNosInternos(NOME_ARQUIVO_INDICE); tabDadosSaida = Arquivos.leNosFolha(NOME_ARQUIVO_DADOS); assertArrayEquals(tabDados.toArray(), tabDadosSaida.toArray()); assertArrayEquals(tabIndice.toArray(), tabIndiceSaida.toArray()); }