Files
MetaCrate/tests/compat/tests/extension_shims.rs
Chili Palmer 1c2848c780
Some checks failed
Native code generation / deterministic (push) Failing after 1m48s
Native Rust workspace compile / compile (push) Has been cancelled
Complete native extension milestone gate (#84)
2026-08-11 04:09:22 +00:00

80 lines
2.6 KiB
Rust

use libremetaverse::GridClient;
use libremetaverse_lsl_tools::{Parser, YyParser};
use libremetaverse_rlv::{RlvActionCallbacksDefault, RlvRestrictionManager, RlvService};
use libremetaverse_types::compat::{CancellationToken, Guid, Subscription};
use libremetaverse_utilities::ConnectionManager;
use libremetaverse_voice_vivox::{TCPPipe, VoiceManager as VivoxVoiceManager};
use libremetaverse_voice_webrtc::{LibreMetaverseVoiceLogger, VoiceManager as WebRtcVoiceManager};
fn member_id<T>(result: Result<T, libremetaverse_types::Error>) -> &'static str {
result
.err()
.expect("failure-only shim unexpectedly returned a value")
.csharp_member()
.expect("failure-only shim error")
}
async fn compile_rlv_calls(
service: &RlvService,
restrictions: &RlvRestrictionManager,
sender_id: Guid,
token: CancellationToken,
) {
let _: Subscription = restrictions.subscribe_restriction_updated(None);
let _ = service
.process_message(String::new(), sender_id, String::new(), Some(token))
.await;
}
fn compile_parser_call(parser: &mut Parser) {
let _ = parser.parse_with_string(String::new());
}
async fn compile_utility_call(client: GridClient) {
let _ = ConnectionManager::persistent_login(
client,
String::new(),
String::new(),
String::new(),
String::new(),
String::new(),
String::new(),
)
.await;
}
fn compile_vivox_calls(manager: &VivoxVoiceManager, status: &mut i32) {
let _: Subscription = manager.subscribe_on_login(None);
let _ = manager.login(String::new(), String::new(), String::new(), status);
let _ = manager.request_parcel_voice_info();
}
async fn compile_webrtc_calls(manager: &WebRtcVoiceManager) {
let _: Subscription = manager.subscribe_on_group_voice_joined(None);
let _ = manager.connect_primary_region().await;
let _ = manager.request_parcel_voice_info().await;
}
#[test]
fn extension_flows_have_typed_callable_signatures() {
let _ = compile_rlv_calls;
let _ = compile_parser_call;
let _ = compile_utility_call;
let _ = compile_vivox_calls;
let _ = compile_webrtc_calls;
}
#[test]
fn extension_constructors_have_expected_native_or_failure_behavior() {
assert!(YyParser::new().is_ok());
assert!(RlvActionCallbacksDefault::new().is_ok());
assert_eq!(
member_id(TCPPipe::new()),
"M:LibreMetaverse.Voice.Vivox.TCPPipe.#ctor"
);
assert_eq!(
member_id(LibreMetaverseVoiceLogger::new()),
"M:LibreMetaverse.Voice.WebRTC.LibreMetaverseVoiceLogger.#ctor"
);
}