
package bbuvajava;

import java.util.ArrayList;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

public class ProductoTest {

    public ProductoTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }

    @Before
    public void setUp() {
       
    }

    @After
    public void tearDown() {
    }

    @Test
    public void testGetMovimiento() {
        System.out.println("getMovimiento");
        Producto instance = new Producto();
        Movimiento a=new Movimiento();
        ArrayList<Movimiento> expResult = new ArrayList();
        ArrayList<Movimiento> result = (ArrayList<Movimiento>) instance.getMovimiento();
        assertEquals(expResult, result);
    }

    @Test
    public void testSetMovimiento() {
        System.out.println("setMovimiento");
        ArrayList<Movimiento> val = new ArrayList();
        Producto instance = new Producto();
        instance.setMovimiento(val);
    }

 
    @Test
    public void testGetNumeroProducto() {
        System.out.println("getNumeroProducto");
        Producto instance = new Producto();
        instance.setNumeroProducto("12");
        String expResult = "12";
        String result = instance.getNumeroProducto();
        assertEquals(expResult, result);

    }

    @Test
    public void testSetNumeroProducto() {
        System.out.println("setNumeroProducto");
        Producto instance = new Producto();
        instance.setNumeroProducto("12");
        String expResult="12";
        assertEquals(expResult, instance.getNumeroProducto());
    }

    @Test
    public void testAnadirMovimiento() {
        System.out.println("anadirMovimiento");
        Movimiento M = null;
        Producto instance = new Producto();
        instance.anadirMovimiento(M);
        int expResult=1;
        assertEquals(expResult, instance.getMovimiento().size());
        
    }

 
   @Test
    public void testIngreso() {
        System.out.println("ingreso");
        Producto c = new Producto();
        c.setSaldo(50);
        c.ingreso(50);
        assertTrue(c.getSaldo()==100);
        c.setSaldo(0);
        c.ingreso(50);
        assertTrue(c.getSaldo()==50);
        c.setSaldo(50);
        c.ingreso(0);
        assertTrue(c.getSaldo()==50);
        c.setSaldo(0);
        c.ingreso(-50);
        assertTrue(c.getSaldo()==0);
    }


    @Test
    public void testReintegro() {
        System.out.println("reintegro");
        Producto c = new Producto();
        c.setSaldo(50);
        c.reintegro(50);
        assertTrue(c.getSaldo()==0);
        c.setSaldo(50);
        c.reintegro(0);
        assertTrue(c.getSaldo()==50);
        c.setSaldo(50);
        c.reintegro(100);
        assertTrue(c.getSaldo()==50);
        c.setSaldo(50);
        c.reintegro(-50);
        assertTrue(c.getSaldo()==50);
        
    }

    @Test
    public void testCargo() {
        System.out.println("cargo");
        OPRemesa c = new OPRemesa();
        c.setImporte(70);
        Producto p = new Producto();
        p.setSaldo(70);
        p.cargo(c);
        int experado=1;
        int real=p.getMovimiento().size();
        assertTrue(p.getSaldo()==0);
        assertEquals(experado,real);
    }

 
    @Test
    public void testAbono() {
        System.out.println("abono");
        OPRemesa c = new OPRemesa();
        c.setImporte(70);
        Producto p = new Producto();
        p.setSaldo(70);
        p.abono(c);
        int experado=1;
        int real=p.getMovimiento().size();
        assertTrue(p.getSaldo()==140);
        assertEquals(experado,real);
    }


    @Test
    public void testGetSaldo() {
        System.out.println("getSaldo");
        Producto instance = new Producto();
        instance.setSaldo(5);
        float real = instance.getSaldo();
        assertTrue (real==5);
        
    }


    @Test
    public void testSetSaldo() {
        System.out.println("setSaldo");
        float saldo = 5;
        Producto p = new Producto();
        p.setSaldo(saldo);
        float real = p.getSaldo();
        assertTrue (real==5);

        
    }


    @Test
    public void testDecrementoSaldo() {
        System.out.println("decrementoSaldo");
        Producto c = new Producto();
        c.setSaldo(50);
        c.decrementoSaldo(50);
        assertTrue(c.getSaldo()==0);
        c.setSaldo(50);
        c.decrementoSaldo(0);
        assertTrue(c.getSaldo()==50);
        c.setSaldo(50);
        c.decrementoSaldo(100);
        assertTrue(c.getSaldo()==50);
        c.setSaldo(50);
        c.decrementoSaldo(-50);
        assertTrue(c.getSaldo()==50);
    }


    @Test
    public void testIncrementoSaldo() {
        System.out.println("incrementoSaldo");
        Producto c = new Producto();
        c.setSaldo(50);
        c.incrementoSaldo(50);
        assertTrue(c.getSaldo()==100);
        c.setSaldo(50);
        c.incrementoSaldo(0);
        assertTrue(c.getSaldo()==50);
        c.setSaldo(50);
        c.incrementoSaldo(-50);
        assertTrue(c.getSaldo()==50);
    }


    @Test
    public void testInsertaTitularenProducto() {
        System.out.println("insertaTitularenProducto");
        Cliente c1 = new Cliente();
        Producto p = new Producto();
        p.insertaTitularenProducto(c1);
        assertTrue(p.getMTitulares().size()==1);
        
    }


    @Test
    public void testMostrar_nmovimientos() {
        System.out.println("mostrar_nmovimientos");
        int num = 0;
        Producto p = new Producto();
        String expResult = "";
        String result = p.mostrar_nmovimientos(num);
        assertEquals(expResult, result);
        num=1;
        expResult = "No hay ningun movimiento en la cuenta.";
        result = p.mostrar_nmovimientos(num);
        assertEquals(expResult, result);
    }


    @Test
    public void testGetMTitulares() {
        System.out.println("getMTitulares");
        Producto instance = new Producto();
        ArrayList<Cliente> expResult = new ArrayList();
        ArrayList<Cliente> result = (ArrayList<Cliente>) instance.getMTitulares();
        assertEquals(expResult, result);
        
    }


    @Test
    public void testSetMTitulares() {
        System.out.println("setMTitulares");
        ArrayList<Cliente> mTitulares = new ArrayList();
        Producto instance = new Producto();
        instance.setMTitulares(mTitulares);
    }


    @Test
    public void testAnadirDomicializacion() {
        System.out.println("anadirDomicializacion");
        Domicializacion D = null;
        Producto p = new Producto();
        p.anadirDomicializacion(D);
        assertEquals(1,p.getMDomicializaciones().size());
    }

    @Test
    public void testMostrar_domicializaciones() {
        System.out.println("mostrar_domicializaciones");
        Producto instance = new Producto();
        String expResult = "\n\tEsta cuenta no tiene domicializaciones.";
        String result = instance.mostrar_domicializaciones();
        assertEquals(expResult, result);
    }


    @Test
    public void testGet_Movimiento() {
        System.out.println("get_Movimiento");
        int n = -1;
        Producto p = new Producto();
        Movimiento expResult = null;
        Movimiento result = p.get_Movimiento(n);
        assertEquals(expResult, result);
        n=0;
        result = p.get_Movimiento(n);
        assertEquals(expResult, result);
        n=1;
        result = p.get_Movimiento(n);
        assertEquals(expResult, result);
    }

}