Atributos: @test y @derive

Los atributos son anotaciones que se escriben con @ sobre funciones, clases o campos. Forja incluye soporte para tests integrados y derivación automática de comportamientos.

@test

Marca una función como test. Podés agrupar tests en un archivo y ejecutarlos con forja test archivo.fa.

🧪 Tests
@test
funcion test_suma() {
    asegurar(suma(2, 3) == 5)
    asegurar(suma(-1, 1) == 0)
}

@test
funcion test_resta() {
    asegurar(resta(10, 3) == 7)
}

@derive

Deriva implementaciones automáticas para clases (similar a Rust). Actualmente soporta:

DeriveDescripción
MostrarImplementa formato legible en strings
IgualImplementa == y !=
🏷️ Derive
@derive(Mostrar, Igual)
clase Punto {
    x
    y
    constructor(x, y) {
        este.x = x
        este.y = y
    }
}

variable a = nuevo Punto(1, 2)
variable b = nuevo Punto(1, 2)
asegurar(a == b) // Igual deriva ==

Uso combinado

🧪 + 🏷️
@derive(Mostrar, Igual)
clase Usuario {
    nombre
    edad
    constructor(nombre, edad) {
        este.nombre = nombre
        este.edad = edad
    }
}

@test
funcion test_usuario() {
    variable u1 = nuevo Usuario("Ana", 30)
    variable u2 = nuevo Usuario("Ana", 30)
    asegurar(u1 == u2)
}