use glacier_ui::{EmbeddedDirs, embed_dirs};
pub fn assets() -> EmbeddedDirs {
embed_dirs! {
"views/" => "$CARGO_MANIFEST_DIR/views",
"assets/icons/" => "$CARGO_MANIFEST_DIR/assets/icons",
"assets/fonts/" => "$CARGO_MANIFEST_DIR/assets/fonts",
"assets/blueprint-logos/" => "$OUT_DIR/blueprint_logos",
"packaging/" => "$CARGO_MANIFEST_DIR/packaging",
}
}
#[cfg(test)]
mod tests {
use super::*;
use glacier_ui::AssetSource;
#[test]
fn resolve_os_assets_referenciados() {
let a = assets();
for p in [
"views/app.gvb",
"views/styles/app.gss",
"views/styles/theme.json",
"views/scripts/app.luau",
"views/scripts/handlers/connection.luau",
] {
assert!(a.exists(p), "faltou embutir (texto): {p}");
assert!(a.read_to_string(p).is_ok(), "não leu (texto): {p}");
}
for p in [
"assets/icons/terminal.svg",
"assets/fonts/JetBrainsMono-Regular.ttf",
"assets/blueprint-logos/ackee/logo.png",
] {
assert!(a.exists(p), "faltou embutir (binário): {p}");
assert!(!a.read_bytes(p).unwrap().is_empty(), "vazio: {p}");
}
assert!(!a.exists("views/nao_existe.gvb"));
assert!(a.read_to_string("views/nao_existe.gvb").is_err());
}
#[test]
fn motor_sobe_o_app_so_do_binario() {
use std::sync::Arc;
let mut motor = glacier_ui::GlacierUI::new().with_asset_source(Arc::new(assets()));
motor
.register_app("views/app.gvb")
.expect("registrar o app a partir dos assets embutidos");
assert!(
motor.render_current().is_ok(),
"render do app embutido falhou"
);
}
}