Skip to content
This repository was archived by the owner on Sep 26, 2022. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/experimentos/experimento.wlk
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import materiales.material.*

// TODO Esta clase (y sus subclases) mezcla dos conceptos: los experimentos y sus resultados.
// Eso hace que el experimento no se puede hacer más de una vez.
class Experimento inherits Material{

var componentes = []
Expand All @@ -13,6 +15,8 @@ class Experimento inherits Material{

method materialesQueRequiere(mochila)

// TODO No parece estar bien esta lógica. Si yo pido materiales que requiere y no los puede
// obtener, debería tirar excepción, devolver una colección vacía es propenso a errores.
method cumpleRequisitos(mochila) = self.materialesQueRequiere(mochila).size()>0

method realizar(unRick){
Expand Down
4 changes: 3 additions & 1 deletion src/materiales/cable.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ class Cable inherits Material{
override method cuantaElectricidadConduce(){
return 3 * seccion
}


// TODO En realidad está mal el enunciado, pero para pasar de metros a centímetros
// hay que dividir por cien, no por mil.
override method cantidadDeMetal() = longitud / 1000 * seccion

}
2 changes: 2 additions & 0 deletions src/materiales/materia_oscura.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,15 @@ class MateriaOscura inherits Material{
}

override method cuantaElectricidadConduce(){
// TODO Este if no parece necesario.
if (materialBase.puedeConducirElectricidad()){
return materialBase.cuantaElectricidadConduce() / 2
}
return 0
}

override method cuantaElectricidadGenera(){
// TODO Este if no parece necesario.
if (materialBase.puedeGenerarElectricidad()){
return materialBase.cuantaElectricidadGenera() * 2
}
Expand Down
3 changes: 3 additions & 0 deletions src/materiales/material.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@ class Material{

method energiaQueResta() = self.cantidadDeMetal()

// TODO NO, esto no es correcto :)
method cantidadDeMetal()= self.cantidadDeMetal() //Revisemos si es correcto

// TODO Creo que no es necesario modificar la energía del personaje, si el Material puede
// devolver la energía que resta con eso es suficiente y quedaría menos acoplado.
method modificarEnergiaDe (unPersonaje) {
unPersonaje.energia(unPersonaje.energia()-self.energiaQueResta())
}
Expand Down
6 changes: 6 additions & 0 deletions src/rick.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,13 @@ object rick {
method puedeRealizarExperimento(unExperimento) = self.experimentosQuePuedeRealizar().contains(unExperimento)

method realizar(unExperimento){
// TODO mal indentado
unExperimento.realizar(self)
}

// TODO Este método me da desconfianza, guardarEnMochila y recibir son muy parecidos...
// si queremos dejar los dos por comodidad de uso, al menos deberíamos ponerles nombres que indiquen que son lo mismo con uno o muchos elementos.
// O si significan algo distinto deberíamos aclararlo.
method guardarEnMochila(unMaterial){
self.recibir([unMaterial])
}
Expand All @@ -38,7 +42,9 @@ object rick {

method companiero() = companiero

// TODO De nuevo quitarDeLaMochila y quitarElementoDeLaMochila son muy parecidos y no es clara la diferencia.
method quitarDeLaMochila(elementos){
// TODO Más fácil usando removeAll()
elementos.forEach({elem => self.quitarElementoDeMochila(elem)})
}

Expand Down
64 changes: 1 addition & 63 deletions src/test/parte2.wtest
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import materiales.cable.*
import materiales.materia_oscura.*


// TODO Sería mejor buscar una mejor forma de organizar los tests en distintos describes.
describe "Tests parte 2"{


Expand Down Expand Up @@ -48,68 +48,6 @@ describe "Tests parte 2"{
assert.that(rick.mochila().contains(circuito))
}

test "Bateria: Realizar"{
var cable1 = new Cable(10,2)
var lata1 = new Lata(300)
rick.recibir([cable1,lata1])
assert.equals(2,rick.mochila().size())
bateria.realizar(rick)
assert.equals(2,rick.mochila().size())
assert.that(rick.mochila().contains(cable1))
assert.that(rick.mochila().contains(bateria))
}

test "Rick: quitarDeLaMochila"{
var cable1 = new Cable(10,2)
var lata1 = new Lata(100)
var materiaOscura = new MateriaOscura(lata1)
rick.recibir([cable1,lata1,materiaOscura])
rick.quitarDeLaMochila([cable1,materiaOscura])
assert.equals(1,rick.mochila().size())
assert.that(rick.mochila().contains(lata1))
}

test "Rick: experimentosQueSabeHacer"{
assert.equals(#{circuito,bateria,shock},rick.experimentosQueSabeHacer())
}

test "Rick: materialesQueRequiere"{
var unCable = new Cable(10,2)
var mochila = [new Lata(10),unCable]
rick.recibir(mochila)
assert.equals([unCable],circuito.materialesQueRequiere(mochila))

}
test "Rick: Experimentos que PUEDE hacer NINGUNO"{
var mochila = []
rick.recibir(mochila)
assert.equals(#{},rick.experimentosQuePuedeRealizar())

}


test "Rick: Realizar experimento bateria"{
var cable1 = new Cable(10,5)
var lata1 = new Lata(300)
var materiaOscura = new MateriaOscura(new Cable(5,3))

rick.recibir([cable1,lata1,materiaOscura])
assert.equals(3,rick.mochila().size())
rick.realizar(bateria)
assert.equals(3,rick.mochila().size())
}

test "Rick: Realizar experimento circuito"{
var cable1 = new Cable(10,5)

var materiaOscura = new MateriaOscura(new Cable(5,3))

rick.recibir([cable1,materiaOscura])
assert.equals(2,rick.mochila().size())
rick.realizar(circuito)

assert.equals(2,rick.mochila().size())
}


}
74 changes: 74 additions & 0 deletions src/test/parte2Rick.wtest
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import experimentos.circuito.*
import experimentos.bateria.*
import experimentos.shock.*
import rick.*
import materiales.lata.*
import materiales.cable.*
import materiales.materia_oscura.*


describe "Test Parte 2: Rick"{
test "Bateria: Realizar"{
var cable1 = new Cable(10,2)
var lata1 = new Lata(300)
rick.recibir([cable1,lata1])
assert.equals(2,rick.mochila().size())
bateria.realizar(rick)
assert.equals(2,rick.mochila().size())
assert.that(rick.mochila().contains(cable1))
assert.that(rick.mochila().contains(bateria))
}

test "Rick: quitarDeLaMochila"{
var cable1 = new Cable(10,2)
var lata1 = new Lata(100)
var materiaOscura = new MateriaOscura(lata1)
rick.recibir([cable1,lata1,materiaOscura])
rick.quitarDeLaMochila([cable1,materiaOscura])
assert.equals(1,rick.mochila().size())
assert.that(rick.mochila().contains(lata1))
}

test "Rick: experimentosQueSabeHacer"{
assert.equals(#{circuito,bateria,shock},rick.experimentosQueSabeHacer())
}

test "Rick: materialesQueRequiere"{
var unCable = new Cable(10,2)
var mochila = [new Lata(10),unCable]
rick.recibir(mochila)
assert.equals([unCable],circuito.materialesQueRequiere(mochila))

}
test "Rick: Experimentos que PUEDE hacer NINGUNO"{
var mochila = []
rick.recibir(mochila)
assert.equals(#{},rick.experimentosQuePuedeRealizar())

}


test "Rick: Realizar experimento bateria"{
var cable1 = new Cable(10,5)
var lata1 = new Lata(300)
var materiaOscura = new MateriaOscura(new Cable(5,3))

rick.recibir([cable1,lata1,materiaOscura])
assert.equals(3,rick.mochila().size())
rick.realizar(bateria)
assert.equals(3,rick.mochila().size())
}

test "Rick: Realizar experimento circuito"{
var cable1 = new Cable(10,5)

var materiaOscura = new MateriaOscura(new Cable(5,3))

rick.recibir([cable1,materiaOscura])
assert.equals(2,rick.mochila().size())
rick.realizar(circuito)

assert.equals(2,rick.mochila().size())
}

}
4 changes: 4 additions & 0 deletions src/test/test.wtest
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,19 @@ import materiales.cable.*


test "Morty puede recolectar una lata"{
// TODO ???
morty
var lata = new Lata (30)
assert.that(morty.puedeRecolectar(lata))
}

test "Morty recolecta un cable"{
// TODO ???
morty
var cable = new Cable (30,10)
assert.that(morty.puedeRecolectar(cable))

// TODO Pudieron resolver esto? Por qué no anduvo? No dejemos código comentado.
// Como validar que no arroja una excepcion? => Validamos lo que agregamos a la mochila de rick
//assert.throwsExceptionWithMessage("NO PUEDE RECOLECTAR ESTE MATERIAL", {morty.recolectar(material)})
}
Expand Down