Commits

Hector Miuler Malpica Gallegos committed b7e0f56

Listo las primeras pruebas unitarias, continuando con las demás especificaciones.

Comments (0)

Files changed (2)

src/main/scala/com/mdp/potter/LibrosPotter.scala

 class LibrosPotter {
   
   private var libros = Map[Int, Int]()
+  private var canasta = Map[Int, Int](1->0, 2->0, 3->0, 4->0, 5->0, 6->0, 7->0)
   
-  private var canasta7 = 0
+  private var canasta2 = 0.0
+  private var canasta1 = 0.0
   
   def libro1 = libros(1)
   def libro1_= (cantidad:Int):Unit = libros += 1 -> cantidad
   def libro7 = libros(7)
   def libro7_= (cantidad:Int):Unit = libros += 7 -> cantidad
   
+  
+  def costo = {
+    var _libros = Map[Int, Int]()
+    _libros ++= libros
 
-  def costo = {
-    var costo = 0
-    for (key <- libros.keys)
-      costo += libros(key) * 8
-    costo
+    _libros = cantidadLibros(2, _libros)
+    _libros = cantidadLibros(1, _libros)
+    
+    println("canasta1 cantidad: ", canasta1, " valor total: ", canasta1*8)
+    println("canasta2 cantidad: ", canasta2, " valor total: ", canasta2*2*8*0.95)
+    println("TOTAL : ", canasta2*2*8*0.95 + canasta1*8)
+    println("")
+    
+    canasta(2)*2*8*0.95 + canasta(1)*8
   }
   
-  private def llenarCanasta {
-    
-  }
-  
-  private def llenarCanasta7 {
-    if (libros(1) > 0 && libros(2) > 0 && libros(3) > 0 && libros(4) > 0 && libros(5) > 0 && libros(6) > 0 && libros(7) > 0) {
-      canasta7 += 1
+  private def cantidadLibros(coleccion:Int, _libros:Map[Int, Int]):Map[Int, Int] = {
+    if (_libros.keys.size==coleccion) {
+      canasta = canasta.updated(coleccion, canasta(coleccion)+1)
+      cantidadLibros(coleccion, _libros map(value => { value._1 -> (value._2-1) } ) filter(value => value._2>0))
+    } else {
+      _libros
     }
   }
   
-  private def llenarCanasta6 {
-    var diferentes = 0
-  }
-  
 }

src/test/scala/com/mdp/potter/PotterTest.scala

 import org.specs2.Specification
 import org.junit.runner.notification.Failure
 
+
 @RunWith(classOf[JUnitRunner])
 class PotterTest extends Specification { def is = 
 
       "Libro3 cuesta 8$"                                                        ! e13^
                                                                                 p^
     "Si compras 2 libros diferentes tienes un 5% de descuento"                  ^
-      "Compro libro1 y libro2, debe de costar 15.2"                             ! e2^
+      "Compro libro1 y libro2, debe de costar 15.2"                             ! e21^
+      "Compro 2 libros1 y 3 libro2, debe de costar 38,4"                        ! e22^
+      "Compro 2 libros1 y 4 libro3, debe de costar 46,4"                        ! e23^
+      "Compro 2 libros3 y 4 libro7, debe de costar 46,4"                        ! e24^
                                                                                 p^
-    "Si compras 3 libros diferentes tienes un 10% de descuento"                 ! todo^
+    "Si compras 3 libros diferentes tienes un 10% de descuento"                 ^
+      "Compro 2 libros1, 4 libro2 y 2 libro3, debe de costar 46,4"              ! e31^
                                                                                 p^
     "si compras 4 libros diferentes tienes un 15% de descuento"                 ! todo^
                                                                                 p^
     libros.costo must_== 8
   }
 
-  def e2 = {
+  def e21 = {
     val libros = new LibrosPotter
     libros.libro1 = 1
     libros.libro2 = 1
     libros.costo must_== 15.2
   }
+  
+  def e22 = {
+    println("\n\n")
+    val libros = new LibrosPotter
+    libros.libro1 = 2
+    libros.libro2 = 3
+    libros.costo must_== 38.4
+  }
+  
+  def e23 = {
+    println("\n\n")
+    val libros = new LibrosPotter
+    libros.libro1 = 2
+    libros.libro3 = 4
+    libros.costo must_== 46.4
+  }
+  
+  def e24 = {
+    println("\n\n")
+    val libros = new LibrosPotter
+    libros.libro3 = 2
+    libros.libro7 = 4
+    libros.costo must_== 46.4
+  }
+  
+  def e31 = {
+    println("\n\n")
+    val libros = new LibrosPotter
+    libros.libro1 = 2
+    libros.libro2 = 4
+    libros.libro3 = 3
+    libros.costo must_== 46.4
+  }
 }