-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 9c0c82d
Showing
9 changed files
with
386 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
name: build | ||
|
||
on: [push, pull_request] | ||
jobs: | ||
wollok-ts: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: | | ||
wget -O wollok-ts-cli https://github.com/uqbar-project/wollok-ts-cli/releases/latest/download/wollok-ts-cli-linux-x64 | ||
chmod a+x ./wollok-ts-cli | ||
./wollok-ts-cli test --skipValidations -p ./ | ||
shell: bash |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
|
||
# Local history | ||
.history | ||
|
||
# Wollok Log | ||
*.log |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
|
||
|
||
## example | ||
|
||
TODO | ||
|
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
import colores.* | ||
|
||
object dominic{ | ||
|
||
const autos = [] | ||
|
||
method comprar(auto){ | ||
autos.add(auto) | ||
} | ||
method finDeTemporada(){ | ||
autos.clear() | ||
} | ||
method promedioVelocidades() = | ||
autos.sum({auto=> auto.velocidadMaxima()}) / autos.size() | ||
|
||
method masRapido() = | ||
self.autosEnCondiciones().max{auto=> auto.velocidadMaxima()} | ||
|
||
method autosEnCondiciones() = | ||
autos.filter{auto=>auto.enCondiciones()} | ||
|
||
method autosNoEnCondiciones() = | ||
autos.filter{auto=>not auto.enCondiciones()} | ||
|
||
method hayUnAutoMuyRapido() = | ||
self.masRapido().velocidadMaxima() > 2 * self.promedioVelocidades() | ||
|
||
method hacerPrueba(){ | ||
autos.forEach({auto=>auto.hacerPrueba()}) | ||
} | ||
|
||
method mandarAlTaller(){ | ||
taller.recibirAutos(self.autosNoEnCondiciones()) | ||
} | ||
} | ||
|
||
object taller { | ||
const autos = [] | ||
|
||
method recibirAutos(nuevos){ | ||
autos.addAll(nuevos) | ||
} | ||
|
||
method trabajar(){ | ||
autos.forEach{auto=>auto.reparar()} | ||
} | ||
|
||
} | ||
|
||
class Ferrari { | ||
// Tiene un motor que está inicialmente está funcionando en un 87% (puede oscilar entre 0 y 100%). | ||
var motor = 87 | ||
|
||
//El problema es que al hacer una prueba de velocidad su motor se daña | ||
//disminuyendo en 30 unidades su nivel funcionamiento actual. | ||
method pruebaVelocidad(){ | ||
motor = (motor - 30).max(0) | ||
} | ||
//Está en condiciones para correr si el motor esta funcionando en al menos un 65%. | ||
method enCondiciones() = motor >= 65 | ||
|
||
//Al reparar el motor, queda funcionando al 100%. | ||
method reparar() { | ||
motor = 100 | ||
} | ||
|
||
//Su velocidad máxima es 110 km/s, | ||
//más 15 km/s adicionales si el motor está funcionando por encima del 75%. | ||
method velocidadMaxima() = 110 + if (motor > 75) 15 else 0 | ||
|
||
|
||
} | ||
|
||
object gasolina{ | ||
method nivelMinimo() = 85 | ||
method modificarVelocidad(litros)= litros + 10 | ||
} | ||
|
||
object nafta{ | ||
method nivelMinimo() = 50 | ||
method modificarVelocidad(litros)= litros * 0.9 | ||
} | ||
|
||
object nitro{ | ||
method nivelMinimo() = 0 | ||
method modificarVelocidad(litros)= litros * 10 | ||
} | ||
|
||
class AutoCombustible { | ||
//Tiene un nivel de combustible inicial de 100 litros. | ||
//Inicialmente se trata de gasolina, pero puede cambiar su combustible por nafta o nitrógeno líquido. | ||
//El color inicial es azul. | ||
var color = azul | ||
var nivel = 100 | ||
var property combustible = gasolina | ||
|
||
// En la prueba de velocidad el auto consume 5 litros del combustible que sea. | ||
method pruebaVelocidad(){ | ||
nivel = nivel - 5 | ||
} | ||
//Está en condiciones si tiene más de 85 litros de gasolina o 50 litros de nafta. | ||
//En caso de que esté cargado con nitrógeno líquido, con que no esté totalmente vacío es suficiente. | ||
//Además, para poder correr debe estar pintado de rojo. | ||
|
||
method enCondiciones() = nivel > combustible.nivelMinimo() and color == rojo | ||
|
||
//En el taller la reparación consiste en duplicar la cantidad de combustible que tenga y en cambiarle su color. | ||
//Cuando su color es rojo cambia a azul, cuando es azul cambia a verde y cuando es verde cambia a rojo. | ||
|
||
method reparar() { | ||
nivel = nivel * 2 | ||
color = color.aCualCambia() | ||
} | ||
|
||
//Su velocidad máxima en principio es el doble de los litros de combustible que tenga, | ||
//pero tambíen depende de que combustible sea. | ||
//Si es gasolina se le agregan 10 km/s, | ||
//si es nafta se pierde un 10% y | ||
//si es nitrógeno líquido se multiplica por 10. | ||
method velocidadMaxima() = combustible.modificarVelocidad(nivel * 2) | ||
|
||
} | ||
|
||
object intocable{ | ||
var enCondiciones = true | ||
|
||
method pruebaVelocidad(){ | ||
enCondiciones = false | ||
} | ||
method enCondiciones() = enCondiciones | ||
|
||
method reparar() { | ||
enCondiciones = true | ||
} | ||
|
||
method velocidadMaxima() = 45 | ||
|
||
} | ||
|
||
|
||
|
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
import colores.* | ||
object dominic{ | ||
|
||
const autos = [] | ||
|
||
method comprar(auto){ | ||
autos.add(auto) | ||
} | ||
method finDeTemporada(){ | ||
autos.clear() | ||
} | ||
method promedioVelocidades() = | ||
autos.sum({auto=> auto.velocidadMaxima()}) / autos.size() | ||
|
||
method masRapido() = | ||
self.autosEnCondiciones().max{auto=> auto.velocidadMaxima()} | ||
|
||
method autosEnCondiciones() = | ||
autos.filter{auto=>auto.enCondiciones()} | ||
|
||
method autosNoEnCondiciones() = | ||
autos.filter{auto=>not auto.enCondiciones()} | ||
|
||
method hayUnAutoMuyRapido() = | ||
self.masRapido().velocidadMaxima() > 2 * self.promedioVelocidades() | ||
|
||
method hacerPrueba(){ | ||
autos.forEach({auto=>auto.hacerPrueba()}) | ||
} | ||
|
||
method mandarAlTaller(){ | ||
taller.recibirAutos(self.autosNoEnCondiciones()) | ||
} | ||
} | ||
|
||
object taller { | ||
const autos = [] | ||
|
||
method recibirAutos(nuevos){ | ||
autos.addAll(nuevos) | ||
} | ||
|
||
method trabajar(){ | ||
autos.forEach{auto=>auto.reparar()} | ||
} | ||
} | ||
|
||
object ferrari { | ||
// Tiene un motor que está inicialmente está funcionando en un 87% (puede oscilar entre 0 y 100%). | ||
var motor = 87 | ||
|
||
//El problema es que al hacer una prueba de velocidad su motor se daña | ||
//disminuyendo en 30 unidades su nivel funcionamiento actual. | ||
method pruebaVelocidad(){ | ||
motor = (motor - 30).max(0) | ||
} | ||
//Está en condiciones para correr si el motor esta funcionando en al menos un 65%. | ||
method enCondiciones() = motor >= 65 | ||
|
||
//Al reparar el motor, queda funcionando al 100%. | ||
method reparar() { | ||
motor = 100 | ||
} | ||
|
||
//Su velocidad máxima es 110 km/s, | ||
//más 15 km/s adicionales si el motor está funcionando por encima del 75%. | ||
method velocidadMaxima() = 110 + if (motor > 75) 15 else 0 | ||
} | ||
|
||
object gasolina{ | ||
method nivelMinimo() = 85 | ||
method modificarVelocidad(litros)= litros + 10 | ||
} | ||
|
||
object nafta{ | ||
method nivelMinimo() = 50 | ||
method modificarVelocidad(litros)= litros * 0.9 | ||
} | ||
|
||
object nitro{ | ||
method nivelMinimo() = 0 | ||
method modificarVelocidad(litros)= litros * 10 | ||
} | ||
|
||
object flecha { | ||
//Tiene un nivel de combustible inicial de 100 litros. | ||
//Inicialmente se trata de gasolina, pero puede cambiar su combustible por nafta o nitrógeno líquido. | ||
//El color inicial es azul. | ||
var color = azul | ||
var nivel = 100 | ||
var property combustible = gasolina | ||
|
||
// En la prueba de velocidad el auto consume 5 litros del combustible que sea. | ||
method pruebaVelocidad(){ | ||
nivel = nivel - 5 | ||
} | ||
//Está en condiciones si tiene más de 85 litros de gasolina o 50 litros de nafta. | ||
//En caso de que esté cargado con nitrógeno líquido, con que no esté totalmente vacío es suficiente. | ||
//Además, para poder correr debe estar pintado de rojo. | ||
|
||
method enCondiciones() = nivel > combustible.nivelMinimo() and color == rojo | ||
|
||
//En el taller la reparación consiste en duplicar la cantidad de combustible que tenga y en cambiarle su color. | ||
//Cuando su color es rojo cambia a azul, cuando es azul cambia a verde y cuando es verde cambia a rojo. | ||
|
||
method reparar() { | ||
nivel = nivel * 2 | ||
color = color.aCualCambia() | ||
} | ||
|
||
//Su velocidad máxima en principio es el doble de los litros de combustible que tenga, | ||
//pero tambíen depende de que combustible sea. | ||
//Si es gasolina se le agregan 10 km/s, | ||
//si es nafta se pierde un 10% y | ||
//si es nitrógeno líquido se multiplica por 10. | ||
method velocidadMaxima() = combustible.modificarVelocidad(nivel * 2) | ||
|
||
} | ||
|
||
object intocable{ | ||
var enCondiciones = true | ||
|
||
method pruebaVelocidad(){ | ||
enCondiciones = false | ||
} | ||
method enCondiciones() = enCondiciones | ||
|
||
method reparar() { | ||
enCondiciones = true | ||
} | ||
|
||
method velocidadMaxima() = 45 | ||
|
||
} | ||
*/ |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
|
||
object azul{ | ||
method aCualCambia() = verde | ||
} | ||
object rojo{ | ||
method aCualCambia() = azul | ||
} | ||
object verde{ | ||
method aCualCambia() = rojo | ||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"name": "primerparcial", | ||
"version": "1.0.0", | ||
"wollokVersion": "4.0.0", | ||
"author": "lucas", | ||
"license": "ISC" | ||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
import autos-Clases.* | ||
import colores.* | ||
|
||
describe "group of tests for dominic" { | ||
|
||
test "dominic velocidad promedio con un auto" { | ||
dominic.comprar(intocable) | ||
assert.equals(45, dominic.promedioVelocidades()) | ||
} | ||
|
||
test "auto en condiciones mas rapido de dominic es ferrari cuando la flecha no esta en condiciones" { | ||
const unaFerrari = new Ferrari() | ||
dominic.comprar(intocable) | ||
dominic.comprar(unaFerrari) | ||
dominic.comprar(new Ferrari(motor = 10)) | ||
dominic.comprar(new AutoCombustible()) | ||
assert.equals(unaFerrari, dominic.masRapido()) | ||
} | ||
test "auto en condiciones mas rapido de dominic es flecha cuando la flecha esta en condiciones" { | ||
const flecha = new AutoCombustible(color=rojo, combustible = nitro) | ||
|
||
dominic.comprar(intocable) | ||
dominic.comprar(new Ferrari()) | ||
dominic.comprar(flecha) | ||
dominic.comprar( new AutoCombustible(color=rojo, combustible = nafta)) | ||
dominic.comprar( new AutoCombustible(color=rojo, combustible = gasolina)) | ||
|
||
assert.equals(flecha, dominic.masRapido()) | ||
} | ||
test "no hay un auto muy rapido " { | ||
dominic.comprar(intocable) | ||
assert.notThat(dominic.hayUnAutoMuyRapido()) | ||
} | ||
|
||
|
||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
|
||
import autos.* | ||
|
||
describe "group of tests for dominic" { | ||
|
||
test "dominic velocidad promedio con un auto" { | ||
dominic.comprar(intocable) | ||
assert.equals(45, dominic.promedioVelocidades()) | ||
} | ||
|
||
test "auto en condiciones mas rapido de dominic es ferrari cuando la flecha no esta en condiciones" { | ||
dominic.comprar(intocable) | ||
dominic.comprar(ferrari) | ||
dominic.comprar(flecha) | ||
assert.equals(ferrari, dominic.masRapido()) | ||
} | ||
test "auto en condiciones mas rapido de dominic es flecha cuando esta en condiciones" { | ||
dominic.comprar(intocable) | ||
dominic.comprar(ferrari) | ||
dominic.comprar(flecha) | ||
flecha.reparar() | ||
flecha.reparar() | ||
assert.equals(flecha, dominic.masRapido()) | ||
} | ||
test "no hay un auto muy rapido " { | ||
dominic.comprar(intocable) | ||
assert.notThat(dominic.hayUnAutoMuyRapido()) | ||
} | ||
|
||
|
||
} |