<repo_name>casatom/Macowins<file_sep>/src/main/java/Venta/Negocio.java
package Venta;

import java.time.LocalDate;
import java.util.Collections;
import java.util.List;

public class Negocio {
    private List<Venta> ventas;

    public Double gananciasDe(LocalDate fecha){
        return ventas.stream().filter(v->v.esDeFecha(fecha)).mapToDouble(v->v.importe()).sum();
    }

    public Negocio(List<Venta> ventas) {
        this.ventas = ventas;
    }

    public Negocio(Venta  ... ventas) {
        Collections.addAll(this.ventas,ventas);
    }
}
<file_sep>/src/main/java/Venta/Tarjeta.java
package Venta;

public class Tarjeta extends Venta{
    private Integer cantudadCuotas;
    private Double coeficienteTarjeta;

    @Override
    public Double importe(){
        return coeficienteTarjeta*cantudadCuotas + 0.01*super.importe() + super.importe();
    }
}
<file_sep>/src/test/java/Estado/PromocionTest.java
package Estado;

import org.junit.Assert;
import org.junit.Test;

public class PromocionTest {

    public Double delta = new Double(1e-15);

    @Test
    public void evaluarPromocion(){
        Promocion promo = new Promocion(70);

        Assert.assertEquals(500.0, promo.precioFinal(570.0),delta);
    }

    @Test
    public void evaluarSobrePromocion(){
        Promocion promo = new Promocion(70);

        Assert.assertEquals(0.0, promo.precioFinal(50.0),delta);
    }


}
<file_sep>/src/test/java/Item/PrendaTest.java
package Item;

import Estado.Liquidacion;
import Estado.Nueva;
import Estado.Promocion;
import org.junit.Assert;
import org.junit.Test;

public class PrendaTest {
    public Double delta = new Double(1e-15);

    @Test
    public void evaluarPrenda(){
        //Evaluamos que prendas que solo cambien su estado cambien de precio
        Prenda prenda1 = new Prenda(new Promocion(50),300.0,TipoItem.SACO);
        Prenda prenda2 = new Prenda(new Liquidacion(),300.0,TipoItem.SACO);
        Prenda prenda3 = new Prenda(new Liquidacion(25.0),300.0,TipoItem.SACO);
        Prenda prenda4 = new Prenda(new Nueva(),300.0,TipoItem.SACO);

        Assert.assertEquals(250.0,prenda1.precio(),delta);
        Assert.assertEquals(150.0,prenda2.precio(),delta);
        Assert.assertEquals(225.0,prenda3.precio(),delta);
        Assert.assertEquals(300.0,prenda4.precio(),delta);

    }

    //TODO ver que test faltan

}
