gioser

tawasuyu/llimphi

Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.

Rust 660Markdown 302TOML 157RON 312382 Sutichaykuna

⎇ main llimphi-voxel/tests/nacimiento.rs Rust · 49 siq'ikuna · 2.2 KB Ñawpa willay Pi imata llamkarqan ch'uya

chore: refresco desde el monorepo — 27 crates nuevos (anim, lottie, svg, mesh, image, layer, test, wire-view, widgets rag-sidebar/router/lazy-list/rive-button) y sync de los 95 existentes 93253cc22 · Sergio ·

1// =============================================================================
2//  llimphi-voxel :: tests/nacimiento — la escena del nacimiento (artefacto #1)
3// -----------------------------------------------------------------------------
4//  Certifica el primer artefacto de la colaboración: el desierto vacío + la
5//  cámara PURA que cae desde el negro entre mucha bruma. Íntegro, sin cuerpo, y
6//  viaja por archivo (usa la capacidad de documento).
7// =============================================================================
8
9use llimphi_voxel::{Atmosfera, Documento, Project};
10
11#[test]
12fn el_nacimiento_es_integro_y_camara_pura() {
13    let p = Project::nacimiento();
14    assert!(p.validar_referencias().is_empty(), "el proyecto es íntegro");
15
16    // Una escena, sin cuerpo (cámara pura), con caída y atmósfera.
17    assert_eq!(p.escenas.len(), 1);
18    let esc = &p.escenas[0];
19    assert_eq!(esc.name, "el nacimiento");
20    assert!(esc.actors.is_empty(), "todavía no hay cuerpo: es la cámara la que cae");
21    assert!(esc.caida.is_some(), "tiene la caída de apertura");
22    assert!(esc.atmosfera.is_some(), "tiene atmósfera (bruma + fundido)");
23
24    // El bioma es vacío puro: sin objetos ni seres, pocas montañas, sin agua.
25    assert_eq!(p.biomas.len(), 1);
26    let b = &p.biomas[0];
27    assert!(b.objetos.is_empty() && b.seres.is_empty(), "vacío: sin vegetación ni seres");
28    assert!(b.mountains < 0.1, "no tantas montañas");
29    assert_eq!(b.water_level, 0.0, "sin agua");
30
31    // Mucha bruma, y entra desde el negro.
32    let atm = esc.atmosfera.unwrap();
33    assert!(
34        atm.bruma > Atmosfera::despejada().bruma * 5.0,
35        "mucha más bruma que el aire despejado"
36    );
37    assert!(atm.desde_negro > 0.0, "entra desde el negro");
38}
39
40#[test]
41fn el_nacimiento_viaja_por_archivo() {
42    let doc = Documento::nuevo(Project::nacimiento());
43    let texto = doc.a_ron().unwrap();
44    let recuperado = Documento::de_ron(&texto).unwrap();
45    // Sobrevive el round-trip con caída + atmósfera intactas.
46    assert_eq!(recuperado.a_ron().unwrap(), texto);
47    assert!(recuperado.proyecto.escenas[0].caida.is_some());
48    assert!(recuperado.proyecto.escenas[0].atmosfera.is_some());
49}