Skip to content

Commit 60d9efc

Browse files
committed
test: test correct registration
1 parent 2c6e8b7 commit 60d9efc

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

hugr-core/src/envelope/reader.rs

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ pub(crate) enum ModelBinaryReadError {
322322
mod test {
323323
use super::*;
324324

325-
use crate::extension::ExtensionRegistry;
325+
use crate::extension::{ExtensionId, ExtensionRegistry};
326326

327327
use crate::envelope::header::EnvelopeHeader;
328328
use cool_asserts::assert_matches;
@@ -466,4 +466,41 @@ mod test {
466466
handle_error(&mut desc, &error);
467467
assert!(desc.used_extensions_resolved.is_none());
468468
}
469+
470+
#[test]
471+
fn test_decode_model_ast_with_packaged_extensions() {
472+
let mut simple_package = crate::builder::test::simple_package();
473+
// Create a simple extension to package
474+
let ext_id = ExtensionId::new("test.packaged.extension").unwrap();
475+
let extension = Extension::new(ext_id.clone(), crate::extension::Version::new(1, 0, 0));
476+
477+
simple_package
478+
.extensions
479+
.register(std::sync::Arc::new(extension))
480+
.unwrap();
481+
482+
let header = EnvelopeHeader {
483+
format: EnvelopeFormat::ModelTextWithExtensions,
484+
..Default::default()
485+
};
486+
487+
let mut cursor = Cursor::new(Vec::new());
488+
simple_package.store(&mut cursor, header.config()).unwrap();
489+
cursor.set_position(0);
490+
491+
let registry = ExtensionRegistry::new([]);
492+
let mut reader = EnvelopeReader::new(cursor, &registry).unwrap();
493+
494+
// Before decoding, the packaged extension should not be registered
495+
assert!(!reader.registry.contains(&ext_id));
496+
497+
let result = reader.decode_model_ast();
498+
499+
// After decoding, the packaged extension should be registered
500+
assert!(result.is_ok());
501+
assert!(reader.registry.contains(&ext_id));
502+
503+
let package = result.unwrap();
504+
assert!(package.extensions.contains(&ext_id));
505+
}
469506
}

0 commit comments

Comments
 (0)