Implement native client core lifecycle (#51)
Some checks failed
Native code generation / deterministic (push) Failing after 6m8s
Imaging and meshing gate / native (push) Failing after 17s
JPEG 2000 feature / linux (push) Failing after 59s
Skia feature / linux (push) Failing after 1m33s

This commit is contained in:
2026-08-09 10:53:33 +00:00
parent 167f469fc2
commit b413cd6f4d
11 changed files with 1470 additions and 79 deletions

View File

@@ -72,23 +72,40 @@ fn runtime_flows_have_typed_callable_signatures() {
}
#[test]
fn core_constructors_fail_before_starting_runtime_work() {
fn client_and_settings_construct_without_starting_runtime_work() {
let mut client = GridClient::new().expect("GridClient constructor");
assert_eq!(client.settings().timing().login_timeout, 60_000);
assert_eq!(
member_id(GridClient::new()),
"M:LibreMetaverse.GridClient.#ctor"
client.lifecycle_state(),
libremetaverse::ClientLifecycleState::Active
);
assert!(!client.cancellation_token().is_cancellation_requested());
let connection = ConnectionSettings::new().expect("ConnectionSettings constructor");
assert_eq!(connection.login_server, Settings::AGNI_LOGIN_SERVER);
assert!(!connection.mfa_enabled);
let texture = TexturePipelineSettings::new().expect("TexturePipelineSettings constructor");
assert!(texture.enabled);
assert!(texture.use_http_textures);
assert_eq!(texture.max_concurrent_downloads, 4);
assert_eq!(texture.request_timeout, 45_000);
client
.dispose_with_method()
.expect("idempotent client disposal");
client
.dispose_with_method()
.expect("repeated client disposal");
assert_eq!(
member_id(ConnectionSettings::new()),
"M:LibreMetaverse.ConnectionSettings.#ctor"
client.lifecycle_state(),
libremetaverse::ClientLifecycleState::Disposed
);
assert_eq!(
member_id(CapsRateLimiter::new_with_constructor()),
"M:LibreMetaverse.CapsRateLimiter.#ctor"
);
assert_eq!(
member_id(TexturePipelineSettings::new()),
"M:LibreMetaverse.TexturePipelineSettings.#ctor"
);
assert_eq!(
member_id(UDPPacketBuffer::new_with_constructor()),
"M:LibreMetaverse.UDPPacketBuffer.#ctor"

View File

@@ -67,7 +67,7 @@ fn world_and_social_flows_have_typed_callable_signatures() {
}
#[test]
fn world_facing_constructors_fail_with_catalog_ids() {
fn world_facing_constructors_preserve_implemented_and_pending_behavior() {
assert_eq!(
member_id(EstateTask::new()),
"M:LibreMetaverse.EstateTask.#ctor"
@@ -76,10 +76,11 @@ fn world_facing_constructors_fail_with_catalog_ids() {
member_id(MarketplaceListing::new()),
"M:LibreMetaverse.Marketplace.MarketplaceListing.#ctor"
);
assert_eq!(
member_id(ParcelSettings::new()),
"M:LibreMetaverse.ParcelSettings.#ctor"
);
let parcel = ParcelSettings::new().expect("ParcelSettings constructor");
assert!(parcel.track_parcels);
assert!(parcel.always_request_acl);
assert!(parcel.always_request_dwell);
assert!(!parcel.pool_parcel_data);
assert_eq!(
member_id(TerrainPatch::new()),
"M:LibreMetaverse.TerrainPatch.#ctor"