Restore missing required asset/flow packages from the pinned nigig revision; retain upstream script isolation, X11 hover, and widget-core fixes. Validated makepad-widgets data feature with Rust 1.97.1.
56 lines
1.6 KiB
Rust
56 lines
1.6 KiB
Rust
mod common;
|
|
|
|
use makepad_asset_data::{
|
|
AssetDataError, AssetFile, AssetKind, DeviceTier, FileRole, MediaType,
|
|
};
|
|
|
|
fn model_program_manifest() -> makepad_asset_data::AssetManifest {
|
|
let mut manifest = common::weapon_manifest();
|
|
manifest.kind = AssetKind::ModelProgram;
|
|
manifest.capabilities.spawnable = false;
|
|
manifest.spawn_recipe = None;
|
|
manifest.files.push(AssetFile {
|
|
role: FileRole::Source,
|
|
tier: DeviceTier::Any,
|
|
lod: 0,
|
|
media: MediaType::Text,
|
|
blob: common::blob(8),
|
|
byte_len: 40,
|
|
dims: None,
|
|
});
|
|
manifest.metrics.total_bytes += 40;
|
|
manifest
|
|
}
|
|
|
|
#[test]
|
|
fn model_program_requires_text_source_and_keeps_legacy_manifest_encoding_valid() {
|
|
let manifest = model_program_manifest();
|
|
let bytes = manifest.to_canonical_bytes().expect("valid model-program");
|
|
let decoded = makepad_asset_data::AssetManifest::from_canonical_bytes(&bytes)
|
|
.expect("model-program round trip");
|
|
assert_eq!(decoded, manifest);
|
|
|
|
let mut missing = manifest.clone();
|
|
missing.files.retain(|file| file.role != FileRole::Source);
|
|
missing.metrics.total_bytes -= 40;
|
|
assert!(matches!(
|
|
missing.validate(),
|
|
Err(AssetDataError::Missing {
|
|
what: "model-program source role"
|
|
})
|
|
));
|
|
|
|
let mut wrong_media = manifest;
|
|
wrong_media
|
|
.files
|
|
.iter_mut()
|
|
.find(|file| file.role == FileRole::Source)
|
|
.unwrap()
|
|
.media = MediaType::Bin;
|
|
assert!(matches!(
|
|
wrong_media.validate(),
|
|
Err(AssetDataError::Missing {
|
|
what: "model-program source role"
|
|
})
|
|
));
|
|
}
|