Consultas de implementacion del Buffer y sus tests. #480
-
Buenas! Leyendo los tests que vienen dados en el repositorio me surgen dos dudas. La primera es cuanto control tenemos sobre estos tests? Podriamos modificarlos en base a la implementacion? o deben dejarse tal cual? @Test
void inicialmenteCurrentSizeYMaxSizeCoinciden() {
Buffer buffer = new Buffer(27);
Assertions.assertEquals(buffer.getCurrentSize(), buffer.getMaxSize());
} Intuitivamente pensaria que currentSize es la cantidad de bytes escrita en el buffer en un determinado momento, por ende empezaria siendo 0, pero supongamos que se hace una excepcion cuando el buffer esta vacio (cuestionable interfaz que dificulta saber si un buffer esta vacio o no solo mirando su currentSize pero ok). @Test
void sePuedeLeerSincronicamenteUnArchivoCuandoNoHayNadaParaLeer() {
Buffer buffer = new Buffer(100);
when(lowLevelFileSystem.openFile("ejemplo.txt")).thenReturn(42);
when(lowLevelFileSystem.syncReadFile(42, buffer.getBytes(), 0, 100)).thenReturn(0);
File file = fileSystem.open("ejemplo.txt");
file.read(buffer);
Assertions.assertEquals(0, buffer.getStart());
Assertions.assertEquals(-1, buffer.getEnd());
Assertions.assertEquals(0, buffer.getCurrentSize());
} Esto no es contradictorio? O hay algun detalle que no estoy contemplando? |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
No está prohibido que los modifiquen, pero deberían apuntar a mantenerlos sin cambios, salvo que tengan verdaderamente un muy buen motivo: ¿cual sería? |
Beta Was this translation helpful? Give feedback.
-
En cuanto a esto, no, no es contradictorio y es, por el contrario, intencional. Las situaciones que se plantean son diferentes:
En cualquier caso, ninguno de estos casos plantea la existencia de un buffer "vacío". Los buffer de este problema tienen un tamaño fijo, y se pueden escribir arbitrariamente en cualquier segmento dentro de su tamaño máximo. Además, contamos con punteros que dicen donde inician y terminan los datos. |
Beta Was this translation helpful? Give feedback.
En cuanto a esto, no, no es contradictorio y es, por el contrario, intencional.
Las situaciones que se plantean son diferentes:
inicialmenteCurrentSizeYMaxSizeCoinciden
se crea un buffer vacío de 27 bytes. El tamaño máximo y el tamaño actual coinciden, porque no enviaste el mensajelimit
, que define cual es el tamaño lógico del buffer. El tamaño físico nunca va a cambiar, porque indica cuánto ocupa en la memoria, mientras que el tamaño lógico lo utilizamos para indicarle a otro componente hasta donde puede escribir (en este caso, hasta su tamaño máximo).sePuedeLeerSincronicamenteUnAr…