Created
October 14, 2010 03:17
-
-
Save lfborjas/625491 to your computer and use it in GitHub Desktop.
La clase cuaderno, creada para progra 2 el 13 de octubre de 2010
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package laboratorio2; | |
| import java.util.HashMap; | |
| import java.util.Arrays; | |
| import java.util.ArrayList; | |
| import java.util.Map.Entry; | |
| public class Cuaderno{ | |
| private int noPaginas; | |
| private String tipo; | |
| private HashMap<Integer, ArrayList<String> > contenido; | |
| //Esta es una constante de clase, no un miembro: puede ser públicamente accesible | |
| public static final int NO_LINEAS = 35; | |
| /*Este es un bloque de inicialización, se correrá dentro de cada constructor*/ | |
| { | |
| contenido = new HashMap<Integer, ArrayList<String>>(); | |
| } | |
| /**El constructor por defecto*/ | |
| public Cuaderno(){ | |
| noPaginas = 140; | |
| tipo = "anillado"; | |
| for(int i = 0; i < noPaginas; i++){ | |
| contenido.put(i, new ArrayList<String>(NO_LINEAS)); | |
| } | |
| } | |
| public Cuaderno(int noPaginas, String tipo){ | |
| this.noPaginas = noPaginas; | |
| this.tipo = tipo; | |
| String [] tempArray; | |
| for(int i = 0; i < noPaginas; i++){ | |
| contenido.put(i, new ArrayList<String>(NO_LINEAS)); | |
| } | |
| } | |
| public int getNoPaginas(){ | |
| return this.noPaginas; | |
| } | |
| public void setNoPaginas(int nuevoNum){ | |
| this.noPaginas = nuevoNum; | |
| } | |
| /**Busca la primera página en blanco*/ | |
| public int primeraPaginaLibre(){ | |
| for(Entry<Integer, ArrayList<String>> pagina: contenido.entrySet()){ | |
| if(pagina.getValue().size() < NO_LINEAS) | |
| return pagina.getKey().intValue(); | |
| } | |
| //si no encuentra, retornar -1 | |
| return -1; | |
| } | |
| /*Este método sobrecargado devuelve si se escribió con éxito*/ | |
| public boolean escribir(String linea){ | |
| int noPagina = primeraPaginaLibre(); | |
| if(noPagina != -1){ | |
| contenido.get(noPagina).add(linea); | |
| return true; | |
| } | |
| return false; | |
| } | |
| public boolean escribir(String linea, int pagina){ | |
| //Aquí nos valemos de cortocircuito para ver si la página existe antes | |
| //de chequear que esa página tenga espacio libre. | |
| if(contenido.containsKey(pagina) && contenido.get(pagina).size() < NO_LINEAS){ | |
| contenido.get(pagina).add(linea); | |
| return true; | |
| } | |
| return false; | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package laboratorio2; | |
| import junit.framework.TestCase; | |
| /** | |
| * | |
| * @author lfborjas | |
| */ | |
| public class CuadernoTest extends TestCase { | |
| public CuadernoTest(String testName) { | |
| super(testName); | |
| } | |
| @Override | |
| protected void setUp() throws Exception { | |
| super.setUp(); | |
| } | |
| @Override | |
| protected void tearDown() throws Exception { | |
| super.tearDown(); | |
| } | |
| /** | |
| * Test of getNoPaginas method, of class Cuaderno. | |
| */ | |
| public void testGetNoPaginas() { | |
| System.out.println("getNoPaginas"); | |
| /*prueba con el default constructor*/ | |
| Cuaderno instance = new Cuaderno(); | |
| int expResult = 140; | |
| int result = instance.getNoPaginas(); | |
| assertEquals(expResult, result); | |
| /*prueba con el otro constructor*/ | |
| instance = new Cuaderno(666, "unico"); | |
| assertEquals(666, instance.getNoPaginas()); | |
| } | |
| /** | |
| * Test of setNoPaginas method, of class Cuaderno. | |
| */ | |
| public void testSetNoPaginas() { | |
| System.out.println("setNoPaginas"); | |
| int nuevoNum = 200; | |
| Cuaderno instance = new Cuaderno(); | |
| instance.setNoPaginas(nuevoNum); | |
| assertEquals(200, instance.getNoPaginas()); | |
| } | |
| /** | |
| * Test of escribir method, of class Cuaderno. | |
| */ | |
| public void testEscribir_String() { | |
| System.out.println("escribir"); | |
| String linea = ""; | |
| Cuaderno instance = new Cuaderno(10, "prueba"); | |
| int limite = instance.getNoPaginas() * Cuaderno.NO_LINEAS; | |
| assertEquals(true, instance.escribir("otra prueba")); | |
| for(int i=1;i<limite-1;i++){ | |
| instance.escribir("prueba"); | |
| } | |
| assertEquals(true, instance.escribir("otra prueba")); | |
| assertEquals(false, instance.escribir("otra prueba")); | |
| } | |
| /** | |
| * Test of escribir method, of class Cuaderno. | |
| */ | |
| public void testEscribir_String_int() { | |
| System.out.println("escribir"); | |
| Cuaderno instance = new Cuaderno(10, "prueba"); | |
| int limite = 10 * Cuaderno.NO_LINEAS; | |
| /*0. Probar que sí deja escribir en posiciones existentes*/ | |
| assertTrue(instance.escribir("prueba", 0)); | |
| /*1. Probar que no deja escribir en renglones negativos*/ | |
| assertFalse(instance.escribir("prueba", -1)); | |
| /*2. Probar que no deja sobrepasar el límite*/ | |
| assertFalse(instance.escribir("prueba", instance.getNoPaginas()+1)); | |
| /*3. Probar que no deja sobreescribir: llenemos una página*/ | |
| for(int i=0; i < Cuaderno.NO_LINEAS; i++ ) | |
| instance.escribir("prueba", 5); | |
| assertFalse(instance.escribir("prueba", 5)); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment