Translate world-state parity tests
This commit is contained in:
@@ -60,8 +60,8 @@ The current workspace is a structural baseline, not a working client:
|
|||||||
members with real fields/constants/enum values and standardized failing
|
members with real fields/constants/enum values and standardized failing
|
||||||
bodies;
|
bodies;
|
||||||
- all 1,289 real NUnit `[Test]`/`[TestCase]` invocations have stable catalog
|
- all 1,289 real NUnit `[Test]`/`[TestCase]` invocations have stable catalog
|
||||||
entries; 488 are translated, 18 live-grid cases and four benchmarks are
|
entries; 586 are translated, 19 live-grid cases and four benchmarks are
|
||||||
reviewed, and 779 remain pending without executable placeholder tests;
|
reviewed, and 680 remain pending without executable placeholder tests;
|
||||||
- all nine sample/tool projects have compiling Rust binary targets;
|
- all nine sample/tool projects have compiling Rust binary targets;
|
||||||
- the 128 TestClient command source files are retained as a command inventory.
|
- the 128 TestClient command source files are retained as a command inventory.
|
||||||
|
|
||||||
|
|||||||
@@ -8734,7 +8734,7 @@ F:LibreMetaverse.Primitive.ConstructionData.profileCurve field System.Byte Libre
|
|||||||
F:LibreMetaverse.Primitive.ExtendedMeshFlags field System.UInt32 LibreMetaverse.Primitive.ExtendedMeshFlags libremetaverse libremetaverse::Primitive::extended_mesh_flags pub extended_mesh_flags: u32 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.ExtendedMeshFlags field System.UInt32 LibreMetaverse.Primitive.ExtendedMeshFlags libremetaverse libremetaverse::Primitive::extended_mesh_flags pub extended_mesh_flags: u32 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.FaceMedia field LibreMetaverse.MediaEntry[] LibreMetaverse.Primitive.FaceMedia libremetaverse libremetaverse::Primitive::face_media pub face_media: Vec<libremetaverse::MediaEntry> owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.FaceMedia field LibreMetaverse.MediaEntry[] LibreMetaverse.Primitive.FaceMedia libremetaverse libremetaverse::Primitive::face_media pub face_media: Vec<libremetaverse::MediaEntry> owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.Flags field LibreMetaverse.PrimFlags LibreMetaverse.Primitive.Flags libremetaverse libremetaverse::Primitive::flags pub flags: libremetaverse_types::PrimFlags owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.Flags field LibreMetaverse.PrimFlags LibreMetaverse.Primitive.Flags libremetaverse libremetaverse::Primitive::flags pub flags: libremetaverse_types::PrimFlags owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.Flexible field LibreMetaverse.Primitive.FlexibleData LibreMetaverse.Primitive.Flexible libremetaverse libremetaverse::Primitive::flexible pub flexible: libremetaverse::PrimitiveFlexibleData owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.Flexible field LibreMetaverse.Primitive.FlexibleData LibreMetaverse.Primitive.Flexible libremetaverse libremetaverse::Primitive::flexible pub flexible: Option<libremetaverse::PrimitiveFlexibleData> owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.FlexibleData.Drag field System.Single LibreMetaverse.Primitive.FlexibleData.Drag libremetaverse libremetaverse::PrimitiveFlexibleData::drag pub drag: f32 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.FlexibleData.Drag field System.Single LibreMetaverse.Primitive.FlexibleData.Drag libremetaverse libremetaverse::PrimitiveFlexibleData::drag pub drag: f32 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.FlexibleData.Force field LibreMetaverse.Vector3 LibreMetaverse.Primitive.FlexibleData.Force libremetaverse libremetaverse::PrimitiveFlexibleData::force pub force: libremetaverse_types::Vector3 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.FlexibleData.Force field LibreMetaverse.Vector3 LibreMetaverse.Primitive.FlexibleData.Force libremetaverse libremetaverse::PrimitiveFlexibleData::force pub force: libremetaverse_types::Vector3 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.FlexibleData.Gravity field System.Single LibreMetaverse.Primitive.FlexibleData.Gravity libremetaverse libremetaverse::PrimitiveFlexibleData::gravity pub gravity: f32 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.FlexibleData.Gravity field System.Single LibreMetaverse.Primitive.FlexibleData.Gravity libremetaverse libremetaverse::PrimitiveFlexibleData::gravity pub gravity: f32 owned_value sync none direct_snake_case direct mapped
|
||||||
@@ -8747,7 +8747,7 @@ F:LibreMetaverse.Primitive.IsAttachment field System.Boolean LibreMetaverse.Prim
|
|||||||
F:LibreMetaverse.Primitive.Joint field LibreMetaverse.JointType LibreMetaverse.Primitive.Joint libremetaverse libremetaverse::Primitive::joint pub joint: libremetaverse_types::JointType owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.Joint field LibreMetaverse.JointType LibreMetaverse.Primitive.Joint libremetaverse libremetaverse::Primitive::joint pub joint: libremetaverse_types::JointType owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.JointAxisOrAnchor field LibreMetaverse.Vector3 LibreMetaverse.Primitive.JointAxisOrAnchor libremetaverse libremetaverse::Primitive::joint_axis_or_anchor pub joint_axis_or_anchor: libremetaverse_types::Vector3 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.JointAxisOrAnchor field LibreMetaverse.Vector3 LibreMetaverse.Primitive.JointAxisOrAnchor libremetaverse libremetaverse::Primitive::joint_axis_or_anchor pub joint_axis_or_anchor: libremetaverse_types::Vector3 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.JointPivot field LibreMetaverse.Vector3 LibreMetaverse.Primitive.JointPivot libremetaverse libremetaverse::Primitive::joint_pivot pub joint_pivot: libremetaverse_types::Vector3 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.JointPivot field LibreMetaverse.Vector3 LibreMetaverse.Primitive.JointPivot libremetaverse libremetaverse::Primitive::joint_pivot pub joint_pivot: libremetaverse_types::Vector3 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.Light field LibreMetaverse.Primitive.LightData LibreMetaverse.Primitive.Light libremetaverse libremetaverse::Primitive::light pub light: libremetaverse::PrimitiveLightData owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.Light field LibreMetaverse.Primitive.LightData LibreMetaverse.Primitive.Light libremetaverse libremetaverse::Primitive::light pub light: Option<libremetaverse::PrimitiveLightData> owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.LightData.Color field LibreMetaverse.Color4 LibreMetaverse.Primitive.LightData.Color libremetaverse libremetaverse::PrimitiveLightData::color pub color: libremetaverse_types::Color4 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.LightData.Color field LibreMetaverse.Color4 LibreMetaverse.Primitive.LightData.Color libremetaverse libremetaverse::PrimitiveLightData::color pub color: libremetaverse_types::Color4 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.LightData.Cutoff field System.Single LibreMetaverse.Primitive.LightData.Cutoff libremetaverse libremetaverse::PrimitiveLightData::cutoff pub cutoff: f32 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.LightData.Cutoff field System.Single LibreMetaverse.Primitive.LightData.Cutoff libremetaverse libremetaverse::PrimitiveLightData::cutoff pub cutoff: f32 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.LightData.Falloff field System.Single LibreMetaverse.Primitive.LightData.Falloff libremetaverse libremetaverse::PrimitiveLightData::falloff pub falloff: f32 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.LightData.Falloff field System.Single LibreMetaverse.Primitive.LightData.Falloff libremetaverse libremetaverse::PrimitiveLightData::falloff pub falloff: f32 owned_value sync none direct_snake_case direct mapped
|
||||||
@@ -8755,7 +8755,7 @@ F:LibreMetaverse.Primitive.LightData.Intensity field System.Single LibreMetavers
|
|||||||
F:LibreMetaverse.Primitive.LightData.Radius field System.Single LibreMetaverse.Primitive.LightData.Radius libremetaverse libremetaverse::PrimitiveLightData::radius pub radius: f32 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.LightData.Radius field System.Single LibreMetaverse.Primitive.LightData.Radius libremetaverse libremetaverse::PrimitiveLightData::radius pub radius: f32 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.LightImage.LightTexture field LibreMetaverse.UUID LibreMetaverse.Primitive.LightImage.LightTexture libremetaverse libremetaverse::PrimitiveLightImage::light_texture pub light_texture: libremetaverse_types::UUID owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.LightImage.LightTexture field LibreMetaverse.UUID LibreMetaverse.Primitive.LightImage.LightTexture libremetaverse libremetaverse::PrimitiveLightImage::light_texture pub light_texture: libremetaverse_types::UUID owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.LightImage.Params field LibreMetaverse.Vector3 LibreMetaverse.Primitive.LightImage.Params libremetaverse libremetaverse::PrimitiveLightImage::params pub params: libremetaverse_types::Vector3 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.LightImage.Params field LibreMetaverse.Vector3 LibreMetaverse.Primitive.LightImage.Params libremetaverse libremetaverse::PrimitiveLightImage::params pub params: libremetaverse_types::Vector3 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.LightMap field LibreMetaverse.Primitive.LightImage LibreMetaverse.Primitive.LightMap libremetaverse libremetaverse::Primitive::light_map pub light_map: libremetaverse::PrimitiveLightImage owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.LightMap field LibreMetaverse.Primitive.LightImage LibreMetaverse.Primitive.LightMap libremetaverse libremetaverse::Primitive::light_map pub light_map: Option<libremetaverse::PrimitiveLightImage> owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.LocalID field System.UInt32 LibreMetaverse.Primitive.LocalID libremetaverse libremetaverse::Primitive::local_id pub local_id: u32 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.LocalID field System.UInt32 LibreMetaverse.Primitive.LocalID libremetaverse libremetaverse::Primitive::local_id pub local_id: u32 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.MediaURL field System.String LibreMetaverse.Primitive.MediaURL libremetaverse libremetaverse::Primitive::media_url pub media_url: String owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.MediaURL field System.String LibreMetaverse.Primitive.MediaURL libremetaverse libremetaverse::Primitive::media_url pub media_url: String owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.MediaVersion field System.String LibreMetaverse.Primitive.MediaVersion libremetaverse libremetaverse::Primitive::media_version pub media_version: String owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.MediaVersion field System.String LibreMetaverse.Primitive.MediaVersion libremetaverse libremetaverse::Primitive::media_version pub media_version: String owned_value sync none direct_snake_case direct mapped
|
||||||
@@ -8892,7 +8892,7 @@ F:LibreMetaverse.Primitive.TextureAnimation.SizeX field System.UInt32 LibreMetav
|
|||||||
F:LibreMetaverse.Primitive.TextureAnimation.SizeY field System.UInt32 LibreMetaverse.Primitive.TextureAnimation.SizeY libremetaverse libremetaverse::PrimitiveTextureAnimation::size_y pub size_y: u32 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.TextureAnimation.SizeY field System.UInt32 LibreMetaverse.Primitive.TextureAnimation.SizeY libremetaverse libremetaverse::PrimitiveTextureAnimation::size_y pub size_y: u32 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.TextureAnimation.Start field System.Single LibreMetaverse.Primitive.TextureAnimation.Start libremetaverse libremetaverse::PrimitiveTextureAnimation::start pub start: f32 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.TextureAnimation.Start field System.Single LibreMetaverse.Primitive.TextureAnimation.Start libremetaverse libremetaverse::PrimitiveTextureAnimation::start pub start: f32 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.TextureEntry.DefaultTexture field LibreMetaverse.Primitive.TextureEntryFace LibreMetaverse.Primitive.TextureEntry.DefaultTexture libremetaverse libremetaverse::PrimitiveTextureEntry::default_texture pub default_texture: Option<libremetaverse::PrimitiveTextureEntryFace> owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.TextureEntry.DefaultTexture field LibreMetaverse.Primitive.TextureEntryFace LibreMetaverse.Primitive.TextureEntry.DefaultTexture libremetaverse libremetaverse::PrimitiveTextureEntry::default_texture pub default_texture: Option<libremetaverse::PrimitiveTextureEntryFace> owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.TextureEntry.FaceTextures field LibreMetaverse.Primitive.TextureEntryFace[] LibreMetaverse.Primitive.TextureEntry.FaceTextures libremetaverse libremetaverse::PrimitiveTextureEntry::face_textures pub face_textures: Vec<libremetaverse::PrimitiveTextureEntryFace> owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.TextureEntry.FaceTextures field LibreMetaverse.Primitive.TextureEntryFace[] LibreMetaverse.Primitive.TextureEntry.FaceTextures libremetaverse libremetaverse::PrimitiveTextureEntry::face_textures pub face_textures: Vec<Option<libremetaverse::PrimitiveTextureEntryFace>> owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.TextureEntry.MAX_FACES constant System.Int32 LibreMetaverse.Primitive.TextureEntry.MAX_FACES libremetaverse libremetaverse::PrimitiveTextureEntry::MAX_FACES pub const MAX_FACES: i32 owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.TextureEntry.MAX_FACES constant System.Int32 LibreMetaverse.Primitive.TextureEntry.MAX_FACES libremetaverse libremetaverse::PrimitiveTextureEntry::MAX_FACES pub const MAX_FACES: i32 owned_value sync none direct_snake_case direct mapped
|
||||||
F:LibreMetaverse.Primitive.TextureEntry.WHITE_TEXTURE field LibreMetaverse.UUID LibreMetaverse.Primitive.TextureEntry.WHITE_TEXTURE libremetaverse libremetaverse::PrimitiveTextureEntry::white_texture pub fn white_texture() -> libremetaverse_types::UUID none sync infallible_placeholder direct_snake_case static_field_accessor mapped
|
F:LibreMetaverse.Primitive.TextureEntry.WHITE_TEXTURE field LibreMetaverse.UUID LibreMetaverse.Primitive.TextureEntry.WHITE_TEXTURE libremetaverse libremetaverse::PrimitiveTextureEntry::white_texture pub fn white_texture() -> libremetaverse_types::UUID none sync infallible_placeholder direct_snake_case static_field_accessor mapped
|
||||||
F:LibreMetaverse.Primitive.Textures field LibreMetaverse.Primitive.TextureEntry LibreMetaverse.Primitive.Textures libremetaverse libremetaverse::Primitive::textures pub textures: Option<libremetaverse::PrimitiveTextureEntry> owned_value sync none direct_snake_case direct mapped
|
F:LibreMetaverse.Primitive.Textures field LibreMetaverse.Primitive.TextureEntry LibreMetaverse.Primitive.Textures libremetaverse libremetaverse::Primitive::textures pub textures: Option<libremetaverse::PrimitiveTextureEntry> owned_value sync none direct_snake_case direct mapped
|
||||||
@@ -10195,7 +10195,7 @@ M:LibreMetaverse.AgentDisplayName.FromOSD(LibreMetaverse.StructuredData.OSD) met
|
|||||||
M:LibreMetaverse.AgentDisplayName.GetOSD method LibreMetaverse.StructuredData.OSD LibreMetaverse.AgentDisplayName.GetOSD() libremetaverse libremetaverse::AgentDisplayName::get_osd pub fn get_osd(&self) -> Result<libremetaverse_structured_data::OSD, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AgentDisplayName.GetOSD method LibreMetaverse.StructuredData.OSD LibreMetaverse.AgentDisplayName.GetOSD() libremetaverse libremetaverse::AgentDisplayName::get_osd pub fn get_osd(&self) -> Result<libremetaverse_structured_data::OSD, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AgentDisplayName.ToString method System.String LibreMetaverse.AgentDisplayName.ToString() libremetaverse libremetaverse::AgentDisplayName::to_string pub fn to_string(&self) -> String shared_self sync infallible_placeholder direct_snake_case method mapped
|
M:LibreMetaverse.AgentDisplayName.ToString method System.String LibreMetaverse.AgentDisplayName.ToString() libremetaverse libremetaverse::AgentDisplayName::to_string pub fn to_string(&self) -> String shared_self sync infallible_placeholder direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AgentExperiencesEventArgs.#ctor(LibreMetaverse.Messages.Linden.ExperienceListMessage) constructor LibreMetaverse.AgentExperiencesEventArgs(LibreMetaverse.Messages.Linden.ExperienceListMessage agentExperiences) libremetaverse libremetaverse::AgentExperiencesEventArgs::new pub fn new(agent_experiences: libremetaverse::messages::linden::ExperienceListMessage) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AgentExperiencesEventArgs.#ctor(LibreMetaverse.Messages.Linden.ExperienceListMessage) constructor LibreMetaverse.AgentExperiencesEventArgs(LibreMetaverse.Messages.Linden.ExperienceListMessage agentExperiences) libremetaverse libremetaverse::AgentExperiencesEventArgs::new pub fn new(agent_experiences: libremetaverse::messages::linden::ExperienceListMessage) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AgentManager.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.AgentManager(LibreMetaverse.GridClient client) libremetaverse libremetaverse::AgentManager::new pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AgentManager.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.AgentManager(LibreMetaverse.GridClient client) libremetaverse libremetaverse::AgentManager::new pub fn new(client: Option<std::sync::Arc<libremetaverse::GridClient>>) -> Result<Self, crate::Error> optional_shared sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AgentManager.ActivateGesture(LibreMetaverse.UUID,LibreMetaverse.UUID) method System.Void LibreMetaverse.AgentManager.ActivateGesture(LibreMetaverse.UUID invID, LibreMetaverse.UUID assetID) libremetaverse libremetaverse::AgentManager::activate_gesture pub fn activate_gesture(&self, inv_id: libremetaverse_types::UUID, asset_id: libremetaverse_types::UUID) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AgentManager.ActivateGesture(LibreMetaverse.UUID,LibreMetaverse.UUID) method System.Void LibreMetaverse.AgentManager.ActivateGesture(LibreMetaverse.UUID invID, LibreMetaverse.UUID assetID) libremetaverse libremetaverse::AgentManager::activate_gesture pub fn activate_gesture(&self, inv_id: libremetaverse_types::UUID, asset_id: libremetaverse_types::UUID) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AgentManager.AgentMovement.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.AgentManager.AgentMovement(LibreMetaverse.GridClient client) libremetaverse libremetaverse::AgentManagerAgentMovement::new pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AgentManager.AgentMovement.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.AgentManager.AgentMovement(LibreMetaverse.GridClient client) libremetaverse libremetaverse::AgentManagerAgentMovement::new pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AgentManager.AgentMovement.AgentCamera.#ctor constructor LibreMetaverse.AgentManager.AgentMovement.AgentCamera() libremetaverse libremetaverse::AgentManagerAgentMovementAgentCamera::new pub fn new() -> Result<Self, crate::Error> none sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AgentManager.AgentMovement.AgentCamera.#ctor constructor LibreMetaverse.AgentManager.AgentMovement.AgentCamera() libremetaverse libremetaverse::AgentManagerAgentMovementAgentCamera::new pub fn new() -> Result<Self, crate::Error> none sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
@@ -11127,7 +11127,7 @@ M:LibreMetaverse.GridClientServiceCollectionExtensions.AddGridClient(Microsoft.E
|
|||||||
M:LibreMetaverse.GridItemsEventArgs.#ctor(LibreMetaverse.GridItemType,System.Collections.Generic.List{LibreMetaverse.MapItem}) constructor LibreMetaverse.GridItemsEventArgs(LibreMetaverse.GridItemType type, System.Collections.Generic.List<LibreMetaverse.MapItem> items) libremetaverse libremetaverse::GridItemsEventArgs::new pub fn new(type_: libremetaverse::GridItemType, items: Vec<libremetaverse::MapItem>) -> Result<Self, crate::Error> owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.GridItemsEventArgs.#ctor(LibreMetaverse.GridItemType,System.Collections.Generic.List{LibreMetaverse.MapItem}) constructor LibreMetaverse.GridItemsEventArgs(LibreMetaverse.GridItemType type, System.Collections.Generic.List<LibreMetaverse.MapItem> items) libremetaverse libremetaverse::GridItemsEventArgs::new pub fn new(type_: libremetaverse::GridItemType, items: Vec<libremetaverse::MapItem>) -> Result<Self, crate::Error> owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.GridLayer.ContainsRegion(System.Int32,System.Int32) method System.Boolean LibreMetaverse.GridLayer.ContainsRegion(System.Int32 x, System.Int32 y) libremetaverse libremetaverse::GridLayer::contains_region pub fn contains_region(&self, x: i32, y: i32) -> Result<bool, crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.GridLayer.ContainsRegion(System.Int32,System.Int32) method System.Boolean LibreMetaverse.GridLayer.ContainsRegion(System.Int32 x, System.Int32 y) libremetaverse libremetaverse::GridLayer::contains_region pub fn contains_region(&self, x: i32, y: i32) -> Result<bool, crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.GridLayerEventArgs.#ctor(LibreMetaverse.GridLayer) constructor LibreMetaverse.GridLayerEventArgs(LibreMetaverse.GridLayer layer) libremetaverse libremetaverse::GridLayerEventArgs::new pub fn new(layer: libremetaverse::GridLayer) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.GridLayerEventArgs.#ctor(LibreMetaverse.GridLayer) constructor LibreMetaverse.GridLayerEventArgs(LibreMetaverse.GridLayer layer) libremetaverse libremetaverse::GridLayerEventArgs::new pub fn new(layer: libremetaverse::GridLayer) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.GridManager.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.GridManager(LibreMetaverse.GridClient client) libremetaverse libremetaverse::GridManager::new pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.GridManager.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.GridManager(LibreMetaverse.GridClient client) libremetaverse libremetaverse::GridManager::new pub fn new(client: Option<std::sync::Arc<libremetaverse::GridClient>>) -> Result<Self, crate::Error> optional_shared sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.GridManager.Dispose method System.Void LibreMetaverse.GridManager.Dispose() libremetaverse libremetaverse::GridManager::dispose pub fn dispose(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.GridManager.Dispose method System.Void LibreMetaverse.GridManager.Dispose() libremetaverse libremetaverse::GridManager::dispose pub fn dispose(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.GridManager.GetGridRegionAsync(System.String,LibreMetaverse.GridLayerType,System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Nullable<LibreMetaverse.GridRegion>> LibreMetaverse.GridManager.GetGridRegionAsync(System.String name, LibreMetaverse.GridLayerType layer, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::GridManager::get_grid_region_with_string_grid_layer_type_cancellation_token pub async fn get_grid_region_with_string_grid_layer_type_cancellation_token(&self, name: String, layer: libremetaverse::GridLayerType, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<Option<Option<libremetaverse::GridRegion>>, crate::Error> shared_self,owned,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.GridManager.GetGridRegionAsync(System.String,LibreMetaverse.GridLayerType,System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Nullable<LibreMetaverse.GridRegion>> LibreMetaverse.GridManager.GetGridRegionAsync(System.String name, LibreMetaverse.GridLayerType layer, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::GridManager::get_grid_region_with_string_grid_layer_type_cancellation_token pub async fn get_grid_region_with_string_grid_layer_type_cancellation_token(&self, name: String, layer: libremetaverse::GridLayerType, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<Option<Option<libremetaverse::GridRegion>>, crate::Error> shared_self,owned,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.GridManager.GetGridRegionAsync(System.UInt64,LibreMetaverse.GridLayerType,System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Nullable<LibreMetaverse.GridRegion>> LibreMetaverse.GridManager.GetGridRegionAsync(System.UInt64 handle, LibreMetaverse.GridLayerType layer, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::GridManager::get_grid_region_with_u_int64_grid_layer_type_cancellation_token pub async fn get_grid_region_with_u_int64_grid_layer_type_cancellation_token(&self, handle: u64, layer: libremetaverse::GridLayerType, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<Option<Option<libremetaverse::GridRegion>>, crate::Error> shared_self,owned,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.GridManager.GetGridRegionAsync(System.UInt64,LibreMetaverse.GridLayerType,System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Nullable<LibreMetaverse.GridRegion>> LibreMetaverse.GridManager.GetGridRegionAsync(System.UInt64 handle, LibreMetaverse.GridLayerType layer, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::GridManager::get_grid_region_with_u_int64_grid_layer_type_cancellation_token pub async fn get_grid_region_with_u_int64_grid_layer_type_cancellation_token(&self, handle: u64, layer: libremetaverse::GridLayerType, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<Option<Option<libremetaverse::GridRegion>>, crate::Error> shared_self,owned,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
@@ -13142,7 +13142,7 @@ M:LibreMetaverse.NetworkManager.UnregisterEventCallback(System.String,LibreMetav
|
|||||||
M:LibreMetaverse.NetworkManager.UnregisterLoginResponseCallback(LibreMetaverse.NetworkManager.LoginResponseCallback) method System.Void LibreMetaverse.NetworkManager.UnregisterLoginResponseCallback(LibreMetaverse.NetworkManager.LoginResponseCallback callback) libremetaverse libremetaverse::NetworkManager::unregister_login_response_callback pub fn unregister_login_response_callback(&self, callback: libremetaverse::NetworkManagerLoginResponseCallback) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.NetworkManager.UnregisterLoginResponseCallback(LibreMetaverse.NetworkManager.LoginResponseCallback) method System.Void LibreMetaverse.NetworkManager.UnregisterLoginResponseCallback(LibreMetaverse.NetworkManager.LoginResponseCallback callback) libremetaverse libremetaverse::NetworkManager::unregister_login_response_callback pub fn unregister_login_response_callback(&self, callback: libremetaverse::NetworkManagerLoginResponseCallback) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.ObjectAnimationEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Collections.Generic.List{LibreMetaverse.Animation}) constructor LibreMetaverse.ObjectAnimationEventArgs(LibreMetaverse.Simulator simulator, LibreMetaverse.UUID objectID, System.Collections.Generic.List<LibreMetaverse.Animation> anims) libremetaverse libremetaverse::ObjectAnimationEventArgs::new pub fn new(simulator: libremetaverse::Simulator, object_id: libremetaverse_types::UUID, anims: Vec<libremetaverse::Animation>) -> Result<Self, crate::Error> owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.ObjectAnimationEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Collections.Generic.List{LibreMetaverse.Animation}) constructor LibreMetaverse.ObjectAnimationEventArgs(LibreMetaverse.Simulator simulator, LibreMetaverse.UUID objectID, System.Collections.Generic.List<LibreMetaverse.Animation> anims) libremetaverse libremetaverse::ObjectAnimationEventArgs::new pub fn new(simulator: libremetaverse::Simulator, object_id: libremetaverse_types::UUID, anims: Vec<libremetaverse::Animation>) -> Result<Self, crate::Error> owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.ObjectDataBlockUpdateEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.Primitive,LibreMetaverse.Primitive.ConstructionData,LibreMetaverse.Packets.ObjectUpdatePacket.ObjectDataBlock,LibreMetaverse.ObjectMovementUpdate,LibreMetaverse.NameValue[]) constructor LibreMetaverse.ObjectDataBlockUpdateEventArgs(LibreMetaverse.Simulator simulator, LibreMetaverse.Primitive prim, LibreMetaverse.Primitive.ConstructionData constructionData, LibreMetaverse.Packets.ObjectUpdatePacket.ObjectDataBlock block, LibreMetaverse.ObjectMovementUpdate objectupdate, LibreMetaverse.NameValue[] nameValues) libremetaverse libremetaverse::ObjectDataBlockUpdateEventArgs::new pub fn new(simulator: libremetaverse::Simulator, prim: libremetaverse::Primitive, construction_data: libremetaverse::PrimitiveConstructionData, block: libremetaverse::packets::ObjectUpdatePacketObjectDataBlock, objectupdate: libremetaverse::ObjectMovementUpdate, name_values: Vec<libremetaverse::NameValue>) -> Result<Self, crate::Error> owned,owned,owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.ObjectDataBlockUpdateEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.Primitive,LibreMetaverse.Primitive.ConstructionData,LibreMetaverse.Packets.ObjectUpdatePacket.ObjectDataBlock,LibreMetaverse.ObjectMovementUpdate,LibreMetaverse.NameValue[]) constructor LibreMetaverse.ObjectDataBlockUpdateEventArgs(LibreMetaverse.Simulator simulator, LibreMetaverse.Primitive prim, LibreMetaverse.Primitive.ConstructionData constructionData, LibreMetaverse.Packets.ObjectUpdatePacket.ObjectDataBlock block, LibreMetaverse.ObjectMovementUpdate objectupdate, LibreMetaverse.NameValue[] nameValues) libremetaverse libremetaverse::ObjectDataBlockUpdateEventArgs::new pub fn new(simulator: libremetaverse::Simulator, prim: libremetaverse::Primitive, construction_data: libremetaverse::PrimitiveConstructionData, block: libremetaverse::packets::ObjectUpdatePacketObjectDataBlock, objectupdate: libremetaverse::ObjectMovementUpdate, name_values: Vec<libremetaverse::NameValue>) -> Result<Self, crate::Error> owned,owned,owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.ObjectManager.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.ObjectManager(LibreMetaverse.GridClient client) libremetaverse libremetaverse::ObjectManager::new pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.ObjectManager.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.ObjectManager(LibreMetaverse.GridClient client) libremetaverse libremetaverse::ObjectManager::new pub fn new(client: Option<std::sync::Arc<libremetaverse::GridClient>>) -> Result<Self, crate::Error> optional_shared sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.ObjectManager.AddGrass(LibreMetaverse.Simulator,LibreMetaverse.Vector3,LibreMetaverse.Quaternion,LibreMetaverse.Vector3,LibreMetaverse.Grass,LibreMetaverse.UUID) method System.Void LibreMetaverse.ObjectManager.AddGrass(LibreMetaverse.Simulator simulator, LibreMetaverse.Vector3 scale, LibreMetaverse.Quaternion rotation, LibreMetaverse.Vector3 position, LibreMetaverse.Grass grassType, LibreMetaverse.UUID groupOwner) libremetaverse libremetaverse::ObjectManager::add_grass pub fn add_grass(&self, simulator: libremetaverse::Simulator, scale: libremetaverse_types::Vector3, rotation: libremetaverse_types::Quaternion, position: libremetaverse_types::Vector3, grass_type: libremetaverse::Grass, group_owner: libremetaverse_types::UUID) -> Result<(), crate::Error> shared_self,owned,owned,owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.ObjectManager.AddGrass(LibreMetaverse.Simulator,LibreMetaverse.Vector3,LibreMetaverse.Quaternion,LibreMetaverse.Vector3,LibreMetaverse.Grass,LibreMetaverse.UUID) method System.Void LibreMetaverse.ObjectManager.AddGrass(LibreMetaverse.Simulator simulator, LibreMetaverse.Vector3 scale, LibreMetaverse.Quaternion rotation, LibreMetaverse.Vector3 position, LibreMetaverse.Grass grassType, LibreMetaverse.UUID groupOwner) libremetaverse libremetaverse::ObjectManager::add_grass pub fn add_grass(&self, simulator: libremetaverse::Simulator, scale: libremetaverse_types::Vector3, rotation: libremetaverse_types::Quaternion, position: libremetaverse_types::Vector3, grass_type: libremetaverse::Grass, group_owner: libremetaverse_types::UUID) -> Result<(), crate::Error> shared_self,owned,owned,owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.ObjectManager.AddPrim(LibreMetaverse.Simulator,LibreMetaverse.Primitive.ConstructionData,LibreMetaverse.UUID,LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Quaternion) method System.Void LibreMetaverse.ObjectManager.AddPrim(LibreMetaverse.Simulator simulator, LibreMetaverse.Primitive.ConstructionData prim, LibreMetaverse.UUID groupID, LibreMetaverse.Vector3 position, LibreMetaverse.Vector3 scale, LibreMetaverse.Quaternion rotation) libremetaverse libremetaverse::ObjectManager::add_prim_with_simulator_construction_data_uuid_vector3_vector3_quaternion pub fn add_prim_with_simulator_construction_data_uuid_vector3_vector3_quaternion(&self, simulator: libremetaverse::Simulator, prim: libremetaverse::PrimitiveConstructionData, group_id: libremetaverse_types::UUID, position: libremetaverse_types::Vector3, scale: libremetaverse_types::Vector3, rotation: libremetaverse_types::Quaternion) -> Result<(), crate::Error> shared_self,owned,owned,owned,owned,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.ObjectManager.AddPrim(LibreMetaverse.Simulator,LibreMetaverse.Primitive.ConstructionData,LibreMetaverse.UUID,LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Quaternion) method System.Void LibreMetaverse.ObjectManager.AddPrim(LibreMetaverse.Simulator simulator, LibreMetaverse.Primitive.ConstructionData prim, LibreMetaverse.UUID groupID, LibreMetaverse.Vector3 position, LibreMetaverse.Vector3 scale, LibreMetaverse.Quaternion rotation) libremetaverse libremetaverse::ObjectManager::add_prim_with_simulator_construction_data_uuid_vector3_vector3_quaternion pub fn add_prim_with_simulator_construction_data_uuid_vector3_vector3_quaternion(&self, simulator: libremetaverse::Simulator, prim: libremetaverse::PrimitiveConstructionData, group_id: libremetaverse_types::UUID, position: libremetaverse_types::Vector3, scale: libremetaverse_types::Vector3, rotation: libremetaverse_types::Quaternion) -> Result<(), crate::Error> shared_self,owned,owned,owned,owned,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.ObjectManager.AddPrim(LibreMetaverse.Simulator,LibreMetaverse.Primitive.ConstructionData,LibreMetaverse.UUID,LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Quaternion,LibreMetaverse.PrimFlags) method System.Void LibreMetaverse.ObjectManager.AddPrim(LibreMetaverse.Simulator simulator, LibreMetaverse.Primitive.ConstructionData prim, LibreMetaverse.UUID groupID, LibreMetaverse.Vector3 position, LibreMetaverse.Vector3 scale, LibreMetaverse.Quaternion rotation, LibreMetaverse.PrimFlags createFlags) libremetaverse libremetaverse::ObjectManager::add_prim_with_simulator_construction_data_uuid_vector3_vector3_quaternion_prim_flags pub fn add_prim_with_simulator_construction_data_uuid_vector3_vector3_quaternion_prim_flags(&self, simulator: libremetaverse::Simulator, prim: libremetaverse::PrimitiveConstructionData, group_id: libremetaverse_types::UUID, position: libremetaverse_types::Vector3, scale: libremetaverse_types::Vector3, rotation: libremetaverse_types::Quaternion, create_flags: libremetaverse_types::PrimFlags) -> Result<(), crate::Error> shared_self,owned,owned,owned,owned,owned,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.ObjectManager.AddPrim(LibreMetaverse.Simulator,LibreMetaverse.Primitive.ConstructionData,LibreMetaverse.UUID,LibreMetaverse.Vector3,LibreMetaverse.Vector3,LibreMetaverse.Quaternion,LibreMetaverse.PrimFlags) method System.Void LibreMetaverse.ObjectManager.AddPrim(LibreMetaverse.Simulator simulator, LibreMetaverse.Primitive.ConstructionData prim, LibreMetaverse.UUID groupID, LibreMetaverse.Vector3 position, LibreMetaverse.Vector3 scale, LibreMetaverse.Quaternion rotation, LibreMetaverse.PrimFlags createFlags) libremetaverse libremetaverse::ObjectManager::add_prim_with_simulator_construction_data_uuid_vector3_vector3_quaternion_prim_flags pub fn add_prim_with_simulator_construction_data_uuid_vector3_vector3_quaternion_prim_flags(&self, simulator: libremetaverse::Simulator, prim: libremetaverse::PrimitiveConstructionData, group_id: libremetaverse_types::UUID, position: libremetaverse_types::Vector3, scale: libremetaverse_types::Vector3, rotation: libremetaverse_types::Quaternion, create_flags: libremetaverse_types::PrimFlags) -> Result<(), crate::Error> shared_self,owned,owned,owned,owned,owned,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
@@ -24228,10 +24228,10 @@ M:LibreMetaverse.Primitive.TextureEntry.#ctor(LibreMetaverse.Primitive.TextureEn
|
|||||||
M:LibreMetaverse.Primitive.TextureEntry.#ctor(LibreMetaverse.Primitive.TextureEntryFace) constructor LibreMetaverse.Primitive.TextureEntry(LibreMetaverse.Primitive.TextureEntryFace defaultFace) libremetaverse libremetaverse::PrimitiveTextureEntry::new_with_texture_entry_face pub fn new_with_texture_entry_face(default_face: libremetaverse::PrimitiveTextureEntryFace) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Primitive.TextureEntry.#ctor(LibreMetaverse.Primitive.TextureEntryFace) constructor LibreMetaverse.Primitive.TextureEntry(LibreMetaverse.Primitive.TextureEntryFace defaultFace) libremetaverse libremetaverse::PrimitiveTextureEntry::new_with_texture_entry_face pub fn new_with_texture_entry_face(default_face: libremetaverse::PrimitiveTextureEntryFace) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Primitive.TextureEntry.#ctor(LibreMetaverse.UUID) constructor LibreMetaverse.Primitive.TextureEntry(LibreMetaverse.UUID defaultTextureID) libremetaverse libremetaverse::PrimitiveTextureEntry::new_with_uuid pub fn new_with_uuid(default_texture_id: libremetaverse_types::UUID) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Primitive.TextureEntry.#ctor(LibreMetaverse.UUID) constructor LibreMetaverse.Primitive.TextureEntry(LibreMetaverse.UUID defaultTextureID) libremetaverse libremetaverse::PrimitiveTextureEntry::new_with_uuid pub fn new_with_uuid(default_texture_id: libremetaverse_types::UUID) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Primitive.TextureEntry.#ctor(System.Byte[],System.Int32,System.Int32) constructor LibreMetaverse.Primitive.TextureEntry(System.Byte[] data, System.Int32 pos, System.Int32 length) libremetaverse libremetaverse::PrimitiveTextureEntry::new_with_bytes_int32_int32 pub fn new_with_bytes_int32_int32(data: Vec<u8>, pos: i32, length: i32) -> Result<Self, crate::Error> owned,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Primitive.TextureEntry.#ctor(System.Byte[],System.Int32,System.Int32) constructor LibreMetaverse.Primitive.TextureEntry(System.Byte[] data, System.Int32 pos, System.Int32 length) libremetaverse libremetaverse::PrimitiveTextureEntry::new_with_bytes_int32_int32 pub fn new_with_bytes_int32_int32(data: Vec<u8>, pos: i32, length: i32) -> Result<Self, crate::Error> owned,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Primitive.TextureEntry.CreateFace(System.UInt32) method LibreMetaverse.Primitive.TextureEntryFace LibreMetaverse.Primitive.TextureEntry.CreateFace(System.UInt32 index) libremetaverse libremetaverse::PrimitiveTextureEntry::create_face pub fn create_face(&self, index: u32) -> Result<libremetaverse::PrimitiveTextureEntryFace, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Primitive.TextureEntry.CreateFace(System.UInt32) method LibreMetaverse.Primitive.TextureEntryFace LibreMetaverse.Primitive.TextureEntry.CreateFace(System.UInt32 index) libremetaverse libremetaverse::PrimitiveTextureEntry::create_face pub fn create_face(&mut self, index: u32) -> Result<&mut libremetaverse::PrimitiveTextureEntryFace, crate::Error> mutable_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Primitive.TextureEntry.FromOSD(LibreMetaverse.StructuredData.OSD) method LibreMetaverse.Primitive.TextureEntry LibreMetaverse.Primitive.TextureEntry.FromOSD(LibreMetaverse.StructuredData.OSD osd) libremetaverse libremetaverse::PrimitiveTextureEntry::from_osd pub fn from_osd(osd: libremetaverse_structured_data::OSD) -> Result<libremetaverse::PrimitiveTextureEntry, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Primitive.TextureEntry.FromOSD(LibreMetaverse.StructuredData.OSD) method LibreMetaverse.Primitive.TextureEntry LibreMetaverse.Primitive.TextureEntry.FromOSD(LibreMetaverse.StructuredData.OSD osd) libremetaverse libremetaverse::PrimitiveTextureEntry::from_osd pub fn from_osd(osd: libremetaverse_structured_data::OSD) -> Result<libremetaverse::PrimitiveTextureEntry, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Primitive.TextureEntry.GetBytes method System.Byte[] LibreMetaverse.Primitive.TextureEntry.GetBytes() libremetaverse libremetaverse::PrimitiveTextureEntry::get_bytes pub fn get_bytes(&self) -> Result<Vec<u8>, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Primitive.TextureEntry.GetBytes method System.Byte[] LibreMetaverse.Primitive.TextureEntry.GetBytes() libremetaverse libremetaverse::PrimitiveTextureEntry::get_bytes pub fn get_bytes(&self) -> Result<Vec<u8>, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Primitive.TextureEntry.GetFace(System.UInt32) method LibreMetaverse.Primitive.TextureEntryFace LibreMetaverse.Primitive.TextureEntry.GetFace(System.UInt32 index) libremetaverse libremetaverse::PrimitiveTextureEntry::get_face pub fn get_face(&self, index: u32) -> Result<libremetaverse::PrimitiveTextureEntryFace, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Primitive.TextureEntry.GetFace(System.UInt32) method LibreMetaverse.Primitive.TextureEntryFace LibreMetaverse.Primitive.TextureEntry.GetFace(System.UInt32 index) libremetaverse libremetaverse::PrimitiveTextureEntry::get_face pub fn get_face(&self, index: u32) -> Result<Option<&libremetaverse::PrimitiveTextureEntryFace>, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Primitive.TextureEntry.GetHashCode method System.Int32 LibreMetaverse.Primitive.TextureEntry.GetHashCode() libremetaverse libremetaverse::PrimitiveTextureEntry::get_hash_code pub fn get_hash_code(&self) -> i32 shared_self sync infallible_placeholder direct_snake_case method mapped
|
M:LibreMetaverse.Primitive.TextureEntry.GetHashCode method System.Int32 LibreMetaverse.Primitive.TextureEntry.GetHashCode() libremetaverse libremetaverse::PrimitiveTextureEntry::get_hash_code pub fn get_hash_code(&self) -> i32 shared_self sync infallible_placeholder direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Primitive.TextureEntry.GetOSD method LibreMetaverse.StructuredData.OSD LibreMetaverse.Primitive.TextureEntry.GetOSD() libremetaverse libremetaverse::PrimitiveTextureEntry::get_osd pub fn get_osd(&self) -> Result<libremetaverse_structured_data::OSD, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Primitive.TextureEntry.GetOSD method LibreMetaverse.StructuredData.OSD LibreMetaverse.Primitive.TextureEntry.GetOSD() libremetaverse libremetaverse::PrimitiveTextureEntry::get_osd pub fn get_osd(&self) -> Result<libremetaverse_structured_data::OSD, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Primitive.TextureEntry.ToString method System.String LibreMetaverse.Primitive.TextureEntry.ToString() libremetaverse libremetaverse::PrimitiveTextureEntry::to_string pub fn to_string(&self) -> String shared_self sync infallible_placeholder direct_snake_case method mapped
|
M:LibreMetaverse.Primitive.TextureEntry.ToString method System.String LibreMetaverse.Primitive.TextureEntry.ToString() libremetaverse libremetaverse::PrimitiveTextureEntry::to_string pub fn to_string(&self) -> String shared_self sync infallible_placeholder direct_snake_case method mapped
|
||||||
@@ -24648,7 +24648,7 @@ M:LibreMetaverse.SimulatorFeatures.Get(System.String) method LibreMetaverse.Stru
|
|||||||
M:LibreMetaverse.SimulatorFeatures.Has(System.String) method System.Boolean LibreMetaverse.SimulatorFeatures.Has(System.String feature) libremetaverse libremetaverse::SimulatorFeatures::has pub fn has(&self, feature: String) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.SimulatorFeatures.Has(System.String) method System.Boolean LibreMetaverse.SimulatorFeatures.Has(System.String feature) libremetaverse libremetaverse::SimulatorFeatures::has pub fn has(&self, feature: String) -> Result<bool, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.SimulatorFeatures.SetFeatures(System.Net.Http.HttpResponseMessage,System.Byte[],System.Exception) method System.Void LibreMetaverse.SimulatorFeatures.SetFeatures(System.Net.Http.HttpResponseMessage response, System.Byte[] responseData, System.Exception error) libremetaverse libremetaverse::SimulatorFeatures::set_features pub fn set_features(&self, response: Option<libremetaverse_types::compat::HttpResponse>, response_data: Option<Vec<u8>>, error: Option<libremetaverse_types::compat::ExternalError>) -> Result<(), crate::Error> shared_self,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.SimulatorFeatures.SetFeatures(System.Net.Http.HttpResponseMessage,System.Byte[],System.Exception) method System.Void LibreMetaverse.SimulatorFeatures.SetFeatures(System.Net.Http.HttpResponseMessage response, System.Byte[] responseData, System.Exception error) libremetaverse libremetaverse::SimulatorFeatures::set_features pub fn set_features(&self, response: Option<libremetaverse_types::compat::HttpResponse>, response_data: Option<Vec<u8>>, error: Option<libremetaverse_types::compat::ExternalError>) -> Result<(), crate::Error> shared_self,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.SkeletalBoneInfo.#ctor(System.String,LibreMetaverse.Vector3,LibreMetaverse.Vector3,System.Boolean) constructor LibreMetaverse.SkeletalBoneInfo(System.String boneName, LibreMetaverse.Vector3 scaleDeformation, LibreMetaverse.Vector3 positionDeformation, System.Boolean hasPositionDeformation) libremetaverse libremetaverse::SkeletalBoneInfo::new pub fn new(bone_name: String, scale_deformation: libremetaverse_types::Vector3, position_deformation: libremetaverse_types::Vector3, has_position_deformation: bool) -> Result<Self, crate::Error> owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.SkeletalBoneInfo.#ctor(System.String,LibreMetaverse.Vector3,LibreMetaverse.Vector3,System.Boolean) constructor LibreMetaverse.SkeletalBoneInfo(System.String boneName, LibreMetaverse.Vector3 scaleDeformation, LibreMetaverse.Vector3 positionDeformation, System.Boolean hasPositionDeformation) libremetaverse libremetaverse::SkeletalBoneInfo::new pub fn new(bone_name: String, scale_deformation: libremetaverse_types::Vector3, position_deformation: libremetaverse_types::Vector3, has_position_deformation: bool) -> Result<Self, crate::Error> owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.SlurlParser.#ctor(System.String) constructor LibreMetaverse.SlurlParser(System.String location) libremetaverse libremetaverse::SlurlParser::new pub fn new(location: String) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.SlurlParser.#ctor(System.String) constructor LibreMetaverse.SlurlParser(System.String location) libremetaverse libremetaverse::SlurlParser::new pub fn new(location: Option<String>) -> Result<Self, crate::Error> optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.SlurlParser.GetAgentUrl(LibreMetaverse.UUID,System.String) method System.String LibreMetaverse.SlurlParser.GetAgentUrl(LibreMetaverse.UUID agentId, System.String action = default) libremetaverse libremetaverse::SlurlParser::get_agent_url pub fn get_agent_url(agent_id: libremetaverse_types::UUID, action: Option<String>) -> Result<String, crate::Error> owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.SlurlParser.GetAgentUrl(LibreMetaverse.UUID,System.String) method System.String LibreMetaverse.SlurlParser.GetAgentUrl(LibreMetaverse.UUID agentId, System.String action = default) libremetaverse libremetaverse::SlurlParser::get_agent_url pub fn get_agent_url(agent_id: libremetaverse_types::UUID, action: Option<String>) -> Result<String, crate::Error> owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.SlurlParser.GetGroupUrl(LibreMetaverse.UUID,System.String) method System.String LibreMetaverse.SlurlParser.GetGroupUrl(LibreMetaverse.UUID groupId, System.String action = default) libremetaverse libremetaverse::SlurlParser::get_group_url pub fn get_group_url(group_id: libremetaverse_types::UUID, action: Option<String>) -> Result<String, crate::Error> owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.SlurlParser.GetGroupUrl(LibreMetaverse.UUID,System.String) method System.String LibreMetaverse.SlurlParser.GetGroupUrl(LibreMetaverse.UUID groupId, System.String action = default) libremetaverse libremetaverse::SlurlParser::get_group_url pub fn get_group_url(group_id: libremetaverse_types::UUID, action: Option<String>) -> Result<String, crate::Error> owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.SlurlParser.GetLoginUrl(System.String,System.String,System.String) method System.String LibreMetaverse.SlurlParser.GetLoginUrl(System.String lastName = default, System.String sessionId = default, System.String location = default) libremetaverse libremetaverse::SlurlParser::get_login_url pub fn get_login_url(last_name: Option<String>, session_id: Option<String>, location: Option<String>) -> Result<String, crate::Error> optional_owned,optional_owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.SlurlParser.GetLoginUrl(System.String,System.String,System.String) method System.String LibreMetaverse.SlurlParser.GetLoginUrl(System.String lastName = default, System.String sessionId = default, System.String location = default) libremetaverse libremetaverse::SlurlParser::get_login_url pub fn get_login_url(last_name: Option<String>, session_id: Option<String>, location: Option<String>) -> Result<String, crate::Error> optional_owned,optional_owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
|
|||||||
|
Can't render this file because it is too large.
|
@@ -1036,16 +1036,18 @@ pub enum FolderType {
|
|||||||
|
|
||||||
/// C# type: `T:LibreMetaverse.HoleType`.
|
/// C# type: `T:LibreMetaverse.HoleType`.
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
#[repr(u8)]
|
#[repr(transparent)]
|
||||||
pub enum HoleType {
|
pub struct HoleType(pub u8);
|
||||||
|
#[allow(non_upper_case_globals)]
|
||||||
|
impl HoleType {
|
||||||
/// C# member: `F:LibreMetaverse.HoleType.Circle`.
|
/// C# member: `F:LibreMetaverse.HoleType.Circle`.
|
||||||
Circle = 16,
|
pub const Circle: Self = Self(16);
|
||||||
/// C# member: `F:LibreMetaverse.HoleType.Same`.
|
/// C# member: `F:LibreMetaverse.HoleType.Same`.
|
||||||
Same = 0,
|
pub const Same: Self = Self(0);
|
||||||
/// C# member: `F:LibreMetaverse.HoleType.Square`.
|
/// C# member: `F:LibreMetaverse.HoleType.Square`.
|
||||||
Square = 32,
|
pub const Square: Self = Self(32);
|
||||||
/// C# member: `F:LibreMetaverse.HoleType.Triangle`.
|
/// C# member: `F:LibreMetaverse.HoleType.Triangle`.
|
||||||
Triangle = 48,
|
pub const Triangle: Self = Self(48);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// C# type: `T:LibreMetaverse.ICacheDictionaryRemovalStrategy`1`.
|
/// C# type: `T:LibreMetaverse.ICacheDictionaryRemovalStrategy`1`.
|
||||||
|
|||||||
@@ -901,7 +901,9 @@ impl AgentManager {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.AgentManager.#ctor(LibreMetaverse.GridClient)`.
|
/// C# member: `M:LibreMetaverse.AgentManager.#ctor(LibreMetaverse.GridClient)`.
|
||||||
pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> {
|
pub fn new(
|
||||||
|
client: Option<std::sync::Arc<libremetaverse::GridClient>>,
|
||||||
|
) -> Result<Self, crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
"M:LibreMetaverse.AgentManager.#ctor(LibreMetaverse.GridClient)",
|
"M:LibreMetaverse.AgentManager.#ctor(LibreMetaverse.GridClient)",
|
||||||
)
|
)
|
||||||
@@ -11611,7 +11613,9 @@ impl GridManager {
|
|||||||
libremetaverse_types::unimplemented_api!("E:LibreMetaverse.GridManager.RegionHandleReply")
|
libremetaverse_types::unimplemented_api!("E:LibreMetaverse.GridManager.RegionHandleReply")
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.GridManager.#ctor(LibreMetaverse.GridClient)`.
|
/// C# member: `M:LibreMetaverse.GridManager.#ctor(LibreMetaverse.GridClient)`.
|
||||||
pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> {
|
pub fn new(
|
||||||
|
client: Option<std::sync::Arc<libremetaverse::GridClient>>,
|
||||||
|
) -> Result<Self, crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
"M:LibreMetaverse.GridManager.#ctor(LibreMetaverse.GridClient)",
|
"M:LibreMetaverse.GridManager.#ctor(LibreMetaverse.GridClient)",
|
||||||
)
|
)
|
||||||
@@ -20642,7 +20646,9 @@ impl ObjectManager {
|
|||||||
/// C# member: `F:LibreMetaverse.ObjectManager.HAVOK_TIMESTEP`.
|
/// C# member: `F:LibreMetaverse.ObjectManager.HAVOK_TIMESTEP`.
|
||||||
pub const HAVOK_TIMESTEP: f32 = 0.022222223;
|
pub const HAVOK_TIMESTEP: f32 = 0.022222223;
|
||||||
/// C# member: `M:LibreMetaverse.ObjectManager.#ctor(LibreMetaverse.GridClient)`.
|
/// C# member: `M:LibreMetaverse.ObjectManager.#ctor(LibreMetaverse.GridClient)`.
|
||||||
pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> {
|
pub fn new(
|
||||||
|
client: Option<std::sync::Arc<libremetaverse::GridClient>>,
|
||||||
|
) -> Result<Self, crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
"M:LibreMetaverse.ObjectManager.#ctor(LibreMetaverse.GridClient)",
|
"M:LibreMetaverse.ObjectManager.#ctor(LibreMetaverse.GridClient)",
|
||||||
)
|
)
|
||||||
@@ -23536,7 +23542,7 @@ pub struct Primitive {
|
|||||||
/// C# member: `F:LibreMetaverse.Primitive.Flags`.
|
/// C# member: `F:LibreMetaverse.Primitive.Flags`.
|
||||||
pub flags: libremetaverse_types::PrimFlags,
|
pub flags: libremetaverse_types::PrimFlags,
|
||||||
/// C# member: `F:LibreMetaverse.Primitive.Flexible`.
|
/// C# member: `F:LibreMetaverse.Primitive.Flexible`.
|
||||||
pub flexible: libremetaverse::PrimitiveFlexibleData,
|
pub flexible: Option<libremetaverse::PrimitiveFlexibleData>,
|
||||||
/// C# member: `F:LibreMetaverse.Primitive.GroupID`.
|
/// C# member: `F:LibreMetaverse.Primitive.GroupID`.
|
||||||
pub group_id: libremetaverse_types::UUID,
|
pub group_id: libremetaverse_types::UUID,
|
||||||
/// C# member: `F:LibreMetaverse.Primitive.ID`.
|
/// C# member: `F:LibreMetaverse.Primitive.ID`.
|
||||||
@@ -23550,9 +23556,9 @@ pub struct Primitive {
|
|||||||
/// C# member: `F:LibreMetaverse.Primitive.JointPivot`.
|
/// C# member: `F:LibreMetaverse.Primitive.JointPivot`.
|
||||||
pub joint_pivot: libremetaverse_types::Vector3,
|
pub joint_pivot: libremetaverse_types::Vector3,
|
||||||
/// C# member: `F:LibreMetaverse.Primitive.Light`.
|
/// C# member: `F:LibreMetaverse.Primitive.Light`.
|
||||||
pub light: libremetaverse::PrimitiveLightData,
|
pub light: Option<libremetaverse::PrimitiveLightData>,
|
||||||
/// C# member: `F:LibreMetaverse.Primitive.LightMap`.
|
/// C# member: `F:LibreMetaverse.Primitive.LightMap`.
|
||||||
pub light_map: libremetaverse::PrimitiveLightImage,
|
pub light_map: Option<libremetaverse::PrimitiveLightImage>,
|
||||||
/// C# member: `F:LibreMetaverse.Primitive.LocalID`.
|
/// C# member: `F:LibreMetaverse.Primitive.LocalID`.
|
||||||
pub local_id: u32,
|
pub local_id: u32,
|
||||||
/// C# member: `F:LibreMetaverse.Primitive.MediaURL`.
|
/// C# member: `F:LibreMetaverse.Primitive.MediaURL`.
|
||||||
@@ -24550,7 +24556,7 @@ pub struct PrimitiveTextureEntry {
|
|||||||
/// C# member: `F:LibreMetaverse.Primitive.TextureEntry.DefaultTexture`.
|
/// C# member: `F:LibreMetaverse.Primitive.TextureEntry.DefaultTexture`.
|
||||||
pub default_texture: Option<libremetaverse::PrimitiveTextureEntryFace>,
|
pub default_texture: Option<libremetaverse::PrimitiveTextureEntryFace>,
|
||||||
/// C# member: `F:LibreMetaverse.Primitive.TextureEntry.FaceTextures`.
|
/// C# member: `F:LibreMetaverse.Primitive.TextureEntry.FaceTextures`.
|
||||||
pub face_textures: Vec<libremetaverse::PrimitiveTextureEntryFace>,
|
pub face_textures: Vec<Option<libremetaverse::PrimitiveTextureEntryFace>>,
|
||||||
}
|
}
|
||||||
impl PrimitiveTextureEntry {
|
impl PrimitiveTextureEntry {
|
||||||
/// C# member: `F:LibreMetaverse.Primitive.TextureEntry.MAX_FACES`.
|
/// C# member: `F:LibreMetaverse.Primitive.TextureEntry.MAX_FACES`.
|
||||||
@@ -24597,9 +24603,9 @@ impl PrimitiveTextureEntry {
|
|||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Primitive.TextureEntry.CreateFace(System.UInt32)`.
|
/// C# member: `M:LibreMetaverse.Primitive.TextureEntry.CreateFace(System.UInt32)`.
|
||||||
pub fn create_face(
|
pub fn create_face(
|
||||||
&self,
|
&mut self,
|
||||||
index: u32,
|
index: u32,
|
||||||
) -> Result<libremetaverse::PrimitiveTextureEntryFace, crate::Error> {
|
) -> Result<&mut libremetaverse::PrimitiveTextureEntryFace, crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
"M:LibreMetaverse.Primitive.TextureEntry.CreateFace(System.UInt32)",
|
"M:LibreMetaverse.Primitive.TextureEntry.CreateFace(System.UInt32)",
|
||||||
)
|
)
|
||||||
@@ -24620,7 +24626,7 @@ impl PrimitiveTextureEntry {
|
|||||||
pub fn get_face(
|
pub fn get_face(
|
||||||
&self,
|
&self,
|
||||||
index: u32,
|
index: u32,
|
||||||
) -> Result<libremetaverse::PrimitiveTextureEntryFace, crate::Error> {
|
) -> Result<Option<&libremetaverse::PrimitiveTextureEntryFace>, crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
"M:LibreMetaverse.Primitive.TextureEntry.GetFace(System.UInt32)",
|
"M:LibreMetaverse.Primitive.TextureEntry.GetFace(System.UInt32)",
|
||||||
)
|
)
|
||||||
@@ -26821,7 +26827,7 @@ pub enum SlappCommand {
|
|||||||
pub struct SlurlParser;
|
pub struct SlurlParser;
|
||||||
impl SlurlParser {
|
impl SlurlParser {
|
||||||
/// C# member: `M:LibreMetaverse.SlurlParser.#ctor(System.String)`.
|
/// C# member: `M:LibreMetaverse.SlurlParser.#ctor(System.String)`.
|
||||||
pub fn new(location: String) -> Result<Self, crate::Error> {
|
pub fn new(location: Option<String>) -> Result<Self, crate::Error> {
|
||||||
libremetaverse_types::not_implemented("M:LibreMetaverse.SlurlParser.#ctor(System.String)")
|
libremetaverse_types::not_implemented("M:LibreMetaverse.SlurlParser.#ctor(System.String)")
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.SlurlParser.GetAgentUrl(LibreMetaverse.UUID,System.String)`.
|
/// C# member: `M:LibreMetaverse.SlurlParser.GetAgentUrl(LibreMetaverse.UUID,System.String)`.
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ mod asset_archive_semantics;
|
|||||||
mod avatar_animesh_semantics;
|
mod avatar_animesh_semantics;
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod batch_link_internal_semantics;
|
mod batch_link_internal_semantics;
|
||||||
|
#[cfg(test)]
|
||||||
|
mod world_internal_semantics;
|
||||||
|
|
||||||
type Terrain = Vec<Vec<f32>>;
|
type Terrain = Vec<Vec<f32>>;
|
||||||
type TerrainLoaded = Box<dyn Fn(Terrain, i64, i64) + Send + Sync>;
|
type TerrainLoaded = Box<dyn Fn(Terrain, i64, i64) + Send + Sync>;
|
||||||
@@ -124,6 +126,44 @@ impl InventoryAISClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
impl AgentManager {
|
||||||
|
fn extract_experience_permission(
|
||||||
|
_map: libremetaverse_structured_data::OSDMap,
|
||||||
|
_experience_id: libremetaverse_types::UUID,
|
||||||
|
) -> Result<String, Error> {
|
||||||
|
libremetaverse_types::not_implemented(
|
||||||
|
"M:LibreMetaverse.AgentManager.ExtractExperiencePermission(LibreMetaverse.StructuredData.OSDMap,LibreMetaverse.UUID)",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code, clippy::unused_self)]
|
||||||
|
impl EstateTools {
|
||||||
|
fn estate_owner_message_handler(
|
||||||
|
&self,
|
||||||
|
_packet: packets::EstateOwnerMessagePacket,
|
||||||
|
_simulator: Simulator,
|
||||||
|
) -> Result<(), Error> {
|
||||||
|
libremetaverse_types::not_implemented(
|
||||||
|
"M:LibreMetaverse.EstateTools.EstateOwnerMessageHandler(System.Object,LibreMetaverse.PacketReceivedEventArgs)",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code, clippy::unused_self)]
|
||||||
|
impl NetworkManager {
|
||||||
|
fn raise_sim_console_response(
|
||||||
|
&self,
|
||||||
|
_message: messages::linden::SimConsoleResponseMessage,
|
||||||
|
_simulator: Simulator,
|
||||||
|
) -> Result<(), Error> {
|
||||||
|
libremetaverse_types::not_implemented(
|
||||||
|
"F:LibreMetaverse.NetworkManager.CapsEvents.SimConsoleResponse",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
impl imaging::Baker {
|
impl imaging::Baker {
|
||||||
fn resize_to_bake_dimensions(
|
fn resize_to_bake_dimensions(
|
||||||
|
|||||||
217
crates/libremetaverse/src/world_internal_semantics.rs
Normal file
217
crates/libremetaverse/src/world_internal_semantics.rs
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
// Exact Rust translations of the C# tests that deliberately invoke internal handlers.
|
||||||
|
// Source SHA-256: 74fa1275cd1f6c2a372af2fefc011a3e764f028a8957291d61f599bcb023a8ff
|
||||||
|
// Source SHA-256: 7b67b72c2ad652626126d0e4eda7e8c26fc94c28f0f915238b2925f80a3d4af2
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
use libremetaverse_structured_data::{OSD, OSDMap};
|
||||||
|
use libremetaverse_types::UUID;
|
||||||
|
use packets::{
|
||||||
|
EstateOwnerMessagePacket, EstateOwnerMessagePacketAgentDataBlock,
|
||||||
|
EstateOwnerMessagePacketMethodDataBlock, EstateOwnerMessagePacketParamListBlock,
|
||||||
|
};
|
||||||
|
use std::collections::HashMap;
|
||||||
|
use std::future::Future;
|
||||||
|
use std::sync::{Arc, Mutex};
|
||||||
|
use std::task::{Context, Poll, Wake, Waker};
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
fn uuid() -> UUID {
|
||||||
|
UUID::random().expect("UUID Random")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn ids(values: impl IntoIterator<Item = UUID>) -> OSD {
|
||||||
|
OSD::Array(values.into_iter().map(OSD::UUID).collect())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn map(entries: impl IntoIterator<Item = (&'static str, OSD)>) -> OSDMap {
|
||||||
|
OSDMap::new_with_dictionary(
|
||||||
|
entries
|
||||||
|
.into_iter()
|
||||||
|
.map(|(key, value)| (key.into(), value))
|
||||||
|
.collect(),
|
||||||
|
)
|
||||||
|
.expect("OSDMap dictionary constructor")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn simulator() -> Simulator {
|
||||||
|
Simulator::new(
|
||||||
|
GridClient::new().expect("simulator GridClient constructor"),
|
||||||
|
"127.0.0.1:13".parse().unwrap(),
|
||||||
|
0,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.expect("Simulator constructor")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn estate_packet(blocked: &[UUID], trusted: &[UUID], allowed: &[UUID]) -> EstateOwnerMessagePacket {
|
||||||
|
let counts = [
|
||||||
|
"1".to_owned(),
|
||||||
|
"0".to_owned(),
|
||||||
|
blocked.len().to_string(),
|
||||||
|
trusted.len().to_string(),
|
||||||
|
allowed.len().to_string(),
|
||||||
|
];
|
||||||
|
let mut parameters = counts
|
||||||
|
.into_iter()
|
||||||
|
.map(|value| EstateOwnerMessagePacketParamListBlock {
|
||||||
|
parameter: value.as_bytes().to_vec(),
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
parameters.extend(blocked.iter().chain(trusted).chain(allowed).map(|id| {
|
||||||
|
EstateOwnerMessagePacketParamListBlock {
|
||||||
|
parameter: id.get_bytes().expect("UUID bytes"),
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
EstateOwnerMessagePacket {
|
||||||
|
agent_data: EstateOwnerMessagePacketAgentDataBlock {
|
||||||
|
agent_id: uuid(),
|
||||||
|
session_id: uuid(),
|
||||||
|
transaction_id: uuid(),
|
||||||
|
},
|
||||||
|
method_data: EstateOwnerMessagePacketMethodDataBlock {
|
||||||
|
method: b"setexperience".to_vec(),
|
||||||
|
invoice: UUID::zero(),
|
||||||
|
},
|
||||||
|
param_list: parameters,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn block_on_with<F: Future>(future: F, mut after_pending: impl FnMut()) -> F::Output {
|
||||||
|
struct ThreadWake(std::thread::Thread);
|
||||||
|
impl Wake for ThreadWake {
|
||||||
|
fn wake(self: Arc<Self>) {
|
||||||
|
self.0.unpark();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let waker = Waker::from(Arc::new(ThreadWake(std::thread::current())));
|
||||||
|
let mut context = Context::from_waker(&waker);
|
||||||
|
let mut future = std::pin::pin!(future);
|
||||||
|
let mut invoked = false;
|
||||||
|
loop {
|
||||||
|
match future.as_mut().poll(&mut context) {
|
||||||
|
Poll::Ready(value) => return value,
|
||||||
|
Poll::Pending if !invoked => {
|
||||||
|
invoked = true;
|
||||||
|
after_pending();
|
||||||
|
}
|
||||||
|
Poll::Pending => std::thread::park_timeout(Duration::from_millis(10)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/EstateExperienceReplyTests.cs::EstateExperienceReplyTests.SetExperience_ParsesBlockedTrustedAndAllowedLists::test 49a77aa9d7c5bf1232082a08594e7ebcfafad11ab110c9e15d2ad4ea1831c649 translated
|
||||||
|
#[test]
|
||||||
|
fn set_experience_parses_blocked_trusted_and_allowed_lists() {
|
||||||
|
let blocked = uuid();
|
||||||
|
let trusted = uuid();
|
||||||
|
let allowed = [uuid(), uuid()];
|
||||||
|
let client = GridClient::new().expect("GridClient constructor");
|
||||||
|
let estate = client.estate();
|
||||||
|
let received = Arc::new(Mutex::new(None));
|
||||||
|
let captured = Arc::clone(&received);
|
||||||
|
let _subscription = estate.subscribe_estate_experience_reply(Arc::new(move |reply| {
|
||||||
|
*captured.lock().unwrap() = Some((reply.blocked(), reply.trusted(), reply.allowed()));
|
||||||
|
}));
|
||||||
|
estate
|
||||||
|
.estate_owner_message_handler(estate_packet(&[blocked], &[trusted], &allowed), simulator())
|
||||||
|
.unwrap();
|
||||||
|
let reply = received.lock().unwrap();
|
||||||
|
let (actual_blocked, actual_trusted, actual_allowed) =
|
||||||
|
reply.as_ref().expect("EstateExperienceReply event");
|
||||||
|
assert_eq!(actual_blocked, &[blocked]);
|
||||||
|
assert_eq!(actual_trusted, &[trusted]);
|
||||||
|
assert_eq!(actual_allowed, &allowed);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/EstateExperienceReplyTests.cs::EstateExperienceReplyTests.SetExperience_AllEmptyLists_ProducesEmptyResult::test 711eaebb11f5d7ece92946d3de240a341a4b1fd8f30617fd97cb059d0dc6a0b9 translated
|
||||||
|
#[test]
|
||||||
|
fn set_experience_all_empty_lists_produces_empty_result() {
|
||||||
|
let client = GridClient::new().expect("GridClient constructor");
|
||||||
|
let estate = client.estate();
|
||||||
|
let received = Arc::new(Mutex::new(None));
|
||||||
|
let captured = Arc::clone(&received);
|
||||||
|
let _subscription = estate.subscribe_estate_experience_reply(Arc::new(move |reply| {
|
||||||
|
*captured.lock().unwrap() = Some((reply.blocked(), reply.trusted(), reply.allowed()));
|
||||||
|
}));
|
||||||
|
estate
|
||||||
|
.estate_owner_message_handler(estate_packet(&[], &[], &[]), simulator())
|
||||||
|
.unwrap();
|
||||||
|
let reply = received.lock().unwrap();
|
||||||
|
let (blocked, trusted, allowed) = reply.as_ref().expect("EstateExperienceReply event");
|
||||||
|
assert!(blocked.is_empty());
|
||||||
|
assert!(trusted.is_empty());
|
||||||
|
assert!(allowed.is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow::test cf095ab428713004ebac6e1915a47ae0c03bd2958addbba2a39fd2f0edf51a74 translated
|
||||||
|
#[test]
|
||||||
|
fn extract_experience_permission_allowed_returns_allow() {
|
||||||
|
let id = uuid();
|
||||||
|
assert_eq!(
|
||||||
|
AgentManager::extract_experience_permission(map([("experiences", ids([id]))]), id).unwrap(),
|
||||||
|
"Allow"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock::test af084d1ab7a11079e6251865e8fd5aecfde38d2df359ebc1e208bc74925935c0 translated
|
||||||
|
#[test]
|
||||||
|
fn extract_experience_permission_blocked_returns_block() {
|
||||||
|
let id = uuid();
|
||||||
|
assert_eq!(
|
||||||
|
AgentManager::extract_experience_permission(map([("blocked", ids([id]))]), id).unwrap(),
|
||||||
|
"Block"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget::test 93204469ecfec2f3f4eb6838c99f6e2baf09bf76a075958d1ed369ba03767158 translated
|
||||||
|
#[test]
|
||||||
|
fn extract_experience_permission_neither_list_returns_forget() {
|
||||||
|
let id = uuid();
|
||||||
|
let input = OSDMap::new_with_dictionary(HashMap::from([
|
||||||
|
("experiences".into(), ids([uuid()])),
|
||||||
|
("blocked".into(), ids([uuid()])),
|
||||||
|
]))
|
||||||
|
.expect("OSDMap dictionary constructor");
|
||||||
|
assert_eq!(
|
||||||
|
AgentManager::extract_experience_permission(input, id).unwrap(),
|
||||||
|
"Forget"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent::test df6eb48241f71c34074be66869c9ae1d5980186583259568728261b5eedd7c48 translated
|
||||||
|
#[test]
|
||||||
|
fn send_sim_console_command_ignores_post_body_and_uses_response_event() {
|
||||||
|
let client = GridClient::new().expect("GridClient constructor");
|
||||||
|
let estate = client.estate();
|
||||||
|
let network = client.network();
|
||||||
|
let result = block_on_with(
|
||||||
|
estate.send_sim_console_command("show name".into(), Some(Duration::from_secs(5)), None),
|
||||||
|
|| {
|
||||||
|
let mut message = messages::linden::SimConsoleResponseMessage::new()
|
||||||
|
.expect("SimConsoleResponseMessage constructor");
|
||||||
|
message.body = "Agent Name".into();
|
||||||
|
network
|
||||||
|
.raise_sim_console_response(message, simulator())
|
||||||
|
.unwrap();
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
assert_eq!(result.as_deref(), Some("Agent Name"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout::test 2ac5a6c96f3acec341056387d727288fd3661565bd2a7c385078602efe8661da translated
|
||||||
|
#[test]
|
||||||
|
fn send_sim_console_command_no_response_event_returns_none_after_timeout() {
|
||||||
|
let client = GridClient::new().expect("GridClient constructor");
|
||||||
|
let result = block_on_with(
|
||||||
|
client.estate().send_sim_console_command(
|
||||||
|
"show name".into(),
|
||||||
|
Some(Duration::from_millis(200)),
|
||||||
|
None,
|
||||||
|
),
|
||||||
|
|| {},
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
assert!(result.is_none());
|
||||||
|
}
|
||||||
204
tests/PARITY.md
204
tests/PARITY.md
@@ -5,9 +5,9 @@ Generated from LibreMetaverse `2aa70bb68513b39795da5d13c88f31b86e85a3ba`. Stable
|
|||||||
## Status
|
## Status
|
||||||
|
|
||||||
- Total: **1,289**
|
- Total: **1,289**
|
||||||
- Pending/unreviewed: **779**
|
- Pending/unreviewed: **680**
|
||||||
- Translated/reviewed: **488**
|
- Translated/reviewed: **586**
|
||||||
- Ignored live/reviewed: **18** (19 upstream live candidates)
|
- Ignored live/reviewed: **19** (19 upstream live candidates)
|
||||||
- Benchmarks/reviewed: **4** (4 upstream benchmark candidates)
|
- Benchmarks/reviewed: **4** (4 upstream benchmark candidates)
|
||||||
- Drifted: **0**
|
- Drifted: **0**
|
||||||
|
|
||||||
@@ -166,11 +166,11 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.SerializeNestedComposite::test` | `BinarySDTests.SerializeNestedComposite` | `` | `LibreMetaverse.Tests/BinaryLLSDTests.cs:632` | `` | `` | `tests/compat/tests/structured_data.rs:587 (`binary_serialize_nested_composite`)` | `translated` | `092b52da3f0cf720595fdb84c929c8ad033c60ff978429cb1d27f9e215936b10` |
|
| `LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.SerializeNestedComposite::test` | `BinarySDTests.SerializeNestedComposite` | `` | `LibreMetaverse.Tests/BinaryLLSDTests.cs:632` | `` | `` | `tests/compat/tests/structured_data.rs:587 (`binary_serialize_nested_composite`)` | `translated` | `092b52da3f0cf720595fdb84c929c8ad033c60ff978429cb1d27f9e215936b10` |
|
||||||
| `LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.SerializeLongMessage::test` | `BinarySDTests.SerializeLongMessage` | `` | `LibreMetaverse.Tests/BinaryLLSDTests.cs:676` | `` | `` | `tests/compat/tests/structured_data.rs:598 (`binary_serialize_long_message`)` | `translated` | `b49afb91578e6c19193cd48acf161a9f8c57bbd20245783054709a509f63780e` |
|
| `LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.SerializeLongMessage::test` | `BinarySDTests.SerializeLongMessage` | `` | `LibreMetaverse.Tests/BinaryLLSDTests.cs:676` | `` | `` | `tests/compat/tests/structured_data.rs:598 (`binary_serialize_long_message`)` | `translated` | `b49afb91578e6c19193cd48acf161a9f8c57bbd20245783054709a509f63780e` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.InventoryAISClient_Null_Throws::test` | `ConstructorNullArgumentTests.InventoryAISClient_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:9` | `` | `` | `tests/compat/tests/inventory_ais_semantics.rs:120 (`inventory_ais_client_null_throws`)` | `translated` | `ac92e375efc45c50b37e6c82aea372d605fceb470ce053a025e05ff47a5c7121` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.InventoryAISClient_Null_Throws::test` | `ConstructorNullArgumentTests.InventoryAISClient_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:9` | `` | `` | `tests/compat/tests/inventory_ais_semantics.rs:120 (`inventory_ais_client_null_throws`)` | `translated` | `ac92e375efc45c50b37e6c82aea372d605fceb470ce053a025e05ff47a5c7121` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.GridManager_Null_Throws::test` | `ConstructorNullArgumentTests.GridManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:15` | `` | `` | `pending source translation` | `pending` | `e972a95f334b0f46948cda34c27124c28c44faf4372d0e598d7dc60050b49be4` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.GridManager_Null_Throws::test` | `ConstructorNullArgumentTests.GridManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:15` | `` | `` | `tests/compat/tests/world_constructor_semantics.rs:7 (`grid_manager_null_throws`)` | `translated` | `e972a95f334b0f46948cda34c27124c28c44faf4372d0e598d7dc60050b49be4` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.InventoryManager_Null_Throws::test` | `ConstructorNullArgumentTests.InventoryManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:21` | `` | `` | `tests/compat/tests/inventory_manager_semantics.rs:16 (`inventory_manager_null_throws`)` | `translated` | `5e7498066c944800354abbc71eea825fe90d0c40a25a6065967a3ebcc9efea74` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.InventoryManager_Null_Throws::test` | `ConstructorNullArgumentTests.InventoryManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:21` | `` | `` | `tests/compat/tests/inventory_manager_semantics.rs:16 (`inventory_manager_null_throws`)` | `translated` | `5e7498066c944800354abbc71eea825fe90d0c40a25a6065967a3ebcc9efea74` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AppearanceManager_Null_Throws::test` | `ConstructorNullArgumentTests.AppearanceManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:27` | `` | `` | `pending source translation` | `pending` | `a3c872805bc924b5a1a9441d5c9eb61ed6d6e9477e4bb411131359290b144ab4` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AppearanceManager_Null_Throws::test` | `ConstructorNullArgumentTests.AppearanceManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:27` | `` | `` | `pending source translation` | `pending` | `a3c872805bc924b5a1a9441d5c9eb61ed6d6e9477e4bb411131359290b144ab4` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.ObjectManager_Null_Throws::test` | `ConstructorNullArgumentTests.ObjectManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:33` | `` | `` | `pending source translation` | `pending` | `8a11feba0edfb35e5dd99f681182e8f5a5cf8a3f738211b45a683a8a2ad45ddb` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.ObjectManager_Null_Throws::test` | `ConstructorNullArgumentTests.ObjectManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:33` | `` | `` | `tests/compat/tests/world_constructor_semantics.rs:13 (`object_manager_null_throws`)` | `translated` | `8a11feba0edfb35e5dd99f681182e8f5a5cf8a3f738211b45a683a8a2ad45ddb` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AgentManager_Null_Throws::test` | `ConstructorNullArgumentTests.AgentManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:39` | `` | `` | `pending source translation` | `pending` | `d86e41b6cdd03063685aa330c31b9a274c1d400b9a461abf3065fe185fe0bbf0` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AgentManager_Null_Throws::test` | `ConstructorNullArgumentTests.AgentManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:39` | `` | `` | `tests/compat/tests/world_constructor_semantics.rs:19 (`agent_manager_null_throws`)` | `translated` | `d86e41b6cdd03063685aa330c31b9a274c1d400b9a461abf3065fe185fe0bbf0` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AvatarManager_Null_Throws::test` | `ConstructorNullArgumentTests.AvatarManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:45` | `` | `` | `pending source translation` | `pending` | `54f23cbf0ba87b0525c2914e78d75808e93fd1c460fc0bec4d15f09575b1431c` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AvatarManager_Null_Throws::test` | `ConstructorNullArgumentTests.AvatarManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:45` | `` | `` | `pending source translation` | `pending` | `54f23cbf0ba87b0525c2914e78d75808e93fd1c460fc0bec4d15f09575b1431c` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AssetManager_Null_Throws::test` | `ConstructorNullArgumentTests.AssetManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:51` | `` | `` | `tests/compat/tests/asset_capability_semantics.rs:821 (`asset_manager_none_client_is_argument_null`)` | `translated` | `4fa1be8b233dacf6a5955359f2197ff77ae85ffbf2c3c68fcd8cbe672c2c5f91` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AssetManager_Null_Throws::test` | `ConstructorNullArgumentTests.AssetManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:51` | `` | `` | `tests/compat/tests/asset_capability_semantics.rs:821 (`asset_manager_none_client_is_argument_null`)` | `translated` | `4fa1be8b233dacf6a5955359f2197ff77ae85ffbf2c3c68fcd8cbe672c2c5f91` |
|
||||||
| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException::test` | `CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:60` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:22 (`constructor_with_null_client_throws_argument_null_exception`)` | `translated` | `243079029ec81f92ffbc587007a2421389963f72c7843786c5b9a8634a7ddca3` |
|
| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException::test` | `CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:60` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:22 (`constructor_with_null_client_throws_argument_null_exception`)` | `translated` | `243079029ec81f92ffbc587007a2421389963f72c7843786c5b9a8634a7ddca3` |
|
||||||
@@ -217,25 +217,25 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/DownloadManagerTests.cs::DownloadManagerTests.QueueDownloadAsync_SingleDownload_CompletesSuccessfully::test` | `DownloadManagerTests.QueueDownloadAsync_SingleDownload_CompletesSuccessfully` | `` | `LibreMetaverse.Tests/DownloadManagerTests.cs:46` | `` | `` | `tests/compat/tests/network_semantics.rs:165 (`queue_download_single_completes_successfully`)` | `translated` | `f8feb54d38f79624ddf1d368e0599259ff9d474c08ea0249a8f244460a1f533f` |
|
| `LibreMetaverse.Tests/DownloadManagerTests.cs::DownloadManagerTests.QueueDownloadAsync_SingleDownload_CompletesSuccessfully::test` | `DownloadManagerTests.QueueDownloadAsync_SingleDownload_CompletesSuccessfully` | `` | `LibreMetaverse.Tests/DownloadManagerTests.cs:46` | `` | `` | `tests/compat/tests/network_semantics.rs:165 (`queue_download_single_completes_successfully`)` | `translated` | `f8feb54d38f79624ddf1d368e0599259ff9d474c08ea0249a8f244460a1f533f` |
|
||||||
| `LibreMetaverse.Tests/DownloadManagerTests.cs::DownloadManagerTests.QueueDownloadAsync_DeduplicatesRequests_SameUri_OneHttpCall::test` | `DownloadManagerTests.QueueDownloadAsync_DeduplicatesRequests_SameUri_OneHttpCall` | `` | `LibreMetaverse.Tests/DownloadManagerTests.cs:70` | `` | `` | `tests/compat/tests/network_semantics.rs:202 (`queue_download_deduplicates_same_uri`)` | `translated` | `dc3ffee1f6171833a8364750cfac2c6d3bfa812b404129e0425066ea212f2337` |
|
| `LibreMetaverse.Tests/DownloadManagerTests.cs::DownloadManagerTests.QueueDownloadAsync_DeduplicatesRequests_SameUri_OneHttpCall::test` | `DownloadManagerTests.QueueDownloadAsync_DeduplicatesRequests_SameUri_OneHttpCall` | `` | `LibreMetaverse.Tests/DownloadManagerTests.cs:70` | `` | `` | `tests/compat/tests/network_semantics.rs:202 (`queue_download_deduplicates_same_uri`)` | `translated` | `dc3ffee1f6171833a8364750cfac2c6d3bfa812b404129e0425066ea212f2337` |
|
||||||
| `LibreMetaverse.Tests/DownloadManagerTests.cs::DownloadManagerTests.QueueDownloadAsync_Cancellation_PropagatesToTask::test` | `DownloadManagerTests.QueueDownloadAsync_Cancellation_PropagatesToTask` | `` | `LibreMetaverse.Tests/DownloadManagerTests.cs:101` | `` | `` | `tests/compat/tests/network_semantics.rs:248 (`queue_download_cancellation_propagates`)` | `translated` | `9eb3791b1def609d6f45be0fff8ae67ea04332045c0c419c6c2e7d118aeb6271` |
|
| `LibreMetaverse.Tests/DownloadManagerTests.cs::DownloadManagerTests.QueueDownloadAsync_Cancellation_PropagatesToTask::test` | `DownloadManagerTests.QueueDownloadAsync_Cancellation_PropagatesToTask` | `` | `LibreMetaverse.Tests/DownloadManagerTests.cs:101` | `` | `` | `tests/compat/tests/network_semantics.rs:248 (`queue_download_cancellation_propagates`)` | `translated` | `9eb3791b1def609d6f45be0fff8ae67ea04332045c0c419c6c2e7d118aeb6271` |
|
||||||
| `LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.GetParcelEnvironment_UsesParcelidQueryParameter::test` | `EnvironmentManagerTests.GetParcelEnvironment_UsesParcelidQueryParameter` | `` | `LibreMetaverse.Tests/EnvironmentManagerTests.cs:105` | `Environment` | `` | `pending source translation` | `pending` | `5c2f2b0fa2a86955975c621b2415a92ff3da283215e669956e14bf5ee2a4c1f4` |
|
| `LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.GetParcelEnvironment_UsesParcelidQueryParameter::test` | `EnvironmentManagerTests.GetParcelEnvironment_UsesParcelidQueryParameter` | `` | `LibreMetaverse.Tests/EnvironmentManagerTests.cs:105` | `Environment` | `` | `tests/compat/tests/world_capability_semantics.rs:97 (`get_parcel_environment_uses_parcelid_query_parameter`)` | `translated` | `5c2f2b0fa2a86955975c621b2415a92ff3da283215e669956e14bf5ee2a4c1f4` |
|
||||||
| `LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.SetParcelEnvironment_SendsParcelidInQueryStringNotBody::test` | `EnvironmentManagerTests.SetParcelEnvironment_SendsParcelidInQueryStringNotBody` | `` | `LibreMetaverse.Tests/EnvironmentManagerTests.cs:128` | `Environment` | `` | `pending source translation` | `pending` | `f633e2d78e4c6a0fff42917ccfe8de68e4f6133a11e7eef7f9b757c3d1622f0f` |
|
| `LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.SetParcelEnvironment_SendsParcelidInQueryStringNotBody::test` | `EnvironmentManagerTests.SetParcelEnvironment_SendsParcelidInQueryStringNotBody` | `` | `LibreMetaverse.Tests/EnvironmentManagerTests.cs:128` | `Environment` | `` | `tests/compat/tests/world_capability_semantics.rs:116 (`set_parcel_environment_sends_parcelid_in_query_not_body`)` | `translated` | `f633e2d78e4c6a0fff42917ccfe8de68e4f6133a11e7eef7f9b757c3d1622f0f` |
|
||||||
| `LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.SetRegionEnvironment_OmitsQueryStringEntirely::test` | `EnvironmentManagerTests.SetRegionEnvironment_OmitsQueryStringEntirely` | `` | `LibreMetaverse.Tests/EnvironmentManagerTests.cs:158` | `Environment` | `` | `pending source translation` | `pending` | `bade6e06765506ad7e500ac3e5c9f168605ce25fef86647819d285a68b39f109` |
|
| `LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.SetRegionEnvironment_OmitsQueryStringEntirely::test` | `EnvironmentManagerTests.SetRegionEnvironment_OmitsQueryStringEntirely` | `` | `LibreMetaverse.Tests/EnvironmentManagerTests.cs:158` | `Environment` | `` | `tests/compat/tests/world_capability_semantics.rs:153 (`set_region_environment_omits_query_string_entirely`)` | `translated` | `bade6e06765506ad7e500ac3e5c9f168605ce25fef86647819d285a68b39f109` |
|
||||||
| `LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.ResetParcelEnvironment_SendsHttpDeleteNotPost::test` | `EnvironmentManagerTests.ResetParcelEnvironment_SendsHttpDeleteNotPost` | `` | `LibreMetaverse.Tests/EnvironmentManagerTests.cs:180` | `Environment` | `` | `pending source translation` | `pending` | `4360439192c137f5d7a2ceb83b8664f3917b4b261798050cb855d596f483f082` |
|
| `LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.ResetParcelEnvironment_SendsHttpDeleteNotPost::test` | `EnvironmentManagerTests.ResetParcelEnvironment_SendsHttpDeleteNotPost` | `` | `LibreMetaverse.Tests/EnvironmentManagerTests.cs:180` | `Environment` | `` | `tests/compat/tests/world_capability_semantics.rs:177 (`reset_parcel_environment_sends_delete_not_post`)` | `translated` | `4360439192c137f5d7a2ceb83b8664f3917b4b261798050cb855d596f483f082` |
|
||||||
| `LibreMetaverse.Tests/EstateExperienceReplyTests.cs::EstateExperienceReplyTests.SetExperience_ParsesBlockedTrustedAndAllowedLists::test` | `EstateExperienceReplyTests.SetExperience_ParsesBlockedTrustedAndAllowedLists` | `` | `LibreMetaverse.Tests/EstateExperienceReplyTests.cs:47` | `Estate` | `` | `pending source translation` | `pending` | `49a77aa9d7c5bf1232082a08594e7ebcfafad11ab110c9e15d2ad4ea1831c649` |
|
| `LibreMetaverse.Tests/EstateExperienceReplyTests.cs::EstateExperienceReplyTests.SetExperience_ParsesBlockedTrustedAndAllowedLists::test` | `EstateExperienceReplyTests.SetExperience_ParsesBlockedTrustedAndAllowedLists` | `` | `LibreMetaverse.Tests/EstateExperienceReplyTests.cs:47` | `Estate` | `` | `crates/libremetaverse/src/world_internal_semantics.rs:103 (`set_experience_parses_blocked_trusted_and_allowed_lists`)` | `translated` | `49a77aa9d7c5bf1232082a08594e7ebcfafad11ab110c9e15d2ad4ea1831c649` |
|
||||||
| `LibreMetaverse.Tests/EstateExperienceReplyTests.cs::EstateExperienceReplyTests.SetExperience_AllEmptyLists_ProducesEmptyResult::test` | `EstateExperienceReplyTests.SetExperience_AllEmptyLists_ProducesEmptyResult` | `` | `LibreMetaverse.Tests/EstateExperienceReplyTests.cs:97` | `Estate` | `` | `pending source translation` | `pending` | `711eaebb11f5d7ece92946d3de240a341a4b1fd8f30617fd97cb059d0dc6a0b9` |
|
| `LibreMetaverse.Tests/EstateExperienceReplyTests.cs::EstateExperienceReplyTests.SetExperience_AllEmptyLists_ProducesEmptyResult::test` | `EstateExperienceReplyTests.SetExperience_AllEmptyLists_ProducesEmptyResult` | `` | `LibreMetaverse.Tests/EstateExperienceReplyTests.cs:97` | `Estate` | `` | `crates/libremetaverse/src/world_internal_semantics.rs:127 (`set_experience_all_empty_lists_produces_empty_result`)` | `translated` | `711eaebb11f5d7ece92946d3de240a341a4b1fd8f30617fd97cb059d0dc6a0b9` |
|
||||||
| `LibreMetaverse.Tests/EstateToolsTests.cs::EstateToolsTests.RequestConvenant::test` | `EstateToolsTests.RequestConvenant` | `` | `LibreMetaverse.Tests/EstateToolsTests.cs:116` | `EstateTools, RequiresLiveServer` | `` | `pending source translation` | `pending` | `d8d752dd6e53477e4c66bcb5d0e3ec1021a9b3ceda1f689f59b5e606e1713729` |
|
| `LibreMetaverse.Tests/EstateToolsTests.cs::EstateToolsTests.RequestConvenant::test` | `EstateToolsTests.RequestConvenant` | `` | `LibreMetaverse.Tests/EstateToolsTests.cs:116` | `EstateTools, RequiresLiveServer` | `` | `tests/compat/tests/world_live_semantics.rs:59 (`request_covenant`)` | `ignored-live` | `d8d752dd6e53477e4c66bcb5d0e3ec1021a9b3ceda1f689f59b5e606e1713729` |
|
||||||
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_ReadsExperienceIdsKey::test` | `ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_ReadsExperienceIdsKey` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:47` | `Experience` | `` | `pending source translation` | `pending` | `aa1f7d09f6c79118ea2e60621d57bd63632085ce81bc979e42294aca53d4f0d9` |
|
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_ReadsExperienceIdsKey::test` | `ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_ReadsExperienceIdsKey` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:47` | `Experience` | `` | `tests/compat/tests/world_message_semantics.rs:30 (`experience_list_deserialize_reads_experience_ids_key`)` | `translated` | `aa1f7d09f6c79118ea2e60621d57bd63632085ce81bc979e42294aca53d4f0d9` |
|
||||||
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_IgnoresLegacyExperienceKeysKey::test` | `ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_IgnoresLegacyExperienceKeysKey` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:59` | `Experience` | `` | `pending source translation` | `pending` | `cd1d372b9a976c04dee11da1ade182e4f9239e1f7633e788347c6d5f255835ec` |
|
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_IgnoresLegacyExperienceKeysKey::test` | `ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_IgnoresLegacyExperienceKeysKey` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:59` | `Experience` | `` | `tests/compat/tests/world_message_semantics.rs:41 (`experience_list_deserialize_ignores_legacy_experience_keys_key`)` | `translated` | `cd1d372b9a976c04dee11da1ade182e4f9239e1f7633e788347c6d5f255835ec` |
|
||||||
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Serialize_WritesExperienceIdsKey::test` | `ExperienceListAndRegionMessageTests.ExperienceListMessage_Serialize_WritesExperienceIdsKey` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:70` | `Experience` | `` | `pending source translation` | `pending` | `3fa4cb5d598940f693285bcc64179a4dea927a3643a76a061a933a265488d4be` |
|
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Serialize_WritesExperienceIdsKey::test` | `ExperienceListAndRegionMessageTests.ExperienceListMessage_Serialize_WritesExperienceIdsKey` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:70` | `Experience` | `` | `tests/compat/tests/world_message_semantics.rs:51 (`experience_list_serialize_writes_experience_ids_key`)` | `translated` | `3fa4cb5d598940f693285bcc64179a4dea927a3643a76a061a933a265488d4be` |
|
||||||
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_ReadsBlockedTrustedAllowedAndDefault::test` | `ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_ReadsBlockedTrustedAllowedAndDefault` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:82` | `Experience` | `` | `pending source translation` | `pending` | `61df3b0c60d32b6c9bb843eb7a1a11fe8c0b1fd59c7a09853ad1b0e1d93cd4fd` |
|
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_ReadsBlockedTrustedAllowedAndDefault::test` | `ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_ReadsBlockedTrustedAllowedAndDefault` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:82` | `Experience` | `` | `tests/compat/tests/world_message_semantics.rs:61 (`region_experiences_deserialize_reads_all_lists_and_default`)` | `translated` | `61df3b0c60d32b6c9bb843eb7a1a11fe8c0b1fd59c7a09853ad1b0e1d93cd4fd` |
|
||||||
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_IgnoresLegacyContribKey::test` | `ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_IgnoresLegacyContribKey` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:107` | `Experience` | `` | `pending source translation` | `pending` | `851d037919003ebb414105e57bf37f73ba37dff8f733c36183c447f1349f3316` |
|
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_IgnoresLegacyContribKey::test` | `ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_IgnoresLegacyContribKey` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:107` | `Experience` | `` | `tests/compat/tests/world_message_semantics.rs:84 (`region_experiences_deserialize_ignores_legacy_contrib_key`)` | `translated` | `851d037919003ebb414105e57bf37f73ba37dff8f733c36183c447f1349f3316` |
|
||||||
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Serialize_WritesAllowedKeyNotContrib::test` | `ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Serialize_WritesAllowedKeyNotContrib` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:123` | `Experience` | `` | `pending source translation` | `pending` | `53c3a7d6a200816615a9efaa222ccf294e3a8334d320812c6ec56a0a3e7e05bb` |
|
| `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Serialize_WritesAllowedKeyNotContrib::test` | `ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Serialize_WritesAllowedKeyNotContrib` | `` | `LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs:123` | `Experience` | `` | `tests/compat/tests/world_message_semantics.rs:99 (`region_experiences_serialize_writes_allowed_not_contrib`)` | `translated` | `53c3a7d6a200816615a9efaa222ccf294e3a8334d320812c6ec56a0a3e7e05bb` |
|
||||||
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Deserialize_ReadsAllowedListFromExperiencesKey::test` | `ExperiencePreferencesMessageTests.Deserialize_ReadsAllowedListFromExperiencesKey` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:44` | `Experience` | `` | `pending source translation` | `pending` | `9bab78dbe142a3da6ad21a278f25d7da90776fce3861c7d602203c1e1842c9af` |
|
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Deserialize_ReadsAllowedListFromExperiencesKey::test` | `ExperiencePreferencesMessageTests.Deserialize_ReadsAllowedListFromExperiencesKey` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:44` | `Experience` | `` | `tests/compat/tests/world_message_semantics.rs:110 (`experience_preferences_deserialize_reads_experiences_and_blocked`)` | `translated` | `9bab78dbe142a3da6ad21a278f25d7da90776fce3861c7d602203c1e1842c9af` |
|
||||||
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Deserialize_IgnoresLegacyAllowedKey::test` | `ExperiencePreferencesMessageTests.Deserialize_IgnoresLegacyAllowedKey` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:63` | `Experience` | `` | `pending source translation` | `pending` | `ec6d5e7c81214ea4e3d99740fdd33961578f895a90a42082067ca9819d93d2b0` |
|
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Deserialize_IgnoresLegacyAllowedKey::test` | `ExperiencePreferencesMessageTests.Deserialize_IgnoresLegacyAllowedKey` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:63` | `Experience` | `` | `tests/compat/tests/world_message_semantics.rs:127 (`experience_preferences_deserialize_ignores_legacy_allowed_key`)` | `translated` | `ec6d5e7c81214ea4e3d99740fdd33961578f895a90a42082067ca9819d93d2b0` |
|
||||||
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Serialize_WritesAllowedListUnderExperiencesKey::test` | `ExperiencePreferencesMessageTests.Serialize_WritesAllowedListUnderExperiencesKey` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:80` | `Experience` | `` | `pending source translation` | `pending` | `45a0bffe39ab7bf0734ec5fce4435dbdda7ae94cf4e933210669e91dc45b1baf` |
|
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Serialize_WritesAllowedListUnderExperiencesKey::test` | `ExperiencePreferencesMessageTests.Serialize_WritesAllowedListUnderExperiencesKey` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:80` | `Experience` | `` | `tests/compat/tests/world_message_semantics.rs:141 (`experience_preferences_serialize_writes_experiences_not_allowed`)` | `translated` | `45a0bffe39ab7bf0734ec5fce4435dbdda7ae94cf4e933210669e91dc45b1baf` |
|
||||||
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:92` | `Experience` | `` | `pending source translation` | `pending` | `cf095ab428713004ebac6e1915a47ae0c03bd2958addbba2a39fd2f0edf51a74` |
|
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:92` | `Experience` | `` | `crates/libremetaverse/src/world_internal_semantics.rs:147 (`extract_experience_permission_allowed_returns_allow`)` | `translated` | `cf095ab428713004ebac6e1915a47ae0c03bd2958addbba2a39fd2f0edf51a74` |
|
||||||
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:101` | `Experience` | `` | `pending source translation` | `pending` | `af084d1ab7a11079e6251865e8fd5aecfde38d2df359ebc1e208bc74925935c0` |
|
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:101` | `Experience` | `` | `crates/libremetaverse/src/world_internal_semantics.rs:157 (`extract_experience_permission_blocked_returns_block`)` | `translated` | `af084d1ab7a11079e6251865e8fd5aecfde38d2df359ebc1e208bc74925935c0` |
|
||||||
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:110` | `Experience` | `` | `pending source translation` | `pending` | `93204469ecfec2f3f4eb6838c99f6e2baf09bf76a075958d1ed369ba03767158` |
|
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:110` | `Experience` | `` | `crates/libremetaverse/src/world_internal_semantics.rs:167 (`extract_experience_permission_neither_list_returns_forget`)` | `translated` | `93204469ecfec2f3f4eb6838c99f6e2baf09bf76a075958d1ed369ba03767158` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SetMaterialOverrideAsync_HappyPath_PostsBareArrayWithGltfJson::test` | `GLTFMaterialOverrideCapTests.SetMaterialOverrideAsync_HappyPath_PostsBareArrayWithGltfJson` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:64` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:179 (`set_material_override_posts_bare_array_with_gltf_json`)` | `translated` | `0c51b7b793111f5433e52057f26fa5a98d983e7230fefeb61a7b3408e97f28ee` |
|
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SetMaterialOverrideAsync_HappyPath_PostsBareArrayWithGltfJson::test` | `GLTFMaterialOverrideCapTests.SetMaterialOverrideAsync_HappyPath_PostsBareArrayWithGltfJson` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:64` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:179 (`set_material_override_posts_bare_array_with_gltf_json`)` | `translated` | `0c51b7b793111f5433e52057f26fa5a98d983e7230fefeb61a7b3408e97f28ee` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ClearMaterialOverrideAsync_SendsEmptyGltfJson::test` | `GLTFMaterialOverrideCapTests.ClearMaterialOverrideAsync_SendsEmptyGltfJson` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:86` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:215 (`clear_material_override_sends_empty_gltf_json`)` | `translated` | `8394d063ea71447d9ce2b76fd00be1d10967f9193e1eb909c5b9f2da56eec812` |
|
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ClearMaterialOverrideAsync_SendsEmptyGltfJson::test` | `GLTFMaterialOverrideCapTests.ClearMaterialOverrideAsync_SendsEmptyGltfJson` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:86` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:215 (`clear_material_override_sends_empty_gltf_json`)` | `translated` | `8394d063ea71447d9ce2b76fd00be1d10967f9193e1eb909c5b9f2da56eec812` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ApplyMaterialAsync_WithoutOverride_SendsAssetIdOnly::test` | `GLTFMaterialOverrideCapTests.ApplyMaterialAsync_WithoutOverride_SendsAssetIdOnly` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:100` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:237 (`apply_material_without_override_sends_asset_id_only`)` | `translated` | `1db03ab6710ecf532644398d1fef5e82520e1206058d66fb15c8885fdc8f8363` |
|
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ApplyMaterialAsync_WithoutOverride_SendsAssetIdOnly::test` | `GLTFMaterialOverrideCapTests.ApplyMaterialAsync_WithoutOverride_SendsAssetIdOnly` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:100` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:237 (`apply_material_without_override_sends_asset_id_only`)` | `translated` | `1db03ab6710ecf532644398d1fef5e82520e1206058d66fb15c8885fdc8f8363` |
|
||||||
@@ -469,22 +469,22 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/PacketTests.cs::PacketTests.ToBytesMultiple::test` | `PacketTests.ToBytesMultiple` | `` | `LibreMetaverse.Tests/PacketTests.cs:108` | `` | `` | `tests/compat/tests/wire_semantics.rs:329 (`packet_to_bytes_multiple`)` | `translated` | `0e0f06d2317de91147bab1e623bed35ee03015da1498a9b9837c91c144bf7da5` |
|
| `LibreMetaverse.Tests/PacketTests.cs::PacketTests.ToBytesMultiple::test` | `PacketTests.ToBytesMultiple` | `` | `LibreMetaverse.Tests/PacketTests.cs:108` | `` | `` | `tests/compat/tests/wire_semantics.rs:329 (`packet_to_bytes_multiple`)` | `translated` | `0e0f06d2317de91147bab1e623bed35ee03015da1498a9b9837c91c144bf7da5` |
|
||||||
| `LibreMetaverse.Tests/PositionHelperTests.cs::PositionHelperTests.ToGlobalAndLocalPosition_RoundTrip::test` | `PositionHelperTests.ToGlobalAndLocalPosition_RoundTrip` | `` | `LibreMetaverse.Tests/PositionHelperTests.cs:9` | `Utilities` | `` | `tests/compat/tests/types_utilities.rs:550 (`to_global_and_local_position_round_trip`)` | `translated` | `695c6a640e5353e02def9a1b4a1c1eabb37a8543c13466dff570f58d847e7772` |
|
| `LibreMetaverse.Tests/PositionHelperTests.cs::PositionHelperTests.ToGlobalAndLocalPosition_RoundTrip::test` | `PositionHelperTests.ToGlobalAndLocalPosition_RoundTrip` | `` | `LibreMetaverse.Tests/PositionHelperTests.cs:9` | `Utilities` | `` | `tests/compat/tests/types_utilities.rs:550 (`to_global_and_local_position_round_trip`)` | `translated` | `695c6a640e5353e02def9a1b4a1c1eabb37a8543c13466dff570f58d847e7772` |
|
||||||
| `LibreMetaverse.Tests/PositionHelperTests.cs::PositionHelperTests.FormatCoordinates_FormatsCorrectly::test` | `PositionHelperTests.FormatCoordinates_FormatsCorrectly` | `` | `LibreMetaverse.Tests/PositionHelperTests.cs:29` | `Utilities` | `` | `tests/compat/tests/types_utilities.rs:568 (`format_coordinates_formats_correctly`)` | `translated` | `fe4256d00dab5cc2de602b7b27442cac627a5956c4ce79c05d92de830f6fc5d2` |
|
| `LibreMetaverse.Tests/PositionHelperTests.cs::PositionHelperTests.FormatCoordinates_FormatsCorrectly::test` | `PositionHelperTests.FormatCoordinates_FormatsCorrectly` | `` | `LibreMetaverse.Tests/PositionHelperTests.cs:29` | `Utilities` | `` | `tests/compat/tests/types_utilities.rs:568 (`format_coordinates_formats_correctly`)` | `translated` | `fe4256d00dab5cc2de602b7b27442cac627a5956c4ce79c05d92de830f6fc5d2` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathBegin::test` | `PrimObjectTests.PathBegin` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:36` | `` | `` | `pending source translation` | `pending` | `5c8e14e1d08a91a4e7c3e252c932b8fe15cf6b5231cc9fe5bb7ef2ae6e2c8299` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathBegin::test` | `PrimObjectTests.PathBegin` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:36` | `` | `` | `tests/compat/tests/world_object_semantics.rs:49 (`path_begin`)` | `translated` | `5c8e14e1d08a91a4e7c3e252c932b8fe15cf6b5231cc9fe5bb7ef2ae6e2c8299` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathEnd::test` | `PrimObjectTests.PathEnd` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:49` | `` | `` | `pending source translation` | `pending` | `693bfe29f448e433705d65b8b6907f1b270fd636f914e18b76d7a0047dbea506` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathEnd::test` | `PrimObjectTests.PathEnd` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:49` | `` | `` | `tests/compat/tests/world_object_semantics.rs:62 (`path_end`)` | `translated` | `693bfe29f448e433705d65b8b6907f1b270fd636f914e18b76d7a0047dbea506` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathRevolutions::test` | `PrimObjectTests.PathRevolutions` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:62` | `` | `` | `pending source translation` | `pending` | `c3f61c80a204e608976cb44a0c10b9651496074c25f254eec8621db65dbbbe37` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathRevolutions::test` | `PrimObjectTests.PathRevolutions` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:62` | `` | `` | `tests/compat/tests/world_object_semantics.rs:75 (`path_revolutions`)` | `translated` | `c3f61c80a204e608976cb44a0c10b9651496074c25f254eec8621db65dbbbe37` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathScale::test` | `PrimObjectTests.PathScale` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:75` | `` | `` | `pending source translation` | `pending` | `b92e4ab375fcc788dea701d8579268f39b4f3b1d51d4eed91458547350405d61` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathScale::test` | `PrimObjectTests.PathScale` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:75` | `` | `` | `tests/compat/tests/world_object_semantics.rs:88 (`path_scale`)` | `translated` | `b92e4ab375fcc788dea701d8579268f39b4f3b1d51d4eed91458547350405d61` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathTaper::test` | `PrimObjectTests.PathTaper` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:101` | `` | `` | `pending source translation` | `pending` | `93a0adbc0630de3c9fbea6f8080d74ef6e3180e3813f00460bce5d52ef2f12b7` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathTaper::test` | `PrimObjectTests.PathTaper` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:101` | `` | `` | `tests/compat/tests/world_object_semantics.rs:101 (`path_taper`)` | `translated` | `93a0adbc0630de3c9fbea6f8080d74ef6e3180e3813f00460bce5d52ef2f12b7` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntryOffsets::test` | `PrimObjectTests.TextureEntryOffsets` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:114` | `` | `` | `pending source translation` | `pending` | `720ea1a9477d333b14786bc14e9abca24858e63acae94f4c6055d81f14ff033a` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntryOffsets::test` | `PrimObjectTests.TextureEntryOffsets` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:114` | `` | `` | `tests/compat/tests/world_object_semantics.rs:114 (`texture_entry_offsets`)` | `translated` | `720ea1a9477d333b14786bc14e9abca24858e63acae94f4c6055d81f14ff033a` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry::test` | `PrimObjectTests.TextureEntry` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:130` | `` | `` | `pending source translation` | `pending` | `0670a9a8dcc4001e726df699ef8001604956b6674028a192502b92b725858990` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry::test` | `PrimObjectTests.TextureEntry` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:130` | `` | `` | `tests/compat/tests/world_object_semantics.rs:131 (`texture_entry`)` | `translated` | `0670a9a8dcc4001e726df699ef8001604956b6674028a192502b92b725858990` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_DefaultFace_Roundtrips::test` | `PrimObjectTests.TextureEntry_RenderMaterialID_DefaultFace_Roundtrips` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:162` | `` | `` | `pending source translation` | `pending` | `8db56b448e53e6bec5540a5a4721dc75f85a933c6c89e166f7df7baf8e44aab3` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_DefaultFace_Roundtrips::test` | `PrimObjectTests.TextureEntry_RenderMaterialID_DefaultFace_Roundtrips` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:162` | `` | `` | `tests/compat/tests/world_object_semantics.rs:164 (`render_material_id_default_face_round_trips`)` | `translated` | `8db56b448e53e6bec5540a5a4721dc75f85a933c6c89e166f7df7baf8e44aab3` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_PerFace_Roundtrips::test` | `PrimObjectTests.TextureEntry_RenderMaterialID_PerFace_Roundtrips` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:176` | `` | `` | `pending source translation` | `pending` | `2897366ecaa41f07b4db6ebf3e80a7ebe56480f1c44f31cedea2d88a62214dc6` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_PerFace_Roundtrips::test` | `PrimObjectTests.TextureEntry_RenderMaterialID_PerFace_Roundtrips` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:176` | `` | `` | `tests/compat/tests/world_object_semantics.rs:184 (`render_material_id_per_face_round_trips`)` | `translated` | `2897366ecaa41f07b4db6ebf3e80a7ebe56480f1c44f31cedea2d88a62214dc6` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_MultipleFaces_Roundtrips::test` | `PrimObjectTests.TextureEntry_RenderMaterialID_MultipleFaces_Roundtrips` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:195` | `` | `` | `pending source translation` | `pending` | `f3d8c103e4b3d43a8e3bea1356ba13808633fdb2ea06583234551f9059b2a241` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_MultipleFaces_Roundtrips::test` | `PrimObjectTests.TextureEntry_RenderMaterialID_MultipleFaces_Roundtrips` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:195` | `` | `` | `tests/compat/tests/world_object_semantics.rs:205 (`render_material_id_multiple_faces_round_trip`)` | `translated` | `f3d8c103e4b3d43a8e3bea1356ba13808633fdb2ea06583234551f9059b2a241` |
|
||||||
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_InheritsFromDefault_WhenNotOverridden::test` | `PrimObjectTests.TextureEntry_RenderMaterialID_InheritsFromDefault_WhenNotOverridden` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:216` | `` | `` | `pending source translation` | `pending` | `2313a0134836651e23c693505c3c000ad7ff24956b432d0761a5e8b77cb01642` |
|
| `LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_InheritsFromDefault_WhenNotOverridden::test` | `PrimObjectTests.TextureEntry_RenderMaterialID_InheritsFromDefault_WhenNotOverridden` | `` | `LibreMetaverse.Tests/PrimObjectTests.cs:216` | `` | `` | `tests/compat/tests/world_object_semantics.rs:232 (`render_material_id_inherits_from_default_when_not_overridden`)` | `translated` | `2313a0134836651e23c693505c3c000ad7ff24956b432d0761a5e8b77cb01642` |
|
||||||
| `LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.GetOSD_FromOSD_Roundtrip_Minimal::test` | `PrimitiveTests.GetOSD_FromOSD_Roundtrip_Minimal` | `` | `LibreMetaverse.Tests/PrimitiveTests.cs:9` | `` | `` | `pending source translation` | `pending` | `5e81b8a195f3e59bfe9e3ebf50c3291f7cbcd49f567ede7c1c8b726e0c6c9c19` |
|
| `LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.GetOSD_FromOSD_Roundtrip_Minimal::test` | `PrimitiveTests.GetOSD_FromOSD_Roundtrip_Minimal` | `` | `LibreMetaverse.Tests/PrimitiveTests.cs:9` | `` | `` | `tests/compat/tests/world_object_semantics.rs:384 (`primitive_osd_round_trip_minimal`)` | `translated` | `5e81b8a195f3e59bfe9e3ebf50c3291f7cbcd49f567ede7c1c8b726e0c6c9c19` |
|
||||||
| `LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.GetOSD_FromOSD_Roundtrip_Extras::test` | `PrimitiveTests.GetOSD_FromOSD_Roundtrip_Extras` | `` | `LibreMetaverse.Tests/PrimitiveTests.cs:71` | `` | `` | `pending source translation` | `pending` | `63bae8bddacab170aec00c6d7a219f96fa794f489190b34cb426bbf9a3672af5` |
|
| `LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.GetOSD_FromOSD_Roundtrip_Extras::test` | `PrimitiveTests.GetOSD_FromOSD_Roundtrip_Extras` | `` | `LibreMetaverse.Tests/PrimitiveTests.cs:71` | `` | `` | `tests/compat/tests/world_object_semantics.rs:477 (`primitive_osd_round_trip_extras`)` | `translated` | `63bae8bddacab170aec00c6d7a219f96fa794f489190b34cb426bbf9a3672af5` |
|
||||||
| `LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_MissingVolume_DoesNotThrow_AndUsesDefaults::test` | `PrimitiveTests.FromOSD_MissingVolume_DoesNotThrow_AndUsesDefaults` | `` | `LibreMetaverse.Tests/PrimitiveTests.cs:133` | `` | `` | `pending source translation` | `pending` | `03f9369aab6f6a71ee13982a7b6ba9780f86bcb5b6f081f9550f491b692f711c` |
|
| `LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_MissingVolume_DoesNotThrow_AndUsesDefaults::test` | `PrimitiveTests.FromOSD_MissingVolume_DoesNotThrow_AndUsesDefaults` | `` | `LibreMetaverse.Tests/PrimitiveTests.cs:133` | `` | `` | `tests/compat/tests/world_object_semantics.rs:578 (`primitive_from_osd_missing_volume_uses_defaults`)` | `translated` | `03f9369aab6f6a71ee13982a7b6ba9780f86bcb5b6f081f9550f491b692f711c` |
|
||||||
| `LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_WrongTypes_ForTransforms_AreIgnored::test` | `PrimitiveTests.FromOSD_WrongTypes_ForTransforms_AreIgnored` | `` | `LibreMetaverse.Tests/PrimitiveTests.cs:156` | `` | `` | `pending source translation` | `pending` | `a23d4b1ab6d24c11c96862bc18ba57fccf1a8a1d690c90c5e8da3092973220f7` |
|
| `LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_WrongTypes_ForTransforms_AreIgnored::test` | `PrimitiveTests.FromOSD_WrongTypes_ForTransforms_AreIgnored` | `` | `LibreMetaverse.Tests/PrimitiveTests.cs:156` | `` | `` | `tests/compat/tests/world_object_semantics.rs:599 (`primitive_from_osd_wrong_transform_types_are_ignored`)` | `translated` | `a23d4b1ab6d24c11c96862bc18ba57fccf1a8a1d690c90c5e8da3092973220f7` |
|
||||||
| `LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_PartialProfile_UsesDefaultsForMissingFields::test` | `PrimitiveTests.FromOSD_PartialProfile_UsesDefaultsForMissingFields` | `` | `LibreMetaverse.Tests/PrimitiveTests.cs:173` | `` | `` | `pending source translation` | `pending` | `f3a3e506e3ef417f6323875db82179a4ffbdc1d4ee383417f2b0bd5afd0d0dba` |
|
| `LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_PartialProfile_UsesDefaultsForMissingFields::test` | `PrimitiveTests.FromOSD_PartialProfile_UsesDefaultsForMissingFields` | `` | `LibreMetaverse.Tests/PrimitiveTests.cs:173` | `` | `` | `tests/compat/tests/world_object_semantics.rs:635 (`primitive_from_osd_partial_profile_uses_defaults`)` | `translated` | `f3a3e506e3ef417f6323875db82179a4ffbdc1d4ee383417f2b0bd5afd0d0dba` |
|
||||||
| `LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs::ProductInfoRequestMessageTests.Deserialize_BareArray_ReadsSkuNameDescription::test` | `ProductInfoRequestMessageTests.Deserialize_BareArray_ReadsSkuNameDescription` | `` | `LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs:45` | `ProductInfo` | `` | `pending source translation` | `pending` | `5d51fdbb1bec1ff74df59778d214413e78fb650679d36e7c44be92d1b2e3205f` |
|
| `LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs::ProductInfoRequestMessageTests.Deserialize_BareArray_ReadsSkuNameDescription::test` | `ProductInfoRequestMessageTests.Deserialize_BareArray_ReadsSkuNameDescription` | `` | `LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs:45` | `ProductInfo` | `` | `pending source translation` | `pending` | `5d51fdbb1bec1ff74df59778d214413e78fb650679d36e7c44be92d1b2e3205f` |
|
||||||
| `LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs::ProductInfoRequestMessageTests.SerializeDeserialize_RoundTrips::test` | `ProductInfoRequestMessageTests.SerializeDeserialize_RoundTrips` | `` | `LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs:68` | `ProductInfo` | `` | `pending source translation` | `pending` | `5cb54bed4150cf13f815b223d6b7e35e7427004a12e98c7328c7674b6fe6309b` |
|
| `LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs::ProductInfoRequestMessageTests.SerializeDeserialize_RoundTrips::test` | `ProductInfoRequestMessageTests.SerializeDeserialize_RoundTrips` | `` | `LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs:68` | `ProductInfo` | `` | `pending source translation` | `pending` | `5cb54bed4150cf13f815b223d6b7e35e7427004a12e98c7328c7674b6fe6309b` |
|
||||||
| `LibreMetaverse.Tests/ProtobufTests.cs::ProtobufTests.SerializeBoolean::test` | `ProtobufTests.SerializeBoolean` | `` | `LibreMetaverse.Tests/ProtobufTests.cs:36` | `` | `` | `tests/compat/tests/structured_data.rs:1158 (`protobuf_serialize_boolean`)` | `translated` | `06d71d5ad54dab8236458e6cf3c9893728d4a13c348441822f674164a285150b` |
|
| `LibreMetaverse.Tests/ProtobufTests.cs::ProtobufTests.SerializeBoolean::test` | `ProtobufTests.SerializeBoolean` | `` | `LibreMetaverse.Tests/ProtobufTests.cs:36` | `` | `` | `tests/compat/tests/structured_data.rs:1158 (`protobuf_serialize_boolean`)` | `translated` | `06d71d5ad54dab8236458e6cf3c9893728d4a13c348441822f674164a285150b` |
|
||||||
@@ -499,10 +499,10 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/ProtobufTests.cs::ProtobufTests.SerializeBinary::test` | `ProtobufTests.SerializeBinary` | `` | `LibreMetaverse.Tests/ProtobufTests.cs:203` | `` | `` | `tests/compat/tests/structured_data.rs:1298 (`protobuf_serialize_binary`)` | `translated` | `f5b3aa5e551371f05d90f20f5552844c71e9abb337d33ed178e72297e5d7435d` |
|
| `LibreMetaverse.Tests/ProtobufTests.cs::ProtobufTests.SerializeBinary::test` | `ProtobufTests.SerializeBinary` | `` | `LibreMetaverse.Tests/ProtobufTests.cs:203` | `` | `` | `tests/compat/tests/structured_data.rs:1298 (`protobuf_serialize_binary`)` | `translated` | `f5b3aa5e551371f05d90f20f5552844c71e9abb337d33ed178e72297e5d7435d` |
|
||||||
| `LibreMetaverse.Tests/ProtobufTests.cs::ProtobufTests.SerializeDate::test` | `ProtobufTests.SerializeDate` | `` | `LibreMetaverse.Tests/ProtobufTests.cs:214` | `` | `` | `tests/compat/tests/structured_data.rs:1309 (`protobuf_serialize_date`)` | `translated` | `2a972308d04e49c41fabe1d240cd8d4398a53fa7264ffd588cedde7e0c76c9b9` |
|
| `LibreMetaverse.Tests/ProtobufTests.cs::ProtobufTests.SerializeDate::test` | `ProtobufTests.SerializeDate` | `` | `LibreMetaverse.Tests/ProtobufTests.cs:214` | `` | `` | `tests/compat/tests/structured_data.rs:1309 (`protobuf_serialize_date`)` | `translated` | `2a972308d04e49c41fabe1d240cd8d4398a53fa7264ffd588cedde7e0c76c9b9` |
|
||||||
| `LibreMetaverse.Tests/ProtobufTests.cs::ProtobufTests.SerializeUri::test` | `ProtobufTests.SerializeUri` | `` | `LibreMetaverse.Tests/ProtobufTests.cs:226` | `` | `` | `tests/compat/tests/structured_data.rs:1325 (`protobuf_serialize_uri`)` | `translated` | `1561f2747cba4be4f9ab5af31d08f2a24e199e2193b3fcabb7925d79f4d70a5e` |
|
| `LibreMetaverse.Tests/ProtobufTests.cs::ProtobufTests.SerializeUri::test` | `ProtobufTests.SerializeUri` | `` | `LibreMetaverse.Tests/ProtobufTests.cs:226` | `` | `` | `tests/compat/tests/structured_data.rs:1325 (`protobuf_serialize_uri`)` | `translated` | `1561f2747cba4be4f9ab5af31d08f2a24e199e2193b3fcabb7925d79f4d70a5e` |
|
||||||
| `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_HappyPath_ParsesAllowedMapAndBuildsExpectedQuery::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_HappyPath_ParsesAllowedMapAndBuildsExpectedQuery` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:66` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `2571d3a4100face21268d7ca2401cc8468e711c03c808704aacc7a50006125d5` |
|
| `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_HappyPath_ParsesAllowedMapAndBuildsExpectedQuery::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_HappyPath_ParsesAllowedMapAndBuildsExpectedQuery` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:66` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:195 (`query_experiences_on_parcel_happy_path`)` | `translated` | `2571d3a4100face21268d7ca2401cc8468e711c03c808704aacc7a50006125d5` |
|
||||||
| `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoExperienceIds_OmitsExperiencesParam::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoExperienceIds_OmitsExperiencesParam` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:87` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `ddbaa53aa8c63262c2241588b4281c42bbb66efdecac95e297deb0fb81797455` |
|
| `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoExperienceIds_OmitsExperiencesParam::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoExperienceIds_OmitsExperiencesParam` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:87` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:227 (`query_experiences_on_parcel_no_ids_omits_parameter`)` | `translated` | `ddbaa53aa8c63262c2241588b4281c42bbb66efdecac95e297deb0fb81797455` |
|
||||||
| `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoCapability_ReturnsNullWithoutRequest::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:103` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `5c6a6584fba8ddc66200367217f658d342fb2c26d6be9e49ccf3892bea420095` |
|
| `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoCapability_ReturnsNullWithoutRequest::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:103` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:248 (`query_experiences_on_parcel_no_capability_returns_none_without_request`)` | `translated` | `5c6a6584fba8ddc66200367217f658d342fb2c26d6be9e49ccf3892bea420095` |
|
||||||
| `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NonSuccessStatus_ReturnsNull::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NonSuccessStatus_ReturnsNull` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:120` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `977fe55acd5aeb5735cc718f705a2742ae0dfab12dc1211c03a64cc6d1f3bbf5` |
|
| `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NonSuccessStatus_ReturnsNull::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NonSuccessStatus_ReturnsNull` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:120` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:266 (`query_experiences_on_parcel_non_success_returns_none`)` | `translated` | `977fe55acd5aeb5735cc718f705a2742ae0dfab12dc1211c03a64cc6d1f3bbf5` |
|
||||||
| `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight::test` | `AdjustHeightCommandTests.AdjustHeight` | `` | `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `fb3adb86988b10b2d3fe9223324f8a3c1ba7b8c2ea909ee6b57b38c590fed372` |
|
| `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight::test` | `AdjustHeightCommandTests.AdjustHeight` | `` | `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `fb3adb86988b10b2d3fe9223324f8a3c1ba7b8c2ea909ee6b57b38c590fed372` |
|
||||||
| `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight_WithDelta::test` | `AdjustHeightCommandTests.AdjustHeight_WithDelta` | `` | `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs:30` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1f37a125fd9df8585740d37c711888dfcd92460d86c19077f771d7f3fab54264` |
|
| `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight_WithDelta::test` | `AdjustHeightCommandTests.AdjustHeight_WithDelta` | `` | `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs:30` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1f37a125fd9df8585740d37c711888dfcd92460d86c19077f771d7f3fab54264` |
|
||||||
| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:eee2b1b757fc196e` | `AttachAllCommandTests.AttachForce_Recursive` | `"attachall", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671` |
|
| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:eee2b1b757fc196e` | `AttachAllCommandTests.AttachForce_Recursive` | `"attachall", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671` |
|
||||||
@@ -1120,15 +1120,15 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:265` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `631de2d39fa56b29014fae4ce3b57c480f540ad41ce08a0037b7f8bbfcb3c502` |
|
| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:265` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `631de2d39fa56b29014fae4ce3b57c480f540ad41ce08a0037b7f8bbfcb3c502` |
|
||||||
| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:294` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `318f1f4207b04d01076d3498aceea781c4889b05cdbef199cdbea43dde355f4c` |
|
| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:294` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `318f1f4207b04d01076d3498aceea781c4889b05cdbef199cdbea43dde355f4c` |
|
||||||
| `LibreMetaverse.Tests/ReaderWriterLockTests.cs::ReaderWriterLockTests.MultipleReadersOneWriter_ReaderConcurrencyAndWriterExclusion::test` | `ReaderWriterLockTests.MultipleReadersOneWriter_ReaderConcurrencyAndWriterExclusion` | `` | `LibreMetaverse.Tests/ReaderWriterLockTests.cs:12` | `` | `` | `tests/compat/tests/types_utilities.rs:592 (`multiple_readers_one_writer_reader_concurrency_and_writer_exclusion`)` | `translated` | `bf63804480951667455038244228f77c30454a365b496f062051f7b34e7b2618` |
|
| `LibreMetaverse.Tests/ReaderWriterLockTests.cs::ReaderWriterLockTests.MultipleReadersOneWriter_ReaderConcurrencyAndWriterExclusion::test` | `ReaderWriterLockTests.MultipleReadersOneWriter_ReaderConcurrencyAndWriterExclusion` | `` | `LibreMetaverse.Tests/ReaderWriterLockTests.cs:12` | `` | `` | `tests/compat/tests/types_utilities.rs:592 (`multiple_readers_one_writer_reader_concurrency_and_writer_exclusion`)` | `translated` | `bf63804480951667455038244228f77c30454a365b496f062051f7b34e7b2618` |
|
||||||
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_WeeklySchedule_ParsesDaysAndTime::test` | `RegionScheduleTests.GetRegionRestartScheduleAsync_WeeklySchedule_ParsesDaysAndTime` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:64` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `0f64aab66c6a6d807b3d2bbc46b636a85900e4f76e35d5e3dd8cd0d8b295618b` |
|
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_WeeklySchedule_ParsesDaysAndTime::test` | `RegionScheduleTests.GetRegionRestartScheduleAsync_WeeklySchedule_ParsesDaysAndTime` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:64` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:285 (`get_region_restart_schedule_weekly_parses_days_and_time`)` | `translated` | `0f64aab66c6a6d807b3d2bbc46b636a85900e4f76e35d5e3dd8cd0d8b295618b` |
|
||||||
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_DailySchedule_ReturnsAllDays::test` | `RegionScheduleTests.GetRegionRestartScheduleAsync_DailySchedule_ReturnsAllDays` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:79` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `cd966b6e3ba470c91ac958bf6c71aeb34f4dab060ad5334cb6060e1954b5c6d0` |
|
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_DailySchedule_ReturnsAllDays::test` | `RegionScheduleTests.GetRegionRestartScheduleAsync_DailySchedule_ReturnsAllDays` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:79` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:308 (`get_region_restart_schedule_daily_returns_all_days`)` | `translated` | `cd966b6e3ba470c91ac958bf6c71aeb34f4dab060ad5334cb6060e1954b5c6d0` |
|
||||||
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_NoRestartConfigured_ReturnsNull::test` | `RegionScheduleTests.GetRegionRestartScheduleAsync_NoRestartConfigured_ReturnsNull` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:93` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `59a4b050a79659ccaf0fff13b750d634d803ed7b9e4940cbad676c1bdc04a5fc` |
|
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_NoRestartConfigured_ReturnsNull::test` | `RegionScheduleTests.GetRegionRestartScheduleAsync_NoRestartConfigured_ReturnsNull` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:93` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:328 (`get_region_restart_schedule_no_restart_returns_none`)` | `translated` | `59a4b050a79659ccaf0fff13b750d634d803ed7b9e4940cbad676c1bdc04a5fc` |
|
||||||
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_NoCapability_ReturnsNullWithoutRequest::test` | `RegionScheduleTests.GetRegionRestartScheduleAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:103` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `e169e7846874ed4309a50cb25b03c2e722a8d758a787654a5906610ab3b655f1` |
|
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_NoCapability_ReturnsNullWithoutRequest::test` | `RegionScheduleTests.GetRegionRestartScheduleAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:103` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:343 (`get_region_restart_schedule_no_capability_returns_none_without_request`)` | `translated` | `e169e7846874ed4309a50cb25b03c2e722a8d758a787654a5906610ab3b655f1` |
|
||||||
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_Weekly_PostsUppercaseDaysAndSeconds::test` | `RegionScheduleTests.SetRegionRestartScheduleAsync_Weekly_PostsUppercaseDaysAndSeconds` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:120` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `153fc0ac84af549c1381d0814a356bf2d9e0ead2c879e503981193366943546c` |
|
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_Weekly_PostsUppercaseDaysAndSeconds::test` | `RegionScheduleTests.SetRegionRestartScheduleAsync_Weekly_PostsUppercaseDaysAndSeconds` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:120` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:367 (`set_region_restart_schedule_weekly_posts_uppercase_days_and_seconds`)` | `translated` | `153fc0ac84af549c1381d0814a356bf2d9e0ead2c879e503981193366943546c` |
|
||||||
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_DailyIgnoresDays_DoesNotPostDaysKey::test` | `RegionScheduleTests.SetRegionRestartScheduleAsync_DailyIgnoresDays_DoesNotPostDaysKey` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:143` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `b51a1272465c3316194542eb346b2aa15c43fdc8474163ddd851b3f2204d1c2b` |
|
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_DailyIgnoresDays_DoesNotPostDaysKey::test` | `RegionScheduleTests.SetRegionRestartScheduleAsync_DailyIgnoresDays_DoesNotPostDaysKey` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:143` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:394 (`set_region_restart_schedule_daily_omits_days`)` | `translated` | `b51a1272465c3316194542eb346b2aa15c43fdc8474163ddd851b3f2204d1c2b` |
|
||||||
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_EmptyDaysClearsSchedule::test` | `RegionScheduleTests.SetRegionRestartScheduleAsync_EmptyDaysClearsSchedule` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:157` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `57ef3c0f8d9eeac58a7d1b3e7dbc44413016f39303d304cacd3071bd2c55f320` |
|
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_EmptyDaysClearsSchedule::test` | `RegionScheduleTests.SetRegionRestartScheduleAsync_EmptyDaysClearsSchedule` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:157` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:420 (`set_region_restart_schedule_empty_days_clears_schedule`)` | `translated` | `57ef3c0f8d9eeac58a7d1b3e7dbc44413016f39303d304cacd3071bd2c55f320` |
|
||||||
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `RegionScheduleTests.SetRegionRestartScheduleAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:177` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `be03507fe574b9f7c7174c39af44b7b693e1b7a496845db46451ef09bf9db206` |
|
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `RegionScheduleTests.SetRegionRestartScheduleAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:177` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:440 (`set_region_restart_schedule_no_capability_returns_false_without_request`)` | `translated` | `be03507fe574b9f7c7174c39af44b7b693e1b7a496845db46451ef09bf9db206` |
|
||||||
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_NonSuccessStatus_ReturnsFalse::test` | `RegionScheduleTests.SetRegionRestartScheduleAsync_NonSuccessStatus_ReturnsFalse` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:195` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `16c8988d7aa15ea9f58deaa2e3f416b6115978e23073fd99749843f4f410dca4` |
|
| `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_NonSuccessStatus_ReturnsFalse::test` | `RegionScheduleTests.SetRegionRestartScheduleAsync_NonSuccessStatus_ReturnsFalse` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:195` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:458 (`set_region_restart_schedule_non_success_returns_false`)` | `translated` | `16c8988d7aa15ea9f58deaa2e3f416b6115978e23073fd99749843f4f410dca4` |
|
||||||
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_CapAvailable_ReturnsContentsFolderAndDecryptsShadowId::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_CapAvailable_ReturnsContentsFolderAndDecryptsShadowId` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:73` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/task_inventory_semantics.rs:138 (`cap_available_returns_contents_folder_and_decrypts_shadow_id`)` | `translated` | `c9bfc5526260f9e2dffa8a22938999911fdd80be4b2b6d6487bf6171f8dbb56a` |
|
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_CapAvailable_ReturnsContentsFolderAndDecryptsShadowId::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_CapAvailable_ReturnsContentsFolderAndDecryptsShadowId` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:73` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/task_inventory_semantics.rs:138 (`cap_available_returns_contents_folder_and_decrypts_shadow_id`)` | `translated` | `c9bfc5526260f9e2dffa8a22938999911fdd80be4b2b6d6487bf6171f8dbb56a` |
|
||||||
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_PlainAssetId_ParsesWithoutDecryption::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_PlainAssetId_ParsesWithoutDecryption` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:115` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/task_inventory_semantics.rs:176 (`plain_asset_id_parses_without_decryption`)` | `translated` | `95f39928dae61bca86b7d0a0702307db6c5fdc754e51f73a24bd5ee131e6de3f` |
|
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_PlainAssetId_ParsesWithoutDecryption::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_PlainAssetId_ParsesWithoutDecryption` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:115` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/task_inventory_semantics.rs:176 (`plain_asset_id_parses_without_decryption`)` | `translated` | `95f39928dae61bca86b7d0a0702307db6c5fdc754e51f73a24bd5ee131e6de3f` |
|
||||||
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_NonSuccessStatus_ReturnsContentsFolderOnly::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_NonSuccessStatus_ReturnsContentsFolderOnly` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:143` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/task_inventory_semantics.rs:196 (`non_success_status_returns_contents_folder_only`)` | `translated` | `b8a25891064e470ac8d77ecd8a4847cf773b043de5ebeae275a9dd6669518585` |
|
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_NonSuccessStatus_ReturnsContentsFolderOnly::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_NonSuccessStatus_ReturnsContentsFolderOnly` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:143` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/task_inventory_semantics.rs:196 (`non_success_status_returns_contents_folder_only`)` | `translated` | `b8a25891064e470ac8d77ecd8a4847cf773b043de5ebeae275a9dd6669518585` |
|
||||||
@@ -1137,60 +1137,60 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploaderMissingFromResponse_ReturnsFalseWithoutSecondRequest::test` | `SendPostcardTests.SendPostcardAsync_UploaderMissingFromResponse_ReturnsFalseWithoutSecondRequest` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:100` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:586 (`postcard_missing_uploader_returns_false_after_one_request`)` | `translated` | `2f9498d57d7a512399f9b108765e6e8da8e4c937402f9671d580c66332630432` |
|
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploaderMissingFromResponse_ReturnsFalseWithoutSecondRequest::test` | `SendPostcardTests.SendPostcardAsync_UploaderMissingFromResponse_ReturnsFalseWithoutSecondRequest` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:100` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:586 (`postcard_missing_uploader_returns_false_after_one_request`)` | `translated` | `2f9498d57d7a512399f9b108765e6e8da8e4c937402f9671d580c66332630432` |
|
||||||
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploadDoesNotComplete_ReturnsFalse::test` | `SendPostcardTests.SendPostcardAsync_UploadDoesNotComplete_ReturnsFalse` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:112` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:608 (`postcard_incomplete_upload_returns_false`)` | `translated` | `937b682b406506ec9fba9570852bbf8689450a11cbecb85979af97609b1794f9` |
|
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploadDoesNotComplete_ReturnsFalse::test` | `SendPostcardTests.SendPostcardAsync_UploadDoesNotComplete_ReturnsFalse` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:112` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:608 (`postcard_incomplete_upload_returns_false`)` | `translated` | `937b682b406506ec9fba9570852bbf8689450a11cbecb85979af97609b1794f9` |
|
||||||
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `SendPostcardTests.SendPostcardAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:125` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:635 (`postcard_without_capability_makes_no_request`)` | `translated` | `8d3ef84e873096d9388bb7db3eaeeb79c661fd9951e338f71bbf3251ae6580e8` |
|
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `SendPostcardTests.SendPostcardAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:125` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:635 (`postcard_without_capability_makes_no_request`)` | `translated` | `8d3ef84e873096d9388bb7db3eaeeb79c661fd9951e338f71bbf3251ae6580e8` |
|
||||||
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent::test` | `SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:81` | `Estate` | `` | `pending source translation` | `pending` | `df6eb48241f71c34074be66869c9ae1d5980186583259568728261b5eedd7c48` |
|
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent::test` | `SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:81` | `Estate` | `` | `crates/libremetaverse/src/world_internal_semantics.rs:182 (`send_sim_console_command_ignores_post_body_and_uses_response_event`)` | `translated` | `df6eb48241f71c34074be66869c9ae1d5980186583259568728261b5eedd7c48` |
|
||||||
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout::test` | `SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:111` | `Estate` | `` | `pending source translation` | `pending` | `2ac5a6c96f3acec341056387d727288fd3661565bd2a7c385078602efe8661da` |
|
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout::test` | `SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:111` | `Estate` | `` | `crates/libremetaverse/src/world_internal_semantics.rs:203 (`send_sim_console_command_no_response_event_returns_none_after_timeout`)` | `translated` | `2ac5a6c96f3acec341056387d727288fd3661565bd2a7c385078602efe8661da` |
|
||||||
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField::test` | `SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:133` | `Estate` | `` | `pending source translation` | `pending` | `4d367bc3fd012d1579847fd9837bf883c5ea95452776a086bbf856899d7c2099` |
|
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField::test` | `SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:133` | `Estate` | `` | `tests/compat/tests/world_capability_semantics.rs:475 (`sim_console_response_message_deserialize_reads_body_field`)` | `translated` | `4d367bc3fd012d1579847fd9837bf883c5ea95452776a086bbf856899d7c2099` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSimpleLocation_ParsesCorrectly::test` | `SlurlParserTests.ParseSimpleLocation_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:36` | `LocationParser` | `` | `pending source translation` | `pending` | `4ca1200596cd99959db205bd40050c9ed62ac68fcd58079d52882e3b24af3fdf` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSimpleLocation_ParsesCorrectly::test` | `SlurlParserTests.ParseSimpleLocation_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:36` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:23 (`parse_simple_location_parses_correctly`)` | `translated` | `4ca1200596cd99959db205bd40050c9ed62ac68fcd58079d52882e3b24af3fdf` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSlurl_ParsesCorrectly::test` | `SlurlParserTests.ParseSlurl_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:50` | `LocationParser` | `` | `pending source translation` | `pending` | `b389e823a365884bb10813a587c5922416dc8d0737f36bfde99c56cc4e4accda` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSlurl_ParsesCorrectly::test` | `SlurlParserTests.ParseSlurl_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:50` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:33 (`parse_slurl_parses_correctly`)` | `translated` | `b389e823a365884bb10813a587c5922416dc8d0737f36bfde99c56cc4e4accda` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSlurlWithTrailingSlash_ParsesCorrectly::test` | `SlurlParserTests.ParseSlurlWithTrailingSlash_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:62` | `LocationParser` | `` | `pending source translation` | `pending` | `eb8513ad0d5dd9f67b537c1a844f738ef9363efdafd97aa31ec6fb697395c270` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSlurlWithTrailingSlash_ParsesCorrectly::test` | `SlurlParserTests.ParseSlurlWithTrailingSlash_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:62` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:41 (`parse_slurl_with_trailing_slash_parses_correctly`)` | `translated` | `eb8513ad0d5dd9f67b537c1a844f738ef9363efdafd97aa31ec6fb697395c270` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLegacyUri_ParsesCorrectly::test` | `SlurlParserTests.ParseLegacyUri_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:73` | `LocationParser` | `` | `pending source translation` | `pending` | `d3e28edefeaa13a00d666cdc40c5ee60a24563462472786e0fa186262e8f6e73` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLegacyUri_ParsesCorrectly::test` | `SlurlParserTests.ParseLegacyUri_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:73` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:51 (`parse_legacy_uri_parses_correctly`)` | `translated` | `d3e28edefeaa13a00d666cdc40c5ee60a24563462472786e0fa186262e8f6e73` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLocationWithDefaults_UsesDefaultCoordinates::test` | `SlurlParserTests.ParseLocationWithDefaults_UsesDefaultCoordinates` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:85` | `LocationParser` | `` | `pending source translation` | `pending` | `a89cceba86e86028cd70ee28b0f31a4c40c23491d582a0f70fc06b98bfeb3605` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLocationWithDefaults_UsesDefaultCoordinates::test` | `SlurlParserTests.ParseLocationWithDefaults_UsesDefaultCoordinates` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:85` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:59 (`parse_location_with_defaults_uses_default_coordinates`)` | `translated` | `a89cceba86e86028cd70ee28b0f31a4c40c23491d582a0f70fc06b98bfeb3605` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLocationPartialCoordinates_UsesDefaults::test` | `SlurlParserTests.ParseLocationPartialCoordinates_UsesDefaults` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:96` | `LocationParser` | `` | `pending source translation` | `pending` | `b6418ccbb2b00b741fcc92db7d0d8577e7334360934de7418f75ed08d7b3da24` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLocationPartialCoordinates_UsesDefaults::test` | `SlurlParserTests.ParseLocationPartialCoordinates_UsesDefaults` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:96` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:69 (`parse_location_partial_coordinates_uses_defaults`)` | `translated` | `b6418ccbb2b00b741fcc92db7d0d8577e7334360934de7418f75ed08d7b3da24` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAgentSlapp_ParsesCorrectly::test` | `SlurlParserTests.ParseAgentSlapp_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:107` | `LocationParser` | `` | `pending source translation` | `pending` | `77a274bb3b4bf189fab0ce68a729057d04376bf3d6d45d0a5443d0f301f5fbb8` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAgentSlapp_ParsesCorrectly::test` | `SlurlParserTests.ParseAgentSlapp_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:107` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:79 (`parse_agent_slapp_parses_correctly`)` | `translated` | `77a274bb3b4bf189fab0ce68a729057d04376bf3d6d45d0a5443d0f301f5fbb8` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseGroupSlapp_ParsesCorrectly::test` | `SlurlParserTests.ParseGroupSlapp_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:120` | `LocationParser` | `` | `pending source translation` | `pending` | `5435e301f76398ff2f35e0b65a7055de6d42b1a4662936ee949005182511fcd6` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseGroupSlapp_ParsesCorrectly::test` | `SlurlParserTests.ParseGroupSlapp_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:120` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:92 (`parse_group_slapp_parses_correctly`)` | `translated` | `5435e301f76398ff2f35e0b65a7055de6d42b1a4662936ee949005182511fcd6` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseTeleportSlapp_ParsesLocationData::test` | `SlurlParserTests.ParseTeleportSlapp_ParsesLocationData` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:131` | `LocationParser` | `` | `pending source translation` | `pending` | `68eea168b7480f125a4bff20b582af87c0f6d62502821bf57eb734b12f87eed5` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseTeleportSlapp_ParsesLocationData::test` | `SlurlParserTests.ParseTeleportSlapp_ParsesLocationData` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:131` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:103 (`parse_teleport_slapp_parses_location_data`)` | `translated` | `68eea168b7480f125a4bff20b582af87c0f6d62502821bf57eb734b12f87eed5` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseWorldMapSlapp_ParsesLocationData::test` | `SlurlParserTests.ParseWorldMapSlapp_ParsesLocationData` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:144` | `LocationParser` | `` | `pending source translation` | `pending` | `ad7f5ce07a837501fa74dda643f1c0d278a2f51fe27330d3419c57683127bf9e` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseWorldMapSlapp_ParsesLocationData::test` | `SlurlParserTests.ParseWorldMapSlapp_ParsesLocationData` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:144` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:112 (`parse_world_map_slapp_parses_location_data`)` | `translated` | `ad7f5ce07a837501fa74dda643f1c0d278a2f51fe27330d3419c57683127bf9e` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLoginSlapp_ParsesQueryParameters::test` | `SlurlParserTests.ParseLoginSlapp_ParsesQueryParameters` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:157` | `LocationParser` | `` | `pending source translation` | `pending` | `a0622607f53b8c19348540e7b858d3c75be22b47b9afc92505121b3430c33550` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLoginSlapp_ParsesQueryParameters::test` | `SlurlParserTests.ParseLoginSlapp_ParsesQueryParameters` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:157` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:121 (`parse_login_slapp_parses_query_parameters`)` | `translated` | `a0622607f53b8c19348540e7b858d3c75be22b47b9afc92505121b3430c33550` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseObjectImSlapp_ParsesQueryParameters::test` | `SlurlParserTests.ParseObjectImSlapp_ParsesQueryParameters` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:170` | `LocationParser` | `` | `pending source translation` | `pending` | `af9c2bdcfb212f08618719c85da41938207b6978fe2042a3c4451f7fd0075d6f` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseObjectImSlapp_ParsesQueryParameters::test` | `SlurlParserTests.ParseObjectImSlapp_ParsesQueryParameters` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:170` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:133 (`parse_object_im_slapp_parses_query_parameters`)` | `translated` | `af9c2bdcfb212f08618719c85da41938207b6978fe2042a3c4451f7fd0075d6f` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSearchSlapp_ParsesCorrectly::test` | `SlurlParserTests.ParseSearchSlapp_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:185` | `LocationParser` | `` | `pending source translation` | `pending` | `a77776e74cff175bde3e974344502369e679db15f45fe5c0d614c80732549765` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSearchSlapp_ParsesCorrectly::test` | `SlurlParserTests.ParseSearchSlapp_ParsesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:185` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:154 (`parse_search_slapp_parses_correctly`)` | `translated` | `a77776e74cff175bde3e974344502369e679db15f45fe5c0d614c80732549765` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetRawLocation_ReturnsCorrectFormat::test` | `SlurlParserTests.GetRawLocation_ReturnsCorrectFormat` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:195` | `LocationParser` | `` | `pending source translation` | `pending` | `30dafa3972780bbbb07f1edaf55ed4bc3b01080e616588768ebef9df54678af3` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetRawLocation_ReturnsCorrectFormat::test` | `SlurlParserTests.GetRawLocation_ReturnsCorrectFormat` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:195` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:163 (`get_raw_location_returns_correct_format`)` | `translated` | `30dafa3972780bbbb07f1edaf55ed4bc3b01080e616588768ebef9df54678af3` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSlurl_ReturnsCorrectFormat::test` | `SlurlParserTests.GetSlurl_ReturnsCorrectFormat` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:204` | `LocationParser` | `` | `pending source translation` | `pending` | `1e6b6fef442eab1ca6874df75f1a0ea380ec7f25974979d3cd878e10fc49fb40` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSlurl_ReturnsCorrectFormat::test` | `SlurlParserTests.GetSlurl_ReturnsCorrectFormat` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:204` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:172 (`get_slurl_returns_correct_format`)` | `translated` | `1e6b6fef442eab1ca6874df75f1a0ea380ec7f25974979d3cd878e10fc49fb40` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetStartLocationUri_ReturnsCorrectFormat::test` | `SlurlParserTests.GetStartLocationUri_ReturnsCorrectFormat` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:213` | `LocationParser` | `` | `pending source translation` | `pending` | `c7cc2d49e52ed6ebb19e09607a2b191fb3835e8f3804c7b07c5c9e8fd3b9bcae` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetStartLocationUri_ReturnsCorrectFormat::test` | `SlurlParserTests.GetStartLocationUri_ReturnsCorrectFormat` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:213` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:181 (`get_start_location_uri_returns_correct_format`)` | `translated` | `c7cc2d49e52ed6ebb19e09607a2b191fb3835e8f3804c7b07c5c9e8fd3b9bcae` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetAgentUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetAgentUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:222` | `LocationParser` | `` | `pending source translation` | `pending` | `b656f795ce39c9bc50df167e20e23b76b57929feaad1756d3190920f5410d0d4` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetAgentUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetAgentUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:222` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:190 (`get_agent_url_generates_correct_url`)` | `translated` | `b656f795ce39c9bc50df167e20e23b76b57929feaad1756d3190920f5410d0d4` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetAgentUrl_DefaultAction_UsesAbout::test` | `SlurlParserTests.GetAgentUrl_DefaultAction_UsesAbout` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:231` | `LocationParser` | `` | `pending source translation` | `pending` | `642b0543f72427cf646bcb8445b9acff4c1fdb0d26ef3f0dc6c10eaaed73028b` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetAgentUrl_DefaultAction_UsesAbout::test` | `SlurlParserTests.GetAgentUrl_DefaultAction_UsesAbout` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:231` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:201 (`get_agent_url_default_action_uses_about`)` | `translated` | `642b0543f72427cf646bcb8445b9acff4c1fdb0d26ef3f0dc6c10eaaed73028b` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetGroupUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetGroupUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:240` | `LocationParser` | `` | `pending source translation` | `pending` | `919cc7a17770fb65a83812836819a19d6dd4e630a848741d12df868da3d949d5` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetGroupUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetGroupUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:240` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:211 (`get_group_url_generates_correct_url`)` | `translated` | `919cc7a17770fb65a83812836819a19d6dd4e630a848741d12df868da3d949d5` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetTeleportUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetTeleportUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:249` | `LocationParser` | `` | `pending source translation` | `pending` | `3465edd1ecdd6e521c52687570d32e288bfa29eb6e47666305c64ee5322df159` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetTeleportUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetTeleportUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:249` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:222 (`get_teleport_url_generates_correct_url`)` | `translated` | `3465edd1ecdd6e521c52687570d32e288bfa29eb6e47666305c64ee5322df159` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetTeleportUrl_WithDefaults_UsesDefaultCoordinates::test` | `SlurlParserTests.GetTeleportUrl_WithDefaults_UsesDefaultCoordinates` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:257` | `LocationParser` | `` | `pending source translation` | `pending` | `823d524cc81d39753549583346953122c372f5575aa03d8bf101d1be3eae845d` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetTeleportUrl_WithDefaults_UsesDefaultCoordinates::test` | `SlurlParserTests.GetTeleportUrl_WithDefaults_UsesDefaultCoordinates` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:257` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:231 (`get_teleport_url_with_defaults_uses_default_coordinates`)` | `translated` | `823d524cc81d39753549583346953122c372f5575aa03d8bf101d1be3eae845d` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetWorldMapUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetWorldMapUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:265` | `LocationParser` | `` | `pending source translation` | `pending` | `7c19a936e0d641195f3806291b5b88970affa46f540ef950d55df709b52ad56b` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetWorldMapUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetWorldMapUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:265` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:240 (`get_world_map_url_generates_correct_url`)` | `translated` | `7c19a936e0d641195f3806291b5b88970affa46f540ef950d55df709b52ad56b` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetObjectImUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetObjectImUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:273` | `LocationParser` | `` | `pending source translation` | `pending` | `edf724227cc86abc84d223637f34c607f9fc30f9e85b53a9ec8c8f2d2b7bcbf6` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetObjectImUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetObjectImUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:273` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:249 (`get_object_im_url_generates_correct_url`)` | `translated` | `edf724227cc86abc84d223637f34c607f9fc30f9e85b53a9ec8c8f2d2b7bcbf6` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetObjectImUrl_NotGroupOwned_OmitsGroupOwnedParameter::test` | `SlurlParserTests.GetObjectImUrl_NotGroupOwned_OmitsGroupOwnedParameter` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:287` | `LocationParser` | `` | `pending source translation` | `pending` | `764978a618429216a0bfef4e72ac44a329d2b2d1c5b13af889db9cf86814cd99` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetObjectImUrl_NotGroupOwned_OmitsGroupOwnedParameter::test` | `SlurlParserTests.GetObjectImUrl_NotGroupOwned_OmitsGroupOwnedParameter` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:287` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:271 (`get_object_im_url_not_group_owned_omits_group_owned_parameter`)` | `translated` | `764978a618429216a0bfef4e72ac44a329d2b2d1c5b13af889db9cf86814cd99` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSearchUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetSearchUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:297` | `LocationParser` | `` | `pending source translation` | `pending` | `aeb79bf4e5e51368b4520eec3cc5beeb767101b81f1eaa3f3ad118749dc5c2f0` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSearchUrl_GeneratesCorrectUrl::test` | `SlurlParserTests.GetSearchUrl_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:297` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:285 (`get_search_url_generates_correct_url`)` | `translated` | `aeb79bf4e5e51368b4520eec3cc5beeb767101b81f1eaa3f3ad118749dc5c2f0` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetLoginUrl_WithAllParameters_GeneratesCorrectUrl::test` | `SlurlParserTests.GetLoginUrl_WithAllParameters_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:305` | `LocationParser` | `` | `pending source translation` | `pending` | `0d9dc8d623e56ec1e8e0d414eb2c898bfd7ee37712972287834c2df6a99da17c` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetLoginUrl_WithAllParameters_GeneratesCorrectUrl::test` | `SlurlParserTests.GetLoginUrl_WithAllParameters_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:305` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:294 (`get_login_url_with_all_parameters_generates_correct_url`)` | `translated` | `0d9dc8d623e56ec1e8e0d414eb2c898bfd7ee37712972287834c2df6a99da17c` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetLoginUrl_WithNoParameters_GeneratesBaseUrl::test` | `SlurlParserTests.GetLoginUrl_WithNoParameters_GeneratesBaseUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:316` | `LocationParser` | `` | `pending source translation` | `pending` | `1fcfa164861bcc115f2935f1c20c276dea05802cf35dbb55664ff1c36140c135` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetLoginUrl_WithNoParameters_GeneratesBaseUrl::test` | `SlurlParserTests.GetLoginUrl_WithNoParameters_GeneratesBaseUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:316` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:309 (`get_login_url_with_no_parameters_generates_base_url`)` | `translated` | `1fcfa164861bcc115f2935f1c20c276dea05802cf35dbb55664ff1c36140c135` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSlappUrl_WithQueryParams_GeneratesCorrectUrl::test` | `SlurlParserTests.GetSlappUrl_WithQueryParams_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:324` | `LocationParser` | `` | `pending source translation` | `pending` | `37ca9ebe06ce42f5919d9b6ec30459d1455f78bde910a61d04187e74e7ce3d07` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSlappUrl_WithQueryParams_GeneratesCorrectUrl::test` | `SlurlParserTests.GetSlappUrl_WithQueryParams_GeneratesCorrectUrl` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:324` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:318 (`get_slapp_url_with_query_params_generates_correct_url`)` | `translated` | `37ca9ebe06ce42f5919d9b6ec30459d1455f78bde910a61d04187e74e7ce3d07` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseNull_ThrowsArgumentNullException::test` | `SlurlParserTests.ParseNull_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:340` | `LocationParser` | `` | `pending source translation` | `pending` | `98c170ff5f03f843918c0d2aecddb23e2c2605e31100f5d3178ad7cb306eef5d` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseNull_ThrowsArgumentNullException::test` | `SlurlParserTests.ParseNull_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:340` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:332 (`parse_null_throws_argument_null`)` | `translated` | `98c170ff5f03f843918c0d2aecddb23e2c2605e31100f5d3178ad7cb306eef5d` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseEmptyString_ThrowsArgumentException::test` | `SlurlParserTests.ParseEmptyString_ThrowsArgumentException` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:346` | `LocationParser` | `` | `pending source translation` | `pending` | `a5d89e3349033fa4efa1b00339556d811f175c52ca5b183a2d19b247a8eaeed8` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseEmptyString_ThrowsArgumentException::test` | `SlurlParserTests.ParseEmptyString_ThrowsArgumentException` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:346` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:341 (`parse_empty_string_throws_argument`)` | `translated` | `a5d89e3349033fa4efa1b00339556d811f175c52ca5b183a2d19b247a8eaeed8` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseUrlEncodedQueryParams_DecodesCorrectly::test` | `SlurlParserTests.ParseUrlEncodedQueryParams_DecodesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:352` | `LocationParser` | `` | `pending source translation` | `pending` | `72ac64c89f3a08bbecfb80aaaf11f5ee59a383eeeb9578676af5b9d83f374cc4` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseUrlEncodedQueryParams_DecodesCorrectly::test` | `SlurlParserTests.ParseUrlEncodedQueryParams_DecodesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:352` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:350 (`parse_url_encoded_query_params_decodes_correctly`)` | `translated` | `72ac64c89f3a08bbecfb80aaaf11f5ee59a383eeeb9578676af5b9d83f374cc4` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.RoundTripLocation_PreservesData::test` | `SlurlParserTests.RoundTripLocation_PreservesData` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:361` | `LocationParser` | `` | `pending source translation` | `pending` | `2cba174b3609af177295b469bad1641a98d8dc79d95aa4ef22403923edd4d092` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.RoundTripLocation_PreservesData::test` | `SlurlParserTests.RoundTripLocation_PreservesData` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:361` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:360 (`round_trip_location_preserves_data`)` | `translated` | `2cba174b3609af177295b469bad1641a98d8dc79d95aa4ef22403923edd4d092` |
|
||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly::test` | `SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:374` | `LocationParser` | `` | `pending source translation` | `pending` | `abf53480da20d1ff57f5f06f1433c120ea84e0d6d5363cb33e4a275d76cfa306` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly::test` | `SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:374` | `LocationParser` | `` | `tests/compat/tests/slurl_semantics.rs:374 (`parse_all_slapp_commands_recognizes_correctly`)` | `translated` | `abf53480da20d1ff57f5f06f1433c120ea84e0d6d5363cb33e4a275d76cfa306` |
|
||||||
| `LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields::test` | `StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields` | `` | `LibreMetaverse.Tests/StartAuctionTests.cs:45` | `Parcel` | `` | `pending source translation` | `pending` | `f37ef06cfba37754effe04a0bb0edfa159c761b811a05efd95157896756bef16` |
|
| `LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields::test` | `StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields` | `` | `LibreMetaverse.Tests/StartAuctionTests.cs:45` | `Parcel` | `` | `tests/compat/tests/world_packet_semantics.rs:15 (`viewer_start_auction_packet_round_trips_agent_and_parcel_fields`)` | `translated` | `f37ef06cfba37754effe04a0bb0edfa159c761b811a05efd95157896756bef16` |
|
||||||
| `LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.StartAuction_DoesNotThrow::test` | `StartAuctionTests.StartAuction_DoesNotThrow` | `` | `LibreMetaverse.Tests/StartAuctionTests.cs:71` | `Parcel` | `` | `pending source translation` | `pending` | `deec194333b480dabb3f6e6d96b360a29d11a40ca1103117fc7ce5cdb80d6eb0` |
|
| `LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.StartAuction_DoesNotThrow::test` | `StartAuctionTests.StartAuction_DoesNotThrow` | `` | `LibreMetaverse.Tests/StartAuctionTests.cs:71` | `Parcel` | `` | `tests/compat/tests/world_packet_semantics.rs:44 (`start_auction_does_not_throw`)` | `translated` | `deec194333b480dabb3f6e6d96b360a29d11a40ca1103117fc7ce5cdb80d6eb0` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ParsesFourSlotsWithSomeEmpty::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ParsesFourSlotsWithSomeEmpty` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:64` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:445 (`terrain_get_parses_four_slots_with_empty_entries`)` | `translated` | `0b7f2b5a7a95c70f4ed97b9b028f3ec16f1cd427a9d4d1b133523bd331f6b9f2` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ParsesFourSlotsWithSomeEmpty::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ParsesFourSlotsWithSomeEmpty` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:64` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:445 (`terrain_get_parses_four_slots_with_empty_entries`)` | `translated` | `0b7f2b5a7a95c70f4ed97b9b028f3ec16f1cd427a9d4d1b133523bd331f6b9f2` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ServerReportsFailure_ReturnsNull::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ServerReportsFailure_ReturnsNull` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:81` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:468 (`terrain_get_server_failure_returns_none`)` | `translated` | `c66b84662333288b7328822d1f9fa79450075d44a1178a9b0b661671072efe5b` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ServerReportsFailure_ReturnsNull::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ServerReportsFailure_ReturnsNull` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:81` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:468 (`terrain_get_server_failure_returns_none`)` | `translated` | `c66b84662333288b7328822d1f9fa79450075d44a1178a9b0b661671072efe5b` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_NoCapability_ReturnsNullWithoutRequest::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:92` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:482 (`terrain_get_without_capability_makes_no_request`)` | `translated` | `677f80689e1b6a67893d100e1116805fb9f63c5b6ec33e64a4dc9a4cf24c1237` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_NoCapability_ReturnsNullWithoutRequest::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:92` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:482 (`terrain_get_without_capability_makes_no_request`)` | `translated` | `677f80689e1b6a67893d100e1116805fb9f63c5b6ec33e64a4dc9a4cf24c1237` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_MixOfNullAndSet_PostsFourEntries::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_MixOfNullAndSet_PostsFourEntries` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:111` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:494 (`terrain_set_posts_four_mixed_entries`)` | `translated` | `a4ce031e565ca7eb1864064d299dbf0c7b715581ce330a57be9c3aa93987e67c` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_MixOfNullAndSet_PostsFourEntries::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_MixOfNullAndSet_PostsFourEntries` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:111` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:494 (`terrain_set_posts_four_mixed_entries`)` | `translated` | `a4ce031e565ca7eb1864064d299dbf0c7b715581ce330a57be9c3aa93987e67c` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_WrongLength_Throws::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_WrongLength_Throws` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:128` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:518 (`terrain_set_wrong_length_is_argument_error`)` | `translated` | `836099a369b37555049b1c1ddfb9562c57cdef88381b7a79e8b80fe62b169a44` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_WrongLength_Throws::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_WrongLength_Throws` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:128` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:518 (`terrain_set_wrong_length_is_argument_error`)` | `translated` | `836099a369b37555049b1c1ddfb9562c57cdef88381b7a79e8b80fe62b169a44` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:135` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:533 (`terrain_set_without_capability_makes_no_request`)` | `translated` | `37948cbc0240910d63782d88c0fb9f1d239215cea34a5aa84ac68a10d0555e87` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:135` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:533 (`terrain_set_without_capability_makes_no_request`)` | `translated` | `37948cbc0240910d63782d88c0fb9f1d239215cea34a5aa84ac68a10d0555e87` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d3ad6116f2458248` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `32, Description = "First face affected by 32-bit overflow"` | `LibreMetaverse.Tests/TextureEntryTests.cs:46` | `TextureEntry` | `` | `pending source translation` | `pending` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d3ad6116f2458248` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `32, Description = "First face affected by 32-bit overflow"` | `LibreMetaverse.Tests/TextureEntryTests.cs:46` | `TextureEntry` | `` | `tests/compat/tests/world_object_semantics.rs:264 (`high_face_32_texture_id_is_preserved`)` | `translated` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:c6f3ac57944a5314` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `33` | `LibreMetaverse.Tests/TextureEntryTests.cs:47` | `TextureEntry` | `` | `pending source translation` | `pending` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:c6f3ac57944a5314` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `33` | `LibreMetaverse.Tests/TextureEntryTests.cs:47` | `TextureEntry` | `` | `tests/compat/tests/world_object_semantics.rs:270 (`high_face_33_texture_id_is_preserved`)` | `translated` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d59eced1ded07f84` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `40` | `LibreMetaverse.Tests/TextureEntryTests.cs:48` | `TextureEntry` | `` | `pending source translation` | `pending` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d59eced1ded07f84` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `40` | `LibreMetaverse.Tests/TextureEntryTests.cs:48` | `TextureEntry` | `` | `tests/compat/tests/world_object_semantics.rs:276 (`high_face_40_texture_id_is_preserved`)` | `translated` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:59df3d13bd106053` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `44, Description = "Last valid face (MAX_FACES - 1)"` | `LibreMetaverse.Tests/TextureEntryTests.cs:49` | `TextureEntry` | `` | `pending source translation` | `pending` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:59df3d13bd106053` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `44, Description = "Last valid face (MAX_FACES - 1)"` | `LibreMetaverse.Tests/TextureEntryTests.cs:49` | `TextureEntry` | `` | `tests/compat/tests/world_object_semantics.rs:282 (`high_face_44_texture_id_is_preserved`)` | `translated` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_AllHighFaces_TextureIDs_AllPreserved::test` | `TextureEntryTests.RoundTrip_AllHighFaces_TextureIDs_AllPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:66` | `TextureEntry` | `` | `pending source translation` | `pending` | `203ca43b9f1965e1fae7feb36e84eff1df9ac5968eb23753077816d16dd24228` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_AllHighFaces_TextureIDs_AllPreserved::test` | `TextureEntryTests.RoundTrip_AllHighFaces_TextureIDs_AllPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:66` | `TextureEntry` | `` | `tests/compat/tests/world_object_semantics.rs:288 (`all_high_face_texture_ids_are_preserved`)` | `translated` | `203ca43b9f1965e1fae7feb36e84eff1df9ac5968eb23753077816d16dd24228` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_LowAndHighFaces_BothPreserved::test` | `TextureEntryTests.RoundTrip_LowAndHighFaces_BothPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:90` | `TextureEntry` | `` | `pending source translation` | `pending` | `dd520cac107415a186a44eb3a17bd000f933ec49b814a496e6788237fcfffb1e` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_LowAndHighFaces_BothPreserved::test` | `TextureEntryTests.RoundTrip_LowAndHighFaces_BothPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:90` | `TextureEntry` | `` | `tests/compat/tests/world_object_semantics.rs:308 (`low_and_high_faces_are_both_preserved`)` | `translated` | `dd520cac107415a186a44eb3a17bd000f933ec49b814a496e6788237fcfffb1e` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RGBA_IsPreserved::test` | `TextureEntryTests.RoundTrip_Face32_RGBA_IsPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:113` | `TextureEntry` | `` | `pending source translation` | `pending` | `db41d130d270d31f52f3928df88ccc052102673c1afbca03cc0648526fafbabb` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RGBA_IsPreserved::test` | `TextureEntryTests.RoundTrip_Face32_RGBA_IsPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:113` | `TextureEntry` | `` | `tests/compat/tests/world_object_semantics.rs:326 (`face_32_rgba_is_preserved`)` | `translated` | `db41d130d270d31f52f3928df88ccc052102673c1afbca03cc0648526fafbabb` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatU_IsPreserved::test` | `TextureEntryTests.RoundTrip_Face32_RepeatU_IsPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:131` | `TextureEntry` | `` | `pending source translation` | `pending` | `58e80815263025ec54cd15e3c9a42771f5e55c81e9acb212a0f163faef9fd499` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatU_IsPreserved::test` | `TextureEntryTests.RoundTrip_Face32_RepeatU_IsPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:131` | `TextureEntry` | `` | `tests/compat/tests/world_object_semantics.rs:348 (`face_32_repeat_u_is_preserved`)` | `translated` | `58e80815263025ec54cd15e3c9a42771f5e55c81e9acb212a0f163faef9fd499` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatV_IsPreserved::test` | `TextureEntryTests.RoundTrip_Face32_RepeatV_IsPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:145` | `TextureEntry` | `` | `pending source translation` | `pending` | `fbeb1fdd584a26576b6f1ba653b2995d1a6d6bccc2c1dc51e46aa9f211b78724` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatV_IsPreserved::test` | `TextureEntryTests.RoundTrip_Face32_RepeatV_IsPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:145` | `TextureEntry` | `` | `tests/compat/tests/world_object_semantics.rs:356 (`face_32_repeat_v_is_preserved`)` | `translated` | `fbeb1fdd584a26576b6f1ba653b2995d1a6d6bccc2c1dc51e46aa9f211b78724` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_AllFaces_TextureIDs_AllPreserved::test` | `TextureEntryTests.RoundTrip_AllFaces_TextureIDs_AllPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:158` | `TextureEntry` | `` | `pending source translation` | `pending` | `5e5a390af8deff77ef80f751735456541f24d7e27666557d50d99065cc3ba6a4` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_AllFaces_TextureIDs_AllPreserved::test` | `TextureEntryTests.RoundTrip_AllFaces_TextureIDs_AllPreserved` | `` | `LibreMetaverse.Tests/TextureEntryTests.cs:158` | `TextureEntry` | `` | `tests/compat/tests/world_object_semantics.rs:364 (`all_face_texture_ids_are_preserved`)` | `translated` | `5e5a390af8deff77ef80f751735456541f24d7e27666557d50d99065cc3ba6a4` |
|
||||||
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.UUIDs::test` | `TypeTests.UUIDs` | `` | `LibreMetaverse.Tests/TypeTests.cs:38` | `` | `` | `tests/compat/tests/types_utilities.rs:39 (`uuids`)` | `translated` | `4f95d48c474bbd824254196dd605051773c711614bf661b5aa996054b6c98967` |
|
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.UUIDs::test` | `TypeTests.UUIDs` | `` | `LibreMetaverse.Tests/TypeTests.cs:38` | `` | `` | `tests/compat/tests/types_utilities.rs:39 (`uuids`)` | `translated` | `4f95d48c474bbd824254196dd605051773c711614bf661b5aa996054b6c98967` |
|
||||||
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.Vector3ApproxEquals::test` | `TypeTests.Vector3ApproxEquals` | `` | `LibreMetaverse.Tests/TypeTests.cs:72` | `` | `` | `tests/compat/tests/types_utilities.rs:72 (`vector3_approx_equals`)` | `translated` | `1438175bb0c0bd8b17dd878e8fb95fb0dba82abbab71882f2ceb39ec554189d9` |
|
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.Vector3ApproxEquals::test` | `TypeTests.Vector3ApproxEquals` | `` | `LibreMetaverse.Tests/TypeTests.cs:72` | `` | `` | `tests/compat/tests/types_utilities.rs:72 (`vector3_approx_equals`)` | `translated` | `1438175bb0c0bd8b17dd878e8fb95fb0dba82abbab71882f2ceb39ec554189d9` |
|
||||||
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.VectorCasting::test` | `TypeTests.VectorCasting` | `` | `LibreMetaverse.Tests/TypeTests.cs:100` | `` | `` | `tests/compat/tests/types_utilities.rs:99 (`vector_casting`)` | `translated` | `27c0a4b8402ef66f11dca075d8c1a0f0b647ccef9c2803125dde6ca292951cd4` |
|
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.VectorCasting::test` | `TypeTests.VectorCasting` | `` | `LibreMetaverse.Tests/TypeTests.cs:100` | `` | `` | `tests/compat/tests/types_utilities.rs:99 (`vector_casting`)` | `translated` | `27c0a4b8402ef66f11dca075d8c1a0f0b647ccef9c2803125dde6ca292951cd4` |
|
||||||
|
|||||||
@@ -2,30 +2,8 @@
|
|||||||
// Source: LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba
|
// Source: LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba
|
||||||
// Pending cases are catalog entries, not fake executable Rust tests.
|
// Pending cases are catalog entries, not fake executable Rust tests.
|
||||||
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.GridManager_Null_Throws::test e972a95f334b0f46948cda34c27124c28c44faf4372d0e598d7dc60050b49be4
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AppearanceManager_Null_Throws::test a3c872805bc924b5a1a9441d5c9eb61ed6d6e9477e4bb411131359290b144ab4
|
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AppearanceManager_Null_Throws::test a3c872805bc924b5a1a9441d5c9eb61ed6d6e9477e4bb411131359290b144ab4
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.ObjectManager_Null_Throws::test 8a11feba0edfb35e5dd99f681182e8f5a5cf8a3f738211b45a683a8a2ad45ddb
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AgentManager_Null_Throws::test d86e41b6cdd03063685aa330c31b9a274c1d400b9a461abf3065fe185fe0bbf0
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AvatarManager_Null_Throws::test 54f23cbf0ba87b0525c2914e78d75808e93fd1c460fc0bec4d15f09575b1431c
|
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AvatarManager_Null_Throws::test 54f23cbf0ba87b0525c2914e78d75808e93fd1c460fc0bec4d15f09575b1431c
|
||||||
// pending-parity-case: LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.GetParcelEnvironment_UsesParcelidQueryParameter::test 5c2f2b0fa2a86955975c621b2415a92ff3da283215e669956e14bf5ee2a4c1f4
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.SetParcelEnvironment_SendsParcelidInQueryStringNotBody::test f633e2d78e4c6a0fff42917ccfe8de68e4f6133a11e7eef7f9b757c3d1622f0f
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.SetRegionEnvironment_OmitsQueryStringEntirely::test bade6e06765506ad7e500ac3e5c9f168605ce25fef86647819d285a68b39f109
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.ResetParcelEnvironment_SendsHttpDeleteNotPost::test 4360439192c137f5d7a2ceb83b8664f3917b4b261798050cb855d596f483f082
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/EstateExperienceReplyTests.cs::EstateExperienceReplyTests.SetExperience_ParsesBlockedTrustedAndAllowedLists::test 49a77aa9d7c5bf1232082a08594e7ebcfafad11ab110c9e15d2ad4ea1831c649
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/EstateExperienceReplyTests.cs::EstateExperienceReplyTests.SetExperience_AllEmptyLists_ProducesEmptyResult::test 711eaebb11f5d7ece92946d3de240a341a4b1fd8f30617fd97cb059d0dc6a0b9
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/EstateToolsTests.cs::EstateToolsTests.RequestConvenant::test d8d752dd6e53477e4c66bcb5d0e3ec1021a9b3ceda1f689f59b5e606e1713729
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_ReadsExperienceIdsKey::test aa1f7d09f6c79118ea2e60621d57bd63632085ce81bc979e42294aca53d4f0d9
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_IgnoresLegacyExperienceKeysKey::test cd1d372b9a976c04dee11da1ade182e4f9239e1f7633e788347c6d5f255835ec
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Serialize_WritesExperienceIdsKey::test 3fa4cb5d598940f693285bcc64179a4dea927a3643a76a061a933a265488d4be
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_ReadsBlockedTrustedAllowedAndDefault::test 61df3b0c60d32b6c9bb843eb7a1a11fe8c0b1fd59c7a09853ad1b0e1d93cd4fd
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_IgnoresLegacyContribKey::test 851d037919003ebb414105e57bf37f73ba37dff8f733c36183c447f1349f3316
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Serialize_WritesAllowedKeyNotContrib::test 53c3a7d6a200816615a9efaa222ccf294e3a8334d320812c6ec56a0a3e7e05bb
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Deserialize_ReadsAllowedListFromExperiencesKey::test 9bab78dbe142a3da6ad21a278f25d7da90776fce3861c7d602203c1e1842c9af
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Deserialize_IgnoresLegacyAllowedKey::test ec6d5e7c81214ea4e3d99740fdd33961578f895a90a42082067ca9819d93d2b0
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Serialize_WritesAllowedListUnderExperiencesKey::test 45a0bffe39ab7bf0734ec5fce4435dbdda7ae94cf4e933210669e91dc45b1baf
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow::test cf095ab428713004ebac6e1915a47ae0c03bd2958addbba2a39fd2f0edf51a74
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock::test af084d1ab7a11079e6251865e8fd5aecfde38d2df359ebc1e208bc74925935c0
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget::test 93204469ecfec2f3f4eb6838c99f6e2baf09bf76a075958d1ed369ba03767158
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/MarketplaceFolderClassifierTests.cs::MarketplaceFolderClassifierTests.GetRole_ListingsRootFolder_ReturnsListingsRoot::test a3c21e19f21924bffbbafe1199a4b942b545bdb278c3362b2a1ec98b35d672cf
|
// pending-parity-case: LibreMetaverse.Tests/MarketplaceFolderClassifierTests.cs::MarketplaceFolderClassifierTests.GetRole_ListingsRootFolder_ReturnsListingsRoot::test a3c21e19f21924bffbbafe1199a4b942b545bdb278c3362b2a1ec98b35d672cf
|
||||||
// pending-parity-case: LibreMetaverse.Tests/MarketplaceFolderClassifierTests.cs::MarketplaceFolderClassifierTests.GetRole_ListingFolder_ReturnsListing::test c08d860a4506254d9ac831e91894f2fc34d840c100468ee7e39b505690302368
|
// pending-parity-case: LibreMetaverse.Tests/MarketplaceFolderClassifierTests.cs::MarketplaceFolderClassifierTests.GetRole_ListingFolder_ReturnsListing::test c08d860a4506254d9ac831e91894f2fc34d840c100468ee7e39b505690302368
|
||||||
// pending-parity-case: LibreMetaverse.Tests/MarketplaceFolderClassifierTests.cs::MarketplaceFolderClassifierTests.GetRole_VersionFolder_ReturnsVersion::test 90d792d6858c6a253b9ddf80d3f5e7244570490fa4ef68c1914b342db05c7aa2
|
// pending-parity-case: LibreMetaverse.Tests/MarketplaceFolderClassifierTests.cs::MarketplaceFolderClassifierTests.GetRole_VersionFolder_ReturnsVersion::test 90d792d6858c6a253b9ddf80d3f5e7244570490fa4ef68c1914b342db05c7aa2
|
||||||
@@ -86,28 +64,8 @@
|
|||||||
// pending-parity-case: LibreMetaverse.Tests/MarketplaceManagerTests.cs::MarketplaceManagerTests.MarketplaceListing_DefaultValues_AreCorrect::test 70a29163581702fdc32c54a398ad4cefa608da8b1bc9d54a4e9e191e95398fb7
|
// pending-parity-case: LibreMetaverse.Tests/MarketplaceManagerTests.cs::MarketplaceManagerTests.MarketplaceListing_DefaultValues_AreCorrect::test 70a29163581702fdc32c54a398ad4cefa608da8b1bc9d54a4e9e191e95398fb7
|
||||||
// pending-parity-case: LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_BareArrayOfArraysResponse_RaisesInstantMessage::test d51f69e0fa1e1e59a5cedec7d60315d1f590848672a9f4f0c5e21d2abff5c372
|
// pending-parity-case: LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_BareArrayOfArraysResponse_RaisesInstantMessage::test d51f69e0fa1e1e59a5cedec7d60315d1f590848672a9f4f0c5e21d2abff5c372
|
||||||
// pending-parity-case: LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_MessagesMapResponse_RaisesInstantMessage::test dbce6320d57d12ca5557cfba65257e15be314cde947b20dd21bc386819fcb3ce
|
// pending-parity-case: LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_MessagesMapResponse_RaisesInstantMessage::test dbce6320d57d12ca5557cfba65257e15be314cde947b20dd21bc386819fcb3ce
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathBegin::test 5c8e14e1d08a91a4e7c3e252c932b8fe15cf6b5231cc9fe5bb7ef2ae6e2c8299
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathEnd::test 693bfe29f448e433705d65b8b6907f1b270fd636f914e18b76d7a0047dbea506
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathRevolutions::test c3f61c80a204e608976cb44a0c10b9651496074c25f254eec8621db65dbbbe37
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathScale::test b92e4ab375fcc788dea701d8579268f39b4f3b1d51d4eed91458547350405d61
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathTaper::test 93a0adbc0630de3c9fbea6f8080d74ef6e3180e3813f00460bce5d52ef2f12b7
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntryOffsets::test 720ea1a9477d333b14786bc14e9abca24858e63acae94f4c6055d81f14ff033a
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry::test 0670a9a8dcc4001e726df699ef8001604956b6674028a192502b92b725858990
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_DefaultFace_Roundtrips::test 8db56b448e53e6bec5540a5a4721dc75f85a933c6c89e166f7df7baf8e44aab3
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_PerFace_Roundtrips::test 2897366ecaa41f07b4db6ebf3e80a7ebe56480f1c44f31cedea2d88a62214dc6
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_MultipleFaces_Roundtrips::test f3d8c103e4b3d43a8e3bea1356ba13808633fdb2ea06583234551f9059b2a241
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_InheritsFromDefault_WhenNotOverridden::test 2313a0134836651e23c693505c3c000ad7ff24956b432d0761a5e8b77cb01642
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.GetOSD_FromOSD_Roundtrip_Minimal::test 5e81b8a195f3e59bfe9e3ebf50c3291f7cbcd49f567ede7c1c8b726e0c6c9c19
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.GetOSD_FromOSD_Roundtrip_Extras::test 63bae8bddacab170aec00c6d7a219f96fa794f489190b34cb426bbf9a3672af5
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_MissingVolume_DoesNotThrow_AndUsesDefaults::test 03f9369aab6f6a71ee13982a7b6ba9780f86bcb5b6f081f9550f491b692f711c
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_WrongTypes_ForTransforms_AreIgnored::test a23d4b1ab6d24c11c96862bc18ba57fccf1a8a1d690c90c5e8da3092973220f7
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_PartialProfile_UsesDefaultsForMissingFields::test f3a3e506e3ef417f6323875db82179a4ffbdc1d4ee383417f2b0bd5afd0d0dba
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs::ProductInfoRequestMessageTests.Deserialize_BareArray_ReadsSkuNameDescription::test 5d51fdbb1bec1ff74df59778d214413e78fb650679d36e7c44be92d1b2e3205f
|
// pending-parity-case: LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs::ProductInfoRequestMessageTests.Deserialize_BareArray_ReadsSkuNameDescription::test 5d51fdbb1bec1ff74df59778d214413e78fb650679d36e7c44be92d1b2e3205f
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs::ProductInfoRequestMessageTests.SerializeDeserialize_RoundTrips::test 5cb54bed4150cf13f815b223d6b7e35e7427004a12e98c7328c7674b6fe6309b
|
// pending-parity-case: LibreMetaverse.Tests/ProductInfoRequestMessageTests.cs::ProductInfoRequestMessageTests.SerializeDeserialize_RoundTrips::test 5cb54bed4150cf13f815b223d6b7e35e7427004a12e98c7328c7674b6fe6309b
|
||||||
// pending-parity-case: LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_HappyPath_ParsesAllowedMapAndBuildsExpectedQuery::test 2571d3a4100face21268d7ca2401cc8468e711c03c808704aacc7a50006125d5
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoExperienceIds_OmitsExperiencesParam::test ddbaa53aa8c63262c2241588b4281c42bbb66efdecac95e297deb0fb81797455
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoCapability_ReturnsNullWithoutRequest::test 5c6a6584fba8ddc66200367217f658d342fb2c26d6be9e49ccf3892bea420095
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NonSuccessStatus_ReturnsNull::test 977fe55acd5aeb5735cc718f705a2742ae0dfab12dc1211c03a64cc6d1f3bbf5
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight::test fb3adb86988b10b2d3fe9223324f8a3c1ba7b8c2ea909ee6b57b38c590fed372
|
// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight::test fb3adb86988b10b2d3fe9223324f8a3c1ba7b8c2ea909ee6b57b38c590fed372
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight_WithDelta::test 1f37a125fd9df8585740d37c711888dfcd92460d86c19077f771d7f3fab54264
|
// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight_WithDelta::test 1f37a125fd9df8585740d37c711888dfcd92460d86c19077f771d7f3fab54264
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:eee2b1b757fc196e 17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671
|
// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:eee2b1b757fc196e 17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671
|
||||||
@@ -724,60 +682,3 @@
|
|||||||
// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithNotificationRestrictions_SendsNotifications::test ba82b183dfdb01b36f9b45520e1808290c360f327d4afa833ba3b8c7a7cecffb
|
// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithNotificationRestrictions_SendsNotifications::test ba82b183dfdb01b36f9b45520e1808290c360f327d4afa833ba3b8c7a7cecffb
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly::test 631de2d39fa56b29014fae4ce3b57c480f540ad41ce08a0037b7f8bbfcb3c502
|
// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly::test 631de2d39fa56b29014fae4ce3b57c480f540ad41ce08a0037b7f8bbfcb3c502
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent::test 318f1f4207b04d01076d3498aceea781c4889b05cdbef199cdbea43dde355f4c
|
// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent::test 318f1f4207b04d01076d3498aceea781c4889b05cdbef199cdbea43dde355f4c
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_WeeklySchedule_ParsesDaysAndTime::test 0f64aab66c6a6d807b3d2bbc46b636a85900e4f76e35d5e3dd8cd0d8b295618b
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_DailySchedule_ReturnsAllDays::test cd966b6e3ba470c91ac958bf6c71aeb34f4dab060ad5334cb6060e1954b5c6d0
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_NoRestartConfigured_ReturnsNull::test 59a4b050a79659ccaf0fff13b750d634d803ed7b9e4940cbad676c1bdc04a5fc
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_NoCapability_ReturnsNullWithoutRequest::test e169e7846874ed4309a50cb25b03c2e722a8d758a787654a5906610ab3b655f1
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_Weekly_PostsUppercaseDaysAndSeconds::test 153fc0ac84af549c1381d0814a356bf2d9e0ead2c879e503981193366943546c
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_DailyIgnoresDays_DoesNotPostDaysKey::test b51a1272465c3316194542eb346b2aa15c43fdc8474163ddd851b3f2204d1c2b
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_EmptyDaysClearsSchedule::test 57ef3c0f8d9eeac58a7d1b3e7dbc44413016f39303d304cacd3071bd2c55f320
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_NoCapability_ReturnsFalseWithoutRequest::test be03507fe574b9f7c7174c39af44b7b693e1b7a496845db46451ef09bf9db206
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_NonSuccessStatus_ReturnsFalse::test 16c8988d7aa15ea9f58deaa2e3f416b6115978e23073fd99749843f4f410dca4
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent::test df6eb48241f71c34074be66869c9ae1d5980186583259568728261b5eedd7c48
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout::test 2ac5a6c96f3acec341056387d727288fd3661565bd2a7c385078602efe8661da
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField::test 4d367bc3fd012d1579847fd9837bf883c5ea95452776a086bbf856899d7c2099
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSimpleLocation_ParsesCorrectly::test 4ca1200596cd99959db205bd40050c9ed62ac68fcd58079d52882e3b24af3fdf
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSlurl_ParsesCorrectly::test b389e823a365884bb10813a587c5922416dc8d0737f36bfde99c56cc4e4accda
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSlurlWithTrailingSlash_ParsesCorrectly::test eb8513ad0d5dd9f67b537c1a844f738ef9363efdafd97aa31ec6fb697395c270
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLegacyUri_ParsesCorrectly::test d3e28edefeaa13a00d666cdc40c5ee60a24563462472786e0fa186262e8f6e73
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLocationWithDefaults_UsesDefaultCoordinates::test a89cceba86e86028cd70ee28b0f31a4c40c23491d582a0f70fc06b98bfeb3605
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLocationPartialCoordinates_UsesDefaults::test b6418ccbb2b00b741fcc92db7d0d8577e7334360934de7418f75ed08d7b3da24
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAgentSlapp_ParsesCorrectly::test 77a274bb3b4bf189fab0ce68a729057d04376bf3d6d45d0a5443d0f301f5fbb8
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseGroupSlapp_ParsesCorrectly::test 5435e301f76398ff2f35e0b65a7055de6d42b1a4662936ee949005182511fcd6
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseTeleportSlapp_ParsesLocationData::test 68eea168b7480f125a4bff20b582af87c0f6d62502821bf57eb734b12f87eed5
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseWorldMapSlapp_ParsesLocationData::test ad7f5ce07a837501fa74dda643f1c0d278a2f51fe27330d3419c57683127bf9e
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLoginSlapp_ParsesQueryParameters::test a0622607f53b8c19348540e7b858d3c75be22b47b9afc92505121b3430c33550
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseObjectImSlapp_ParsesQueryParameters::test af9c2bdcfb212f08618719c85da41938207b6978fe2042a3c4451f7fd0075d6f
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSearchSlapp_ParsesCorrectly::test a77776e74cff175bde3e974344502369e679db15f45fe5c0d614c80732549765
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetRawLocation_ReturnsCorrectFormat::test 30dafa3972780bbbb07f1edaf55ed4bc3b01080e616588768ebef9df54678af3
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSlurl_ReturnsCorrectFormat::test 1e6b6fef442eab1ca6874df75f1a0ea380ec7f25974979d3cd878e10fc49fb40
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetStartLocationUri_ReturnsCorrectFormat::test c7cc2d49e52ed6ebb19e09607a2b191fb3835e8f3804c7b07c5c9e8fd3b9bcae
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetAgentUrl_GeneratesCorrectUrl::test b656f795ce39c9bc50df167e20e23b76b57929feaad1756d3190920f5410d0d4
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetAgentUrl_DefaultAction_UsesAbout::test 642b0543f72427cf646bcb8445b9acff4c1fdb0d26ef3f0dc6c10eaaed73028b
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetGroupUrl_GeneratesCorrectUrl::test 919cc7a17770fb65a83812836819a19d6dd4e630a848741d12df868da3d949d5
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetTeleportUrl_GeneratesCorrectUrl::test 3465edd1ecdd6e521c52687570d32e288bfa29eb6e47666305c64ee5322df159
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetTeleportUrl_WithDefaults_UsesDefaultCoordinates::test 823d524cc81d39753549583346953122c372f5575aa03d8bf101d1be3eae845d
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetWorldMapUrl_GeneratesCorrectUrl::test 7c19a936e0d641195f3806291b5b88970affa46f540ef950d55df709b52ad56b
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetObjectImUrl_GeneratesCorrectUrl::test edf724227cc86abc84d223637f34c607f9fc30f9e85b53a9ec8c8f2d2b7bcbf6
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetObjectImUrl_NotGroupOwned_OmitsGroupOwnedParameter::test 764978a618429216a0bfef4e72ac44a329d2b2d1c5b13af889db9cf86814cd99
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSearchUrl_GeneratesCorrectUrl::test aeb79bf4e5e51368b4520eec3cc5beeb767101b81f1eaa3f3ad118749dc5c2f0
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetLoginUrl_WithAllParameters_GeneratesCorrectUrl::test 0d9dc8d623e56ec1e8e0d414eb2c898bfd7ee37712972287834c2df6a99da17c
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetLoginUrl_WithNoParameters_GeneratesBaseUrl::test 1fcfa164861bcc115f2935f1c20c276dea05802cf35dbb55664ff1c36140c135
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSlappUrl_WithQueryParams_GeneratesCorrectUrl::test 37ca9ebe06ce42f5919d9b6ec30459d1455f78bde910a61d04187e74e7ce3d07
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseNull_ThrowsArgumentNullException::test 98c170ff5f03f843918c0d2aecddb23e2c2605e31100f5d3178ad7cb306eef5d
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseEmptyString_ThrowsArgumentException::test a5d89e3349033fa4efa1b00339556d811f175c52ca5b183a2d19b247a8eaeed8
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseUrlEncodedQueryParams_DecodesCorrectly::test 72ac64c89f3a08bbecfb80aaaf11f5ee59a383eeeb9578676af5b9d83f374cc4
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.RoundTripLocation_PreservesData::test 2cba174b3609af177295b469bad1641a98d8dc79d95aa4ef22403923edd4d092
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly::test abf53480da20d1ff57f5f06f1433c120ea84e0d6d5363cb33e4a275d76cfa306
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields::test f37ef06cfba37754effe04a0bb0edfa159c761b811a05efd95157896756bef16
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.StartAuction_DoesNotThrow::test deec194333b480dabb3f6e6d96b360a29d11a40ca1103117fc7ce5cdb80d6eb0
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d3ad6116f2458248 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:c6f3ac57944a5314 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d59eced1ded07f84 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:59df3d13bd106053 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_AllHighFaces_TextureIDs_AllPreserved::test 203ca43b9f1965e1fae7feb36e84eff1df9ac5968eb23753077816d16dd24228
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_LowAndHighFaces_BothPreserved::test dd520cac107415a186a44eb3a17bd000f933ec49b814a496e6788237fcfffb1e
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RGBA_IsPreserved::test db41d130d270d31f52f3928df88ccc052102673c1afbca03cc0648526fafbabb
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatU_IsPreserved::test 58e80815263025ec54cd15e3c9a42771f5e55c81e9acb212a0f163faef9fd499
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatV_IsPreserved::test fbeb1fdd584a26576b6f1ba653b2995d1a6d6bccc2c1dc51e46aa9f211b78724
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_AllFaces_TextureIDs_AllPreserved::test 5e5a390af8deff77ef80f751735456541f24d7e27666557d50d99065cc3ba6a4
|
|
||||||
|
|||||||
441
tests/compat/tests/slurl_semantics.rs
Normal file
441
tests/compat/tests/slurl_semantics.rs
Normal file
@@ -0,0 +1,441 @@
|
|||||||
|
// Exact Rust translation of LibreMetaverse.Tests/SlurlParserTests.cs.
|
||||||
|
// Source SHA-256: 3626ff6fae5a303e4037ac2b5742dfc7fa226e04a33b8d358ba355fccdd05611
|
||||||
|
|
||||||
|
use libremetaverse::{Error, SlappCommand, SlurlParser, ViewerUriType};
|
||||||
|
use libremetaverse_types::UUID;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
fn uuid() -> UUID {
|
||||||
|
UUID::random().expect("UUID Random")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse(location: &str) -> SlurlParser {
|
||||||
|
SlurlParser::new(Some(location.into())).expect("SlurlParser constructor")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_location(parser: &SlurlParser, sim: &str, x: i32, y: i32, z: i32) {
|
||||||
|
assert_eq!(parser.sim(), sim);
|
||||||
|
assert_eq!(parser.x(), x);
|
||||||
|
assert_eq!(parser.y(), y);
|
||||||
|
assert_eq!(parser.z(), z);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSimpleLocation_ParsesCorrectly::test 4ca1200596cd99959db205bd40050c9ed62ac68fcd58079d52882e3b24af3fdf translated
|
||||||
|
#[test]
|
||||||
|
fn parse_simple_location_parses_correctly() {
|
||||||
|
let parser = parse("Hooper/128/128/32");
|
||||||
|
assert_location(&parser, "Hooper", 128, 128, 32);
|
||||||
|
assert_eq!(parser.uri_type(), ViewerUriType::Location);
|
||||||
|
assert!(parser.is_location());
|
||||||
|
assert!(!parser.is_application());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSlurl_ParsesCorrectly::test b389e823a365884bb10813a587c5922416dc8d0737f36bfde99c56cc4e4accda translated
|
||||||
|
#[test]
|
||||||
|
fn parse_slurl_parses_correctly() {
|
||||||
|
let parser = parse("secondlife://Hooper/179/18/32");
|
||||||
|
assert_location(&parser, "Hooper", 179, 18, 32);
|
||||||
|
assert_eq!(parser.uri_type(), ViewerUriType::Location);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSlurlWithTrailingSlash_ParsesCorrectly::test eb8513ad0d5dd9f67b537c1a844f738ef9363efdafd97aa31ec6fb697395c270 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_slurl_with_trailing_slash_parses_correctly() {
|
||||||
|
let parser = parse("secondlife://Hooper/179/18/32/");
|
||||||
|
assert_eq!(
|
||||||
|
(parser.sim(), parser.x(), parser.y(), parser.z()),
|
||||||
|
("Hooper".into(), 179, 18, 32)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLegacyUri_ParsesCorrectly::test d3e28edefeaa13a00d666cdc40c5ee60a24563462472786e0fa186262e8f6e73 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_legacy_uri_parses_correctly() {
|
||||||
|
let parser = parse("uri:Hooper&179&18&32");
|
||||||
|
assert_location(&parser, "Hooper", 179, 18, 32);
|
||||||
|
assert_eq!(parser.uri_type(), ViewerUriType::Location);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLocationWithDefaults_UsesDefaultCoordinates::test a89cceba86e86028cd70ee28b0f31a4c40c23491d582a0f70fc06b98bfeb3605 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_location_with_defaults_uses_default_coordinates() {
|
||||||
|
let parser = parse("secondlife://Hooper");
|
||||||
|
assert_eq!(
|
||||||
|
(parser.sim(), parser.x(), parser.y(), parser.z()),
|
||||||
|
("Hooper".into(), 128, 128, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLocationPartialCoordinates_UsesDefaults::test b6418ccbb2b00b741fcc92db7d0d8577e7334360934de7418f75ed08d7b3da24 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_location_partial_coordinates_uses_defaults() {
|
||||||
|
let parser = parse("secondlife://Hooper/100");
|
||||||
|
assert_eq!(
|
||||||
|
(parser.sim(), parser.x(), parser.y(), parser.z()),
|
||||||
|
("Hooper".into(), 100, 128, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAgentSlapp_ParsesCorrectly::test 77a274bb3b4bf189fab0ce68a729057d04376bf3d6d45d0a5443d0f301f5fbb8 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_agent_slapp_parses_correctly() {
|
||||||
|
let id = uuid();
|
||||||
|
let id_text = id.to_string();
|
||||||
|
let parser = parse(&format!("secondlife:///app/agent/{id_text}/about"));
|
||||||
|
assert_eq!(parser.uri_type(), ViewerUriType::Application);
|
||||||
|
assert_eq!(parser.command(), SlappCommand::Agent);
|
||||||
|
assert_eq!(parser.command_path(), format!("agent/{id_text}/about"));
|
||||||
|
assert!(parser.is_application());
|
||||||
|
assert!(!parser.is_location());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseGroupSlapp_ParsesCorrectly::test 5435e301f76398ff2f35e0b65a7055de6d42b1a4662936ee949005182511fcd6 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_group_slapp_parses_correctly() {
|
||||||
|
let id = uuid();
|
||||||
|
let id_text = id.to_string();
|
||||||
|
let parser = parse(&format!("secondlife:///app/group/{id_text}/about"));
|
||||||
|
assert_eq!(parser.uri_type(), ViewerUriType::Application);
|
||||||
|
assert_eq!(parser.command(), SlappCommand::Group);
|
||||||
|
assert_eq!(parser.command_path(), format!("group/{id_text}/about"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseTeleportSlapp_ParsesLocationData::test 68eea168b7480f125a4bff20b582af87c0f6d62502821bf57eb734b12f87eed5 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_teleport_slapp_parses_location_data() {
|
||||||
|
let parser = parse("secondlife:///app/teleport/Hooper/100/200/50");
|
||||||
|
assert_eq!(parser.uri_type(), ViewerUriType::Application);
|
||||||
|
assert_eq!(parser.command(), SlappCommand::Teleport);
|
||||||
|
assert_location(&parser, "Hooper", 100, 200, 50);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseWorldMapSlapp_ParsesLocationData::test ad7f5ce07a837501fa74dda643f1c0d278a2f51fe27330d3419c57683127bf9e translated
|
||||||
|
#[test]
|
||||||
|
fn parse_world_map_slapp_parses_location_data() {
|
||||||
|
let parser = parse("secondlife:///app/worldmap/Sandbox/128/128/0");
|
||||||
|
assert_eq!(parser.uri_type(), ViewerUriType::Application);
|
||||||
|
assert_eq!(parser.command(), SlappCommand::WorldMap);
|
||||||
|
assert_location(&parser, "Sandbox", 128, 128, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseLoginSlapp_ParsesQueryParameters::test a0622607f53b8c19348540e7b858d3c75be22b47b9afc92505121b3430c33550 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_login_slapp_parses_query_parameters() {
|
||||||
|
let parser = parse("secondlife:///app/login?last=Resident&session=abc123&location=home");
|
||||||
|
assert_eq!(parser.uri_type(), ViewerUriType::Application);
|
||||||
|
assert_eq!(parser.command(), SlappCommand::Login);
|
||||||
|
let query = parser.query_parameters();
|
||||||
|
assert_eq!(query.get("last").map(String::as_str), Some("Resident"));
|
||||||
|
assert_eq!(query.get("session").map(String::as_str), Some("abc123"));
|
||||||
|
assert_eq!(query.get("location").map(String::as_str), Some("home"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseObjectImSlapp_ParsesQueryParameters::test af9c2bdcfb212f08618719c85da41938207b6978fe2042a3c4451f7fd0075d6f translated
|
||||||
|
#[test]
|
||||||
|
fn parse_object_im_slapp_parses_query_parameters() {
|
||||||
|
let object = uuid();
|
||||||
|
let owner = uuid();
|
||||||
|
let object_text = object.to_string();
|
||||||
|
let owner_text = owner.to_string();
|
||||||
|
let parser = parse(&format!(
|
||||||
|
"secondlife:///app/objectim/{object_text}?name=TestObject&owner={owner_text}&groupowned=true&slurl=Hooper/128/128/25"
|
||||||
|
));
|
||||||
|
let query = parser.query_parameters();
|
||||||
|
assert_eq!(parser.command(), SlappCommand::ObjectIm);
|
||||||
|
assert_eq!(query.get("name").map(String::as_str), Some("TestObject"));
|
||||||
|
assert_eq!(query.get("owner"), Some(&owner.to_string()));
|
||||||
|
assert_eq!(query.get("groupowned").map(String::as_str), Some("true"));
|
||||||
|
assert_eq!(
|
||||||
|
query.get("slurl").map(String::as_str),
|
||||||
|
Some("Hooper/128/128/25")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseSearchSlapp_ParsesCorrectly::test a77776e74cff175bde3e974344502369e679db15f45fe5c0d614c80732549765 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_search_slapp_parses_correctly() {
|
||||||
|
let parser = parse("secondlife:///app/search/places/Sandbox");
|
||||||
|
assert_eq!(parser.command(), SlappCommand::Search);
|
||||||
|
assert!(parser.command_path().contains("places"));
|
||||||
|
assert!(parser.command_path().contains("Sandbox"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetRawLocation_ReturnsCorrectFormat::test 30dafa3972780bbbb07f1edaf55ed4bc3b01080e616588768ebef9df54678af3 translated
|
||||||
|
#[test]
|
||||||
|
fn get_raw_location_returns_correct_format() {
|
||||||
|
assert_eq!(
|
||||||
|
parse("Hooper/100/200/50").get_raw_location().unwrap(),
|
||||||
|
"Hooper/100/200/50"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSlurl_ReturnsCorrectFormat::test 1e6b6fef442eab1ca6874df75f1a0ea380ec7f25974979d3cd878e10fc49fb40 translated
|
||||||
|
#[test]
|
||||||
|
fn get_slurl_returns_correct_format() {
|
||||||
|
assert_eq!(
|
||||||
|
parse("Hooper/100/200/50").get_slurl().unwrap(),
|
||||||
|
"secondlife://Hooper/100/200/50/"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetStartLocationUri_ReturnsCorrectFormat::test c7cc2d49e52ed6ebb19e09607a2b191fb3835e8f3804c7b07c5c9e8fd3b9bcae translated
|
||||||
|
#[test]
|
||||||
|
fn get_start_location_uri_returns_correct_format() {
|
||||||
|
assert_eq!(
|
||||||
|
parse("Hooper/100/200/50").get_start_location_uri().unwrap(),
|
||||||
|
"uri:Hooper&100&200&50"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetAgentUrl_GeneratesCorrectUrl::test b656f795ce39c9bc50df167e20e23b76b57929feaad1756d3190920f5410d0d4 translated
|
||||||
|
#[test]
|
||||||
|
fn get_agent_url_generates_correct_url() {
|
||||||
|
let id = uuid();
|
||||||
|
let id_text = id.to_string();
|
||||||
|
assert_eq!(
|
||||||
|
SlurlParser::get_agent_url(id, Some("inspect".into())).unwrap(),
|
||||||
|
format!("secondlife:///app/agent/{id_text}/inspect")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetAgentUrl_DefaultAction_UsesAbout::test 642b0543f72427cf646bcb8445b9acff4c1fdb0d26ef3f0dc6c10eaaed73028b translated
|
||||||
|
#[test]
|
||||||
|
fn get_agent_url_default_action_uses_about() {
|
||||||
|
assert!(
|
||||||
|
SlurlParser::get_agent_url(uuid(), None)
|
||||||
|
.unwrap()
|
||||||
|
.contains("/about")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetGroupUrl_GeneratesCorrectUrl::test 919cc7a17770fb65a83812836819a19d6dd4e630a848741d12df868da3d949d5 translated
|
||||||
|
#[test]
|
||||||
|
fn get_group_url_generates_correct_url() {
|
||||||
|
let id = uuid();
|
||||||
|
let id_text = id.to_string();
|
||||||
|
assert_eq!(
|
||||||
|
SlurlParser::get_group_url(id, Some("inspect".into())).unwrap(),
|
||||||
|
format!("secondlife:///app/group/{id_text}/inspect")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetTeleportUrl_GeneratesCorrectUrl::test 3465edd1ecdd6e521c52687570d32e288bfa29eb6e47666305c64ee5322df159 translated
|
||||||
|
#[test]
|
||||||
|
fn get_teleport_url_generates_correct_url() {
|
||||||
|
assert_eq!(
|
||||||
|
SlurlParser::get_teleport_url("Hooper".into(), Some(100), Some(200), Some(50)).unwrap(),
|
||||||
|
"secondlife:///app/teleport/Hooper/100/200/50"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetTeleportUrl_WithDefaults_UsesDefaultCoordinates::test 823d524cc81d39753549583346953122c372f5575aa03d8bf101d1be3eae845d translated
|
||||||
|
#[test]
|
||||||
|
fn get_teleport_url_with_defaults_uses_default_coordinates() {
|
||||||
|
assert_eq!(
|
||||||
|
SlurlParser::get_teleport_url("Hooper".into(), None, None, None).unwrap(),
|
||||||
|
"secondlife:///app/teleport/Hooper/128/128/0"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetWorldMapUrl_GeneratesCorrectUrl::test 7c19a936e0d641195f3806291b5b88970affa46f540ef950d55df709b52ad56b translated
|
||||||
|
#[test]
|
||||||
|
fn get_world_map_url_generates_correct_url() {
|
||||||
|
assert_eq!(
|
||||||
|
SlurlParser::get_world_map_url("Sandbox".into(), Some(64), Some(64), Some(100)).unwrap(),
|
||||||
|
"secondlife:///app/worldmap/Sandbox/64/64/100"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetObjectImUrl_GeneratesCorrectUrl::test edf724227cc86abc84d223637f34c607f9fc30f9e85b53a9ec8c8f2d2b7bcbf6 translated
|
||||||
|
#[test]
|
||||||
|
fn get_object_im_url_generates_correct_url() {
|
||||||
|
let object = uuid();
|
||||||
|
let owner = uuid();
|
||||||
|
let object_text = object.to_string();
|
||||||
|
let owner_text = owner.to_string();
|
||||||
|
let url = SlurlParser::get_object_im_url(
|
||||||
|
object,
|
||||||
|
"Test Object".into(),
|
||||||
|
owner,
|
||||||
|
true,
|
||||||
|
"Hooper/128/128/25".into(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
assert!(url.contains(&format!("objectim/{object_text}")));
|
||||||
|
assert!(url.contains("name=Test%20Object"));
|
||||||
|
assert!(url.contains(&format!("owner={owner_text}")));
|
||||||
|
assert!(url.contains("groupowned=true"));
|
||||||
|
assert!(url.contains("slurl=Hooper"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetObjectImUrl_NotGroupOwned_OmitsGroupOwnedParameter::test 764978a618429216a0bfef4e72ac44a329d2b2d1c5b13af889db9cf86814cd99 translated
|
||||||
|
#[test]
|
||||||
|
fn get_object_im_url_not_group_owned_omits_group_owned_parameter() {
|
||||||
|
let url = SlurlParser::get_object_im_url(
|
||||||
|
uuid(),
|
||||||
|
"Test Object".into(),
|
||||||
|
uuid(),
|
||||||
|
false,
|
||||||
|
"Hooper/128/128/25".into(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
assert!(!url.contains("groupowned"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSearchUrl_GeneratesCorrectUrl::test aeb79bf4e5e51368b4520eec3cc5beeb767101b81f1eaa3f3ad118749dc5c2f0 translated
|
||||||
|
#[test]
|
||||||
|
fn get_search_url_generates_correct_url() {
|
||||||
|
assert_eq!(
|
||||||
|
SlurlParser::get_search_url("places".into(), "sandbox island".into()).unwrap(),
|
||||||
|
"secondlife:///app/search/places/sandbox%20island"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetLoginUrl_WithAllParameters_GeneratesCorrectUrl::test 0d9dc8d623e56ec1e8e0d414eb2c898bfd7ee37712972287834c2df6a99da17c translated
|
||||||
|
#[test]
|
||||||
|
fn get_login_url_with_all_parameters_generates_correct_url() {
|
||||||
|
let url = SlurlParser::get_login_url(
|
||||||
|
Some("Resident".into()),
|
||||||
|
Some("session123".into()),
|
||||||
|
Some("home".into()),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
assert!(url.contains("login?"));
|
||||||
|
assert!(url.contains("last=Resident"));
|
||||||
|
assert!(url.contains("session=session123"));
|
||||||
|
assert!(url.contains("location=home"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetLoginUrl_WithNoParameters_GeneratesBaseUrl::test 1fcfa164861bcc115f2935f1c20c276dea05802cf35dbb55664ff1c36140c135 translated
|
||||||
|
#[test]
|
||||||
|
fn get_login_url_with_no_parameters_generates_base_url() {
|
||||||
|
assert_eq!(
|
||||||
|
SlurlParser::get_login_url(None, None, None).unwrap(),
|
||||||
|
"secondlife:///app/login"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.GetSlappUrl_WithQueryParams_GeneratesCorrectUrl::test 37ca9ebe06ce42f5919d9b6ec30459d1455f78bde910a61d04187e74e7ce3d07 translated
|
||||||
|
#[test]
|
||||||
|
fn get_slapp_url_with_query_params_generates_correct_url() {
|
||||||
|
let query = HashMap::from([
|
||||||
|
("test".into(), "value".into()),
|
||||||
|
("foo".into(), "bar".into()),
|
||||||
|
]);
|
||||||
|
let url =
|
||||||
|
SlurlParser::get_slapp_url(SlappCommand::Help, Some("topic".into()), Some(query)).unwrap();
|
||||||
|
assert!(url.contains("help/topic"));
|
||||||
|
assert!(url.contains("test=value"));
|
||||||
|
assert!(url.contains("foo=bar"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseNull_ThrowsArgumentNullException::test 98c170ff5f03f843918c0d2aecddb23e2c2605e31100f5d3178ad7cb306eef5d translated
|
||||||
|
#[test]
|
||||||
|
fn parse_null_throws_argument_null() {
|
||||||
|
match SlurlParser::new(None) {
|
||||||
|
Err(error) => assert_eq!(error, Error::ArgumentNull),
|
||||||
|
Ok(_) => panic!("expected ArgumentNull"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseEmptyString_ThrowsArgumentException::test a5d89e3349033fa4efa1b00339556d811f175c52ca5b183a2d19b247a8eaeed8 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_empty_string_throws_argument() {
|
||||||
|
match SlurlParser::new(Some(String::new())) {
|
||||||
|
Err(error) => assert_eq!(error, Error::Argument),
|
||||||
|
Ok(_) => panic!("expected Argument"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseUrlEncodedQueryParams_DecodesCorrectly::test 72ac64c89f3a08bbecfb80aaaf11f5ee59a383eeeb9578676af5b9d83f374cc4 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_url_encoded_query_params_decodes_correctly() {
|
||||||
|
assert!(
|
||||||
|
parse("secondlife:///app/search/places/sandbox%20island")
|
||||||
|
.command_path()
|
||||||
|
.contains("sandbox%20island")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.RoundTripLocation_PreservesData::test 2cba174b3609af177295b469bad1641a98d8dc79d95aa4ef22403923edd4d092 translated
|
||||||
|
#[test]
|
||||||
|
fn round_trip_location_preserves_data() {
|
||||||
|
let original = parse("Hooper/100/200/50");
|
||||||
|
let parsed = parse(&original.get_slurl().unwrap());
|
||||||
|
assert_location(
|
||||||
|
&parsed,
|
||||||
|
&original.sim(),
|
||||||
|
original.x(),
|
||||||
|
original.y(),
|
||||||
|
original.z(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly::test abf53480da20d1ff57f5f06f1433c120ea84e0d6d5363cb33e4a275d76cfa306 translated
|
||||||
|
#[test]
|
||||||
|
fn parse_all_slapp_commands_recognizes_correctly() {
|
||||||
|
let commands = [
|
||||||
|
("secondlife:///app/agent/uuid/about", SlappCommand::Agent),
|
||||||
|
(
|
||||||
|
"secondlife:///app/appearance/show",
|
||||||
|
SlappCommand::Appearance,
|
||||||
|
),
|
||||||
|
("secondlife:///app/balance/request", SlappCommand::Balance),
|
||||||
|
("secondlife:///app/chat/1/hello", SlappCommand::Chat),
|
||||||
|
(
|
||||||
|
"secondlife:///app/classified/uuid/about",
|
||||||
|
SlappCommand::Classified,
|
||||||
|
),
|
||||||
|
("secondlife:///app/event/uuid/about", SlappCommand::Event),
|
||||||
|
(
|
||||||
|
"secondlife:///app/experience/uuid/profile",
|
||||||
|
SlappCommand::Experience,
|
||||||
|
),
|
||||||
|
("secondlife:///app/group/uuid/about", SlappCommand::Group),
|
||||||
|
("secondlife:///app/help/search", SlappCommand::Help),
|
||||||
|
(
|
||||||
|
"secondlife:///app/inventory/uuid/select",
|
||||||
|
SlappCommand::Inventory,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"secondlife:///app/keybinding/jump",
|
||||||
|
SlappCommand::Keybinding,
|
||||||
|
),
|
||||||
|
("secondlife:///app/login", SlappCommand::Login),
|
||||||
|
(
|
||||||
|
"secondlife:///app/maptrackavatar/uuid",
|
||||||
|
SlappCommand::MapTrackAvatar,
|
||||||
|
),
|
||||||
|
("secondlife:///app/objectim/uuid", SlappCommand::ObjectIm),
|
||||||
|
(
|
||||||
|
"secondlife:///app/openfloater/preferences",
|
||||||
|
SlappCommand::OpenFloater,
|
||||||
|
),
|
||||||
|
("secondlife:///app/parcel/uuid/about", SlappCommand::Parcel),
|
||||||
|
("secondlife:///app/region/uuid/about", SlappCommand::Region),
|
||||||
|
("secondlife:///app/search/all/test", SlappCommand::Search),
|
||||||
|
(
|
||||||
|
"secondlife:///app/sharewithavatar/uuid",
|
||||||
|
SlappCommand::ShareWithAvatar,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"secondlife:///app/teleport/Hooper/128/128/0",
|
||||||
|
SlappCommand::Teleport,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"secondlife:///app/voicecallavatar/uuid",
|
||||||
|
SlappCommand::VoiceCallAvatar,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"secondlife:///app/wear_folder/?folder_id=uuid",
|
||||||
|
SlappCommand::WearFolder,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"secondlife:///app/worldmap/Hooper/128/128/0",
|
||||||
|
SlappCommand::WorldMap,
|
||||||
|
),
|
||||||
|
];
|
||||||
|
for (url, expected) in commands {
|
||||||
|
assert_eq!(parse(url).command(), expected, "failed to parse {url}");
|
||||||
|
}
|
||||||
|
}
|
||||||
489
tests/compat/tests/world_capability_semantics.rs
Normal file
489
tests/compat/tests/world_capability_semantics.rs
Normal file
@@ -0,0 +1,489 @@
|
|||||||
|
// Exact Rust translations of world capability tests owned by milestone issue #23.
|
||||||
|
// Source SHA-256: f83be0075683edda91f8e345661b2f753d81c134585f38ddd52b8b9b9e406089
|
||||||
|
// Source SHA-256: 79483c67d93295f09d281ec577f642d4967e281f88e531b2b43ee14c1444a440
|
||||||
|
// Source SHA-256: 1ef332ad434b9bdc468282eae99150393950db352a98f5f822517fa48021222f
|
||||||
|
// Source SHA-256: e49de5d4d588aa944bc27eeecd9921891b851eaecb76270abcec91f649579f7b
|
||||||
|
|
||||||
|
use libremetaverse::messages::linden::{EnvironmentData, SimConsoleResponseMessage};
|
||||||
|
use libremetaverse::{
|
||||||
|
GridClient, HttpCapsClient, RegionRestartDays, RegionRestartSchedule, Simulator,
|
||||||
|
};
|
||||||
|
use libremetaverse_compat_tests::block_on;
|
||||||
|
use libremetaverse_structured_data::{OSD, OSDParser};
|
||||||
|
use libremetaverse_types::UUID;
|
||||||
|
use libremetaverse_types::compat::{HttpMessageHandler, HttpRequest, HttpResponse, Uri};
|
||||||
|
use std::collections::BTreeMap;
|
||||||
|
use std::sync::{Arc, Mutex};
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
const CAP: &str = "http://test.invalid/capability";
|
||||||
|
const SEED: &str = "http://test.invalid/seed";
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
struct Recording(Arc<Mutex<Vec<HttpRequest>>>);
|
||||||
|
|
||||||
|
impl Recording {
|
||||||
|
fn requests(&self) -> Vec<HttpRequest> {
|
||||||
|
self.0.lock().unwrap().clone()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn response(status: u16, content_type: &str, body: &str) -> HttpResponse {
|
||||||
|
HttpResponse {
|
||||||
|
status_code: status,
|
||||||
|
headers: BTreeMap::new(),
|
||||||
|
content_type: Some(content_type.into()),
|
||||||
|
body: body.as_bytes().to_vec(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn client_with_cap(
|
||||||
|
cap_name: &str,
|
||||||
|
expose_capability: bool,
|
||||||
|
cap_response: HttpResponse,
|
||||||
|
) -> (GridClient, Recording) {
|
||||||
|
let requests = Arc::new(Mutex::new(Vec::new()));
|
||||||
|
let captured = Arc::clone(&requests);
|
||||||
|
let cap_reply = Mutex::new(Some(cap_response));
|
||||||
|
let seed = if expose_capability {
|
||||||
|
format!("<llsd><map><key>{cap_name}</key><uri>{CAP}</uri></map></llsd>")
|
||||||
|
} else {
|
||||||
|
"<llsd><map></map></llsd>".into()
|
||||||
|
};
|
||||||
|
let handler = HttpMessageHandler::new(move |request, _| {
|
||||||
|
let reply = if request.uri.0 == SEED {
|
||||||
|
response(200, "application/llsd+xml", &seed)
|
||||||
|
} else {
|
||||||
|
captured.lock().unwrap().push(request);
|
||||||
|
cap_reply
|
||||||
|
.lock()
|
||||||
|
.unwrap()
|
||||||
|
.take()
|
||||||
|
.unwrap_or_else(|| response(404, "application/octet-stream", ""))
|
||||||
|
};
|
||||||
|
async move { reply }
|
||||||
|
});
|
||||||
|
let mut client = GridClient::new().expect("GridClient constructor");
|
||||||
|
client.set_http_caps_client(HttpCapsClient::new(handler.clone()).unwrap());
|
||||||
|
let mut simulator_client = GridClient::new().expect("simulator GridClient constructor");
|
||||||
|
simulator_client.set_http_caps_client(HttpCapsClient::new(handler).unwrap());
|
||||||
|
let simulator = Simulator::new(
|
||||||
|
simulator_client,
|
||||||
|
"127.0.0.1:13".parse().unwrap(),
|
||||||
|
0,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
simulator
|
||||||
|
.set_seed_caps(Some(Uri(SEED.into())), Some(true))
|
||||||
|
.unwrap();
|
||||||
|
let mut network = client.network();
|
||||||
|
network.set_current_sim(Some(simulator));
|
||||||
|
client.set_network(network);
|
||||||
|
(client, Recording(requests))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn only_request(recording: &Recording) -> HttpRequest {
|
||||||
|
let requests = recording.requests();
|
||||||
|
assert_eq!(requests.len(), 1);
|
||||||
|
requests.into_iter().next().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn uuid() -> UUID {
|
||||||
|
UUID::random().expect("UUID Random")
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.GetParcelEnvironment_UsesParcelidQueryParameter::test 5c2f2b0fa2a86955975c621b2415a92ff3da283215e669956e14bf5ee2a4c1f4 translated
|
||||||
|
#[test]
|
||||||
|
fn get_parcel_environment_uses_parcelid_query_parameter() {
|
||||||
|
let (client, recording) = client_with_cap(
|
||||||
|
"ExtEnvironment",
|
||||||
|
true,
|
||||||
|
response(
|
||||||
|
200,
|
||||||
|
"application/llsd+xml",
|
||||||
|
"<llsd><map><key>success</key><boolean>true</boolean></map></llsd>",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
block_on(client.environment().get_parcel_environment(42, None)).unwrap();
|
||||||
|
let request = only_request(&recording);
|
||||||
|
assert_eq!(request.method, "GET");
|
||||||
|
assert!(request.uri.0.contains("parcelid=42"));
|
||||||
|
assert!(!request.uri.0.contains("parcel_id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.SetParcelEnvironment_SendsParcelidInQueryStringNotBody::test f633e2d78e4c6a0fff42917ccfe8de68e4f6133a11e7eef7f9b757c3d1622f0f translated
|
||||||
|
#[test]
|
||||||
|
fn set_parcel_environment_sends_parcelid_in_query_not_body() {
|
||||||
|
let (client, recording) = client_with_cap(
|
||||||
|
"ExtEnvironment",
|
||||||
|
true,
|
||||||
|
response(
|
||||||
|
200,
|
||||||
|
"application/llsd+xml",
|
||||||
|
"<llsd><map><key>success</key><boolean>true</boolean></map></llsd>",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
let mut environment = EnvironmentData::new().expect("EnvironmentData constructor");
|
||||||
|
environment.set_day_length(7200);
|
||||||
|
block_on(
|
||||||
|
client
|
||||||
|
.environment()
|
||||||
|
.set_parcel_environment(7, environment, None),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
let request = only_request(&recording);
|
||||||
|
assert_eq!(request.method, "POST");
|
||||||
|
assert!(request.uri.0.contains("parcelid=7"));
|
||||||
|
let OSD::Map(body) = OSDParser::deserialize_with_bytes(request.body).unwrap() else {
|
||||||
|
panic!("ExtEnvironment POST body is not an LLSD map")
|
||||||
|
};
|
||||||
|
assert!(!body.contains_key("parcel_id"));
|
||||||
|
let Some(OSD::Map(environment)) = body.get("environment") else {
|
||||||
|
panic!("environment map missing")
|
||||||
|
};
|
||||||
|
assert_eq!(
|
||||||
|
environment.get("day_length").unwrap().as_integer().unwrap(),
|
||||||
|
7200
|
||||||
|
);
|
||||||
|
assert!(!environment.contains_key("sky_track"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.SetRegionEnvironment_OmitsQueryStringEntirely::test bade6e06765506ad7e500ac3e5c9f168605ce25fef86647819d285a68b39f109 translated
|
||||||
|
#[test]
|
||||||
|
fn set_region_environment_omits_query_string_entirely() {
|
||||||
|
let (client, recording) = client_with_cap(
|
||||||
|
"ExtEnvironment",
|
||||||
|
true,
|
||||||
|
response(
|
||||||
|
200,
|
||||||
|
"application/llsd+xml",
|
||||||
|
"<llsd><map><key>success</key><boolean>true</boolean></map></llsd>",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
let environment = EnvironmentData::new().expect("EnvironmentData constructor");
|
||||||
|
block_on(
|
||||||
|
client
|
||||||
|
.environment()
|
||||||
|
.set_region_environment_with_environment_data_cancellation_token(environment, None),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
let request = only_request(&recording);
|
||||||
|
assert_eq!(request.method, "POST");
|
||||||
|
assert_eq!(request.uri.0, CAP);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.ResetParcelEnvironment_SendsHttpDeleteNotPost::test 4360439192c137f5d7a2ceb83b8664f3917b4b261798050cb855d596f483f082 translated
|
||||||
|
#[test]
|
||||||
|
fn reset_parcel_environment_sends_delete_not_post() {
|
||||||
|
let (client, recording) = client_with_cap(
|
||||||
|
"ExtEnvironment",
|
||||||
|
true,
|
||||||
|
response(
|
||||||
|
200,
|
||||||
|
"application/llsd+xml",
|
||||||
|
"<llsd><map><key>success</key><boolean>true</boolean></map></llsd>",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
assert!(block_on(client.environment().reset_parcel_environment(3, None)).unwrap());
|
||||||
|
let request = only_request(&recording);
|
||||||
|
assert_eq!(request.method, "DELETE");
|
||||||
|
assert!(request.uri.0.contains("parcelid=3"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_HappyPath_ParsesAllowedMapAndBuildsExpectedQuery::test 2571d3a4100face21268d7ca2401cc8468e711c03c808704aacc7a50006125d5 translated
|
||||||
|
#[test]
|
||||||
|
fn query_experiences_on_parcel_happy_path() {
|
||||||
|
let first = uuid();
|
||||||
|
let second = uuid();
|
||||||
|
let first_text = first.to_string();
|
||||||
|
let second_text = second.to_string();
|
||||||
|
let body = format!(r#"{{"experiences":{{"{first_text}":true,"{second_text}":false}}}}"#);
|
||||||
|
let (mut client, recording) = client_with_cap(
|
||||||
|
"ExperienceQuery",
|
||||||
|
true,
|
||||||
|
response(200, "application/json", &body),
|
||||||
|
);
|
||||||
|
let result = block_on(client.self_().query_experiences_on_parcel(
|
||||||
|
42,
|
||||||
|
Box::new([first, second].into_iter()),
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.unwrap()
|
||||||
|
.expect("experience result");
|
||||||
|
assert_eq!(result.get(&first), Some(&true));
|
||||||
|
assert_eq!(result.get(&second), Some(&false));
|
||||||
|
let request = only_request(&recording);
|
||||||
|
assert!(request.uri.0.contains("parcelid=42"));
|
||||||
|
assert!(
|
||||||
|
request
|
||||||
|
.uri
|
||||||
|
.0
|
||||||
|
.contains(&format!("experiences={first_text},{second_text}"))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoExperienceIds_OmitsExperiencesParam::test ddbaa53aa8c63262c2241588b4281c42bbb66efdecac95e297deb0fb81797455 translated
|
||||||
|
#[test]
|
||||||
|
fn query_experiences_on_parcel_no_ids_omits_parameter() {
|
||||||
|
let (mut client, recording) = client_with_cap(
|
||||||
|
"ExperienceQuery",
|
||||||
|
true,
|
||||||
|
response(200, "application/json", r#"{"experiences":{}}"#),
|
||||||
|
);
|
||||||
|
let result = block_on(client.self_().query_experiences_on_parcel(
|
||||||
|
7,
|
||||||
|
Box::new(std::iter::empty()),
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.unwrap()
|
||||||
|
.expect("experience result");
|
||||||
|
assert!(result.is_empty());
|
||||||
|
let request = only_request(&recording);
|
||||||
|
assert!(request.uri.0.contains("parcelid=7"));
|
||||||
|
assert!(!request.uri.0.contains("experiences"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoCapability_ReturnsNullWithoutRequest::test 5c6a6584fba8ddc66200367217f658d342fb2c26d6be9e49ccf3892bea420095 translated
|
||||||
|
#[test]
|
||||||
|
fn query_experiences_on_parcel_no_capability_returns_none_without_request() {
|
||||||
|
let (mut client, recording) = client_with_cap(
|
||||||
|
"ExperienceQuery",
|
||||||
|
false,
|
||||||
|
response(404, "application/json", ""),
|
||||||
|
);
|
||||||
|
let result = block_on(client.self_().query_experiences_on_parcel(
|
||||||
|
1,
|
||||||
|
Box::new([uuid()].into_iter()),
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.unwrap();
|
||||||
|
assert!(result.is_none());
|
||||||
|
assert!(recording.requests().is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NonSuccessStatus_ReturnsNull::test 977fe55acd5aeb5735cc718f705a2742ae0dfab12dc1211c03a64cc6d1f3bbf5 translated
|
||||||
|
#[test]
|
||||||
|
fn query_experiences_on_parcel_non_success_returns_none() {
|
||||||
|
let (mut client, _) = client_with_cap(
|
||||||
|
"ExperienceQuery",
|
||||||
|
true,
|
||||||
|
response(500, "application/json", ""),
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
block_on(client.self_().query_experiences_on_parcel(
|
||||||
|
1,
|
||||||
|
Box::new([uuid()].into_iter()),
|
||||||
|
None
|
||||||
|
))
|
||||||
|
.unwrap()
|
||||||
|
.is_none()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_WeeklySchedule_ParsesDaysAndTime::test 0f64aab66c6a6d807b3d2bbc46b636a85900e4f76e35d5e3dd8cd0d8b295618b translated
|
||||||
|
#[test]
|
||||||
|
fn get_region_restart_schedule_weekly_parses_days_and_time() {
|
||||||
|
let (client, _) = client_with_cap(
|
||||||
|
"RegionSchedule",
|
||||||
|
true,
|
||||||
|
response(
|
||||||
|
200,
|
||||||
|
"application/json",
|
||||||
|
r#"{"restart":{"type":"W","days":"TR","time":7200}}"#,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
let schedule = block_on(client.estate().get_region_restart_schedule(None))
|
||||||
|
.unwrap()
|
||||||
|
.expect("restart schedule");
|
||||||
|
assert!(!schedule.is_daily());
|
||||||
|
assert_eq!(
|
||||||
|
schedule.days(),
|
||||||
|
RegionRestartDays(RegionRestartDays::TUESDAY.0 | RegionRestartDays::THURSDAY.0)
|
||||||
|
);
|
||||||
|
assert_eq!(schedule.time(), Duration::from_secs(2 * 60 * 60));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_DailySchedule_ReturnsAllDays::test cd966b6e3ba470c91ac958bf6c71aeb34f4dab060ad5334cb6060e1954b5c6d0 translated
|
||||||
|
#[test]
|
||||||
|
fn get_region_restart_schedule_daily_returns_all_days() {
|
||||||
|
let (client, _) = client_with_cap(
|
||||||
|
"RegionSchedule",
|
||||||
|
true,
|
||||||
|
response(
|
||||||
|
200,
|
||||||
|
"application/json",
|
||||||
|
r#"{"restart":{"type":"D","time":3600}}"#,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
let schedule = block_on(client.estate().get_region_restart_schedule(None))
|
||||||
|
.unwrap()
|
||||||
|
.expect("restart schedule");
|
||||||
|
assert!(schedule.is_daily());
|
||||||
|
assert_eq!(schedule.days(), RegionRestartDays::ALL);
|
||||||
|
assert_eq!(schedule.time(), Duration::from_secs(60 * 60));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_NoRestartConfigured_ReturnsNull::test 59a4b050a79659ccaf0fff13b750d634d803ed7b9e4940cbad676c1bdc04a5fc translated
|
||||||
|
#[test]
|
||||||
|
fn get_region_restart_schedule_no_restart_returns_none() {
|
||||||
|
let (client, _) = client_with_cap(
|
||||||
|
"RegionSchedule",
|
||||||
|
true,
|
||||||
|
response(200, "application/json", "{}"),
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
block_on(client.estate().get_region_restart_schedule(None))
|
||||||
|
.unwrap()
|
||||||
|
.is_none()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_NoCapability_ReturnsNullWithoutRequest::test e169e7846874ed4309a50cb25b03c2e722a8d758a787654a5906610ab3b655f1 translated
|
||||||
|
#[test]
|
||||||
|
fn get_region_restart_schedule_no_capability_returns_none_without_request() {
|
||||||
|
let (client, recording) = client_with_cap(
|
||||||
|
"RegionSchedule",
|
||||||
|
false,
|
||||||
|
response(404, "application/json", ""),
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
block_on(client.estate().get_region_restart_schedule(None))
|
||||||
|
.unwrap()
|
||||||
|
.is_none()
|
||||||
|
);
|
||||||
|
assert!(recording.requests().is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
fn schedule(daily: bool, days: RegionRestartDays, time: Duration) -> RegionRestartSchedule {
|
||||||
|
let mut schedule = RegionRestartSchedule::new().expect("RegionRestartSchedule constructor");
|
||||||
|
schedule.set_is_daily(daily);
|
||||||
|
schedule.set_days(days);
|
||||||
|
schedule.set_time(time);
|
||||||
|
schedule
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_Weekly_PostsUppercaseDaysAndSeconds::test 153fc0ac84af549c1381d0814a356bf2d9e0ead2c879e503981193366943546c translated
|
||||||
|
#[test]
|
||||||
|
fn set_region_restart_schedule_weekly_posts_uppercase_days_and_seconds() {
|
||||||
|
let (client, recording) = client_with_cap(
|
||||||
|
"RegionSchedule",
|
||||||
|
true,
|
||||||
|
response(200, "application/json", ""),
|
||||||
|
);
|
||||||
|
let days = RegionRestartDays(
|
||||||
|
RegionRestartDays::MONDAY.0 | RegionRestartDays::WEDNESDAY.0 | RegionRestartDays::FRIDAY.0,
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
block_on(
|
||||||
|
client.estate().set_region_restart_schedule(
|
||||||
|
schedule(false, days, Duration::from_secs(5400)),
|
||||||
|
None
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.unwrap()
|
||||||
|
);
|
||||||
|
let body = String::from_utf8(only_request(&recording).body).unwrap();
|
||||||
|
assert!(body.contains("<key>type</key>"));
|
||||||
|
assert!(body.contains('W'));
|
||||||
|
assert!(body.contains("MWF"));
|
||||||
|
assert!(body.contains("5400"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_DailyIgnoresDays_DoesNotPostDaysKey::test b51a1272465c3316194542eb346b2aa15c43fdc8474163ddd851b3f2204d1c2b translated
|
||||||
|
#[test]
|
||||||
|
fn set_region_restart_schedule_daily_omits_days() {
|
||||||
|
let (client, recording) = client_with_cap(
|
||||||
|
"RegionSchedule",
|
||||||
|
true,
|
||||||
|
response(200, "application/json", ""),
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
block_on(client.estate().set_region_restart_schedule(
|
||||||
|
schedule(
|
||||||
|
true,
|
||||||
|
RegionRestartDays::NONE,
|
||||||
|
Duration::from_secs(3 * 60 * 60)
|
||||||
|
),
|
||||||
|
None
|
||||||
|
))
|
||||||
|
.unwrap()
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
!String::from_utf8(only_request(&recording).body)
|
||||||
|
.unwrap()
|
||||||
|
.contains("<key>days</key>")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_EmptyDaysClearsSchedule::test 57ef3c0f8d9eeac58a7d1b3e7dbc44413016f39303d304cacd3071bd2c55f320 translated
|
||||||
|
#[test]
|
||||||
|
fn set_region_restart_schedule_empty_days_clears_schedule() {
|
||||||
|
let (client, recording) = client_with_cap(
|
||||||
|
"RegionSchedule",
|
||||||
|
true,
|
||||||
|
response(200, "application/json", ""),
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
block_on(client.estate().set_region_restart_schedule(
|
||||||
|
schedule(false, RegionRestartDays::NONE, Duration::ZERO),
|
||||||
|
None
|
||||||
|
))
|
||||||
|
.unwrap()
|
||||||
|
);
|
||||||
|
let body = String::from_utf8(only_request(&recording).body).unwrap();
|
||||||
|
assert!(body.contains("<key>days</key>"));
|
||||||
|
assert!(body.contains("<string />") || body.contains("<string></string>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_NoCapability_ReturnsFalseWithoutRequest::test be03507fe574b9f7c7174c39af44b7b693e1b7a496845db46451ef09bf9db206 translated
|
||||||
|
#[test]
|
||||||
|
fn set_region_restart_schedule_no_capability_returns_false_without_request() {
|
||||||
|
let (client, recording) = client_with_cap(
|
||||||
|
"RegionSchedule",
|
||||||
|
false,
|
||||||
|
response(404, "application/json", ""),
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
!block_on(client.estate().set_region_restart_schedule(
|
||||||
|
schedule(true, RegionRestartDays::NONE, Duration::ZERO),
|
||||||
|
None
|
||||||
|
))
|
||||||
|
.unwrap()
|
||||||
|
);
|
||||||
|
assert!(recording.requests().is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.SetRegionRestartScheduleAsync_NonSuccessStatus_ReturnsFalse::test 16c8988d7aa15ea9f58deaa2e3f416b6115978e23073fd99749843f4f410dca4 translated
|
||||||
|
#[test]
|
||||||
|
fn set_region_restart_schedule_non_success_returns_false() {
|
||||||
|
let (client, _) = client_with_cap(
|
||||||
|
"RegionSchedule",
|
||||||
|
true,
|
||||||
|
response(500, "application/json", ""),
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
!block_on(client.estate().set_region_restart_schedule(
|
||||||
|
schedule(true, RegionRestartDays::NONE, Duration::ZERO),
|
||||||
|
None
|
||||||
|
))
|
||||||
|
.unwrap()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField::test 4d367bc3fd012d1579847fd9837bf883c5ea95452776a086bbf856899d7c2099 translated
|
||||||
|
#[test]
|
||||||
|
fn sim_console_response_message_deserialize_reads_body_field() {
|
||||||
|
let map = libremetaverse_structured_data::OSDMap::new_with_dictionary(
|
||||||
|
std::collections::HashMap::from([(
|
||||||
|
"body".into(),
|
||||||
|
OSD::String("console output text".into()),
|
||||||
|
)]),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
let mut message =
|
||||||
|
SimConsoleResponseMessage::new().expect("SimConsoleResponseMessage constructor");
|
||||||
|
message.deserialize(map).unwrap();
|
||||||
|
assert_eq!(message.body, "console output text");
|
||||||
|
}
|
||||||
23
tests/compat/tests/world_constructor_semantics.rs
Normal file
23
tests/compat/tests/world_constructor_semantics.rs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
// Exact Rust translations of the world-manager cases in
|
||||||
|
// LibreMetaverse.Tests/ConstructorNullArgumentTests.cs.
|
||||||
|
// Source SHA-256: 28deea0bf4d9353a2424842c6184abab8fe82746ceb12e093912728a247f21bc
|
||||||
|
|
||||||
|
use libremetaverse::{AgentManager, Error, GridManager, ObjectManager};
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.GridManager_Null_Throws::test e972a95f334b0f46948cda34c27124c28c44faf4372d0e598d7dc60050b49be4 translated
|
||||||
|
#[test]
|
||||||
|
fn grid_manager_null_throws() {
|
||||||
|
assert!(matches!(GridManager::new(None), Err(Error::ArgumentNull)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.ObjectManager_Null_Throws::test 8a11feba0edfb35e5dd99f681182e8f5a5cf8a3f738211b45a683a8a2ad45ddb translated
|
||||||
|
#[test]
|
||||||
|
fn object_manager_null_throws() {
|
||||||
|
assert!(matches!(ObjectManager::new(None), Err(Error::ArgumentNull)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AgentManager_Null_Throws::test d86e41b6cdd03063685aa330c31b9a274c1d400b9a461abf3065fe185fe0bbf0 translated
|
||||||
|
#[test]
|
||||||
|
fn agent_manager_null_throws() {
|
||||||
|
assert!(matches!(AgentManager::new(None), Err(Error::ArgumentNull)));
|
||||||
|
}
|
||||||
81
tests/compat/tests/world_live_semantics.rs
Normal file
81
tests/compat/tests/world_live_semantics.rs
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
// Exact Rust translation of LibreMetaverse.Tests/EstateToolsTests.cs.
|
||||||
|
// Source SHA-256: 2f1867304e21e72d20fbeed98e7705528797947eb3115f84f80aa6adc2f3f88e
|
||||||
|
|
||||||
|
use libremetaverse::{GridClient, NetworkManager};
|
||||||
|
use libremetaverse_compat_tests::{block_on, live_grid_credentials};
|
||||||
|
use libremetaverse_types::UUID;
|
||||||
|
use std::sync::mpsc;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
struct LiveEstate {
|
||||||
|
client: GridClient,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl LiveEstate {
|
||||||
|
fn login() -> Self {
|
||||||
|
let mut client = GridClient::new().expect("GridClient constructor");
|
||||||
|
client.settings().timing().login_timeout = 30_000;
|
||||||
|
let network = client.network();
|
||||||
|
let (first, last, password, login_url) = live_grid_credentials();
|
||||||
|
let start = NetworkManager::start_location("Hooper".into(), 179, 18, 32)
|
||||||
|
.expect("NetworkManager StartLocation");
|
||||||
|
let mut login = network
|
||||||
|
.default_login_params(
|
||||||
|
first,
|
||||||
|
last,
|
||||||
|
password,
|
||||||
|
"Unit Test Framework".into(),
|
||||||
|
"admin@radegast.life".into(),
|
||||||
|
)
|
||||||
|
.expect("NetworkManager DefaultLoginParams");
|
||||||
|
login.start = start;
|
||||||
|
login.uri = login_url;
|
||||||
|
let logged_in = block_on(network.login_with_login_params_cancellation_token(login, None))
|
||||||
|
.expect("NetworkManager LoginAsync");
|
||||||
|
assert!(
|
||||||
|
logged_in,
|
||||||
|
"client failed to login: {}",
|
||||||
|
network.login_message()
|
||||||
|
);
|
||||||
|
assert!(network.connected(), "client is not connected to the grid");
|
||||||
|
let current = network.current_sim().expect("CurrentSim after login");
|
||||||
|
if !current.name.is_empty() && !current.name.eq_ignore_ascii_case("Hooper") {
|
||||||
|
eprintln!(
|
||||||
|
"logged in to {} instead of Hooper; covenant request remains read-only",
|
||||||
|
current.name
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Self { client }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Drop for LiveEstate {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
let _ = self.client.network().logout_with_method();
|
||||||
|
let _ = self.client.dispose_with_method();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/EstateToolsTests.cs::EstateToolsTests.RequestConvenant::test d8d752dd6e53477e4c66bcb5d0e3ec1021a9b3ceda1f689f59b5e606e1713729 ignored-live
|
||||||
|
#[test]
|
||||||
|
#[cfg_attr(
|
||||||
|
not(live_grid_credentials),
|
||||||
|
ignore = "requires GRID_USER, GRID_PASSWORD, and GRID_LOGIN_URL in the environment or workspace .env; performs only a reversible read-only covenant request"
|
||||||
|
)]
|
||||||
|
fn request_covenant() {
|
||||||
|
let live = LiveEstate::login();
|
||||||
|
let estate = live.client.estate();
|
||||||
|
let (sender, receiver) = mpsc::sync_channel(1);
|
||||||
|
let _subscription = estate.subscribe_estate_covenant_reply(std::sync::Arc::new(move |reply| {
|
||||||
|
let _ = sender.send((reply.estate_name(), reply.covenant_id()));
|
||||||
|
}));
|
||||||
|
estate
|
||||||
|
.request_covenant()
|
||||||
|
.expect("EstateTools RequestCovenant");
|
||||||
|
let Ok((name, covenant)) = receiver.recv_timeout(Duration::from_secs(10)) else {
|
||||||
|
eprintln!("timeout waiting for estate covenant reply after 10 seconds");
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
assert!(!name.is_empty());
|
||||||
|
assert_ne!(covenant, UUID::zero());
|
||||||
|
}
|
||||||
150
tests/compat/tests/world_message_semantics.rs
Normal file
150
tests/compat/tests/world_message_semantics.rs
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
// Exact Rust translations of LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs and
|
||||||
|
// LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs public message cases.
|
||||||
|
// Source SHA-256: b023ec7ac43124fcd47b15474a9d66d1fca522d1166dc0d5c21b8c82189051f2
|
||||||
|
// Source SHA-256: 7b67b72c2ad652626126d0e4eda7e8c26fc94c28f0f915238b2925f80a3d4af2
|
||||||
|
|
||||||
|
use libremetaverse::messages::linden::{
|
||||||
|
ExperienceListMessage, ExperiencePreferencesMessage, RegionExperiencesMessage,
|
||||||
|
};
|
||||||
|
use libremetaverse_structured_data::{OSD, OSDMap};
|
||||||
|
use libremetaverse_types::UUID;
|
||||||
|
|
||||||
|
fn uuid() -> UUID {
|
||||||
|
UUID::random().expect("UUID Random")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn map(entries: impl IntoIterator<Item = (&'static str, OSD)>) -> OSDMap {
|
||||||
|
OSDMap::new_with_dictionary(
|
||||||
|
entries
|
||||||
|
.into_iter()
|
||||||
|
.map(|(key, value)| (key.to_owned(), value))
|
||||||
|
.collect(),
|
||||||
|
)
|
||||||
|
.expect("OSDMap dictionary constructor")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn ids(values: impl IntoIterator<Item = UUID>) -> OSD {
|
||||||
|
OSD::Array(values.into_iter().map(OSD::UUID).collect())
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_ReadsExperienceIdsKey::test aa1f7d09f6c79118ea2e60621d57bd63632085ce81bc979e42294aca53d4f0d9 translated
|
||||||
|
#[test]
|
||||||
|
fn experience_list_deserialize_reads_experience_ids_key() {
|
||||||
|
let id = uuid();
|
||||||
|
let mut message = ExperienceListMessage::new().expect("ExperienceListMessage constructor");
|
||||||
|
message
|
||||||
|
.deserialize(map([("experience_ids", ids([id]))]))
|
||||||
|
.unwrap();
|
||||||
|
assert_eq!(message.experience_i_ds, vec![id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Deserialize_IgnoresLegacyExperienceKeysKey::test cd1d372b9a976c04dee11da1ade182e4f9239e1f7633e788347c6d5f255835ec translated
|
||||||
|
#[test]
|
||||||
|
fn experience_list_deserialize_ignores_legacy_experience_keys_key() {
|
||||||
|
let mut message = ExperienceListMessage::new().expect("ExperienceListMessage constructor");
|
||||||
|
message
|
||||||
|
.deserialize(map([("experience_keys", ids([uuid()]))]))
|
||||||
|
.unwrap();
|
||||||
|
assert!(message.experience_i_ds.is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.ExperienceListMessage_Serialize_WritesExperienceIdsKey::test 3fa4cb5d598940f693285bcc64179a4dea927a3643a76a061a933a265488d4be translated
|
||||||
|
#[test]
|
||||||
|
fn experience_list_serialize_writes_experience_ids_key() {
|
||||||
|
let mut message = ExperienceListMessage::new().expect("ExperienceListMessage constructor");
|
||||||
|
message.experience_i_ds.push(uuid());
|
||||||
|
let encoded = message.serialize().unwrap();
|
||||||
|
assert!(encoded.contains_key("experience_ids".into()).unwrap());
|
||||||
|
assert!(!encoded.contains_key("experience_keys".into()).unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_ReadsBlockedTrustedAllowedAndDefault::test 61df3b0c60d32b6c9bb843eb7a1a11fe8c0b1fd59c7a09853ad1b0e1d93cd4fd translated
|
||||||
|
#[test]
|
||||||
|
fn region_experiences_deserialize_reads_all_lists_and_default() {
|
||||||
|
let blocked = uuid();
|
||||||
|
let trusted = uuid();
|
||||||
|
let allowed = uuid();
|
||||||
|
let default_experience = uuid();
|
||||||
|
let mut message =
|
||||||
|
RegionExperiencesMessage::new().expect("RegionExperiencesMessage constructor");
|
||||||
|
message
|
||||||
|
.deserialize(map([
|
||||||
|
("blocked", ids([blocked])),
|
||||||
|
("trusted", ids([trusted])),
|
||||||
|
("allowed", ids([allowed])),
|
||||||
|
("default", OSD::UUID(default_experience)),
|
||||||
|
]))
|
||||||
|
.unwrap();
|
||||||
|
assert_eq!(message.blocked, vec![blocked]);
|
||||||
|
assert_eq!(message.trusted, vec![trusted]);
|
||||||
|
assert_eq!(message.allowed, vec![allowed]);
|
||||||
|
assert_eq!(message.default, default_experience);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Deserialize_IgnoresLegacyContribKey::test 851d037919003ebb414105e57bf37f73ba37dff8f733c36183c447f1349f3316 translated
|
||||||
|
#[test]
|
||||||
|
fn region_experiences_deserialize_ignores_legacy_contrib_key() {
|
||||||
|
let mut message =
|
||||||
|
RegionExperiencesMessage::new().expect("RegionExperiencesMessage constructor");
|
||||||
|
message
|
||||||
|
.deserialize(map([
|
||||||
|
("blocked", OSD::Array(Vec::new())),
|
||||||
|
("trusted", OSD::Array(Vec::new())),
|
||||||
|
("contrib", ids([uuid()])),
|
||||||
|
]))
|
||||||
|
.unwrap();
|
||||||
|
assert!(message.allowed.is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperienceListAndRegionMessageTests.cs::ExperienceListAndRegionMessageTests.RegionExperiencesMessage_Serialize_WritesAllowedKeyNotContrib::test 53c3a7d6a200816615a9efaa222ccf294e3a8334d320812c6ec56a0a3e7e05bb translated
|
||||||
|
#[test]
|
||||||
|
fn region_experiences_serialize_writes_allowed_not_contrib() {
|
||||||
|
let mut message =
|
||||||
|
RegionExperiencesMessage::new().expect("RegionExperiencesMessage constructor");
|
||||||
|
message.allowed.push(uuid());
|
||||||
|
let encoded = message.serialize().unwrap();
|
||||||
|
assert!(encoded.contains_key("allowed".into()).unwrap());
|
||||||
|
assert!(!encoded.contains_key("contrib".into()).unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Deserialize_ReadsAllowedListFromExperiencesKey::test 9bab78dbe142a3da6ad21a278f25d7da90776fce3861c7d602203c1e1842c9af translated
|
||||||
|
#[test]
|
||||||
|
fn experience_preferences_deserialize_reads_experiences_and_blocked() {
|
||||||
|
let allowed = uuid();
|
||||||
|
let blocked = uuid();
|
||||||
|
let mut message =
|
||||||
|
ExperiencePreferencesMessage::new().expect("ExperiencePreferencesMessage constructor");
|
||||||
|
message
|
||||||
|
.deserialize(map([
|
||||||
|
("experiences", ids([allowed])),
|
||||||
|
("blocked", ids([blocked])),
|
||||||
|
]))
|
||||||
|
.unwrap();
|
||||||
|
assert_eq!(message.allowed, vec![allowed]);
|
||||||
|
assert_eq!(message.blocked, vec![blocked]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Deserialize_IgnoresLegacyAllowedKey::test ec6d5e7c81214ea4e3d99740fdd33961578f895a90a42082067ca9819d93d2b0 translated
|
||||||
|
#[test]
|
||||||
|
fn experience_preferences_deserialize_ignores_legacy_allowed_key() {
|
||||||
|
let mut message =
|
||||||
|
ExperiencePreferencesMessage::new().expect("ExperiencePreferencesMessage constructor");
|
||||||
|
message
|
||||||
|
.deserialize(map([
|
||||||
|
("allowed", ids([uuid()])),
|
||||||
|
("blocked", OSD::Array(Vec::new())),
|
||||||
|
]))
|
||||||
|
.unwrap();
|
||||||
|
assert!(message.allowed.is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.Serialize_WritesAllowedListUnderExperiencesKey::test 45a0bffe39ab7bf0734ec5fce4435dbdda7ae94cf4e933210669e91dc45b1baf translated
|
||||||
|
#[test]
|
||||||
|
fn experience_preferences_serialize_writes_experiences_not_allowed() {
|
||||||
|
let mut message =
|
||||||
|
ExperiencePreferencesMessage::new().expect("ExperiencePreferencesMessage constructor");
|
||||||
|
message.allowed.push(uuid());
|
||||||
|
let encoded = message.serialize().unwrap();
|
||||||
|
assert!(encoded.contains_key("experiences".into()).unwrap());
|
||||||
|
assert!(!encoded.contains_key("allowed".into()).unwrap());
|
||||||
|
}
|
||||||
652
tests/compat/tests/world_object_semantics.rs
Normal file
652
tests/compat/tests/world_object_semantics.rs
Normal file
@@ -0,0 +1,652 @@
|
|||||||
|
// Exact Rust translations of object and texture tests owned by milestone issue #23.
|
||||||
|
// Source SHA-256: 1a9d986c5e2d7526e95a7bb5b870ebee13ddf9f4e8c3fd69c34b7a7f22375916
|
||||||
|
// Source SHA-256: b444ada9b4d09944dbdf7668c0c8105de66fb590bee1d6d1f284b30700ee5284
|
||||||
|
// Source SHA-256: f9a33efa0e88e4a7d86bf7beda56c0f45757ff66f0cdc161da384ad5a31467a6
|
||||||
|
|
||||||
|
#![allow(clippy::float_cmp)]
|
||||||
|
|
||||||
|
use libremetaverse::{
|
||||||
|
Bumpiness, Helpers, MappingType, Primitive, PrimitiveConstructionData, PrimitiveFlexibleData,
|
||||||
|
PrimitiveLightData, PrimitiveLightImage, PrimitiveObjectProperties, PrimitiveSculptData,
|
||||||
|
PrimitiveTextureEntry, Shininess,
|
||||||
|
};
|
||||||
|
use libremetaverse_structured_data::OSD;
|
||||||
|
use libremetaverse_types::{
|
||||||
|
Color4, HoleType, Material, PCode, PathCurve, PrimFlags, ProfileCurve, Quaternion, SculptType,
|
||||||
|
UUID, Vector3,
|
||||||
|
};
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
fn uuid() -> UUID {
|
||||||
|
UUID::random().expect("UUID Random")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn round_trip(entry: &PrimitiveTextureEntry) -> PrimitiveTextureEntry {
|
||||||
|
let bytes = entry.get_bytes().expect("TextureEntry GetBytes");
|
||||||
|
let length = i32::try_from(bytes.len()).expect("TextureEntry length fits Int32");
|
||||||
|
PrimitiveTextureEntry::new_with_bytes_int32_int32(bytes, 0, length)
|
||||||
|
.expect("TextureEntry byte constructor")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn face(entry: &PrimitiveTextureEntry, index: usize) -> &libremetaverse::PrimitiveTextureEntryFace {
|
||||||
|
entry.face_textures[index].as_ref().expect("per-face entry")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_vector(actual: Vector3, expected: Vector3) {
|
||||||
|
assert_eq!(
|
||||||
|
(actual.x, actual.y, actual.z),
|
||||||
|
(expected.x, expected.y, expected.z)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_quaternion(actual: Quaternion, expected: Quaternion) {
|
||||||
|
assert_eq!(
|
||||||
|
(actual.x, actual.y, actual.z, actual.w),
|
||||||
|
(expected.x, expected.y, expected.z, expected.w)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathBegin::test 5c8e14e1d08a91a4e7c3e252c932b8fe15cf6b5231cc9fe5bb7ef2ae6e2c8299 translated
|
||||||
|
#[test]
|
||||||
|
fn path_begin() {
|
||||||
|
for value in 0_u16..u16::from(u8::MAX) {
|
||||||
|
let unpacked = Primitive::unpack_begin_cut(value).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
Primitive::pack_begin_cut(unpacked).unwrap(),
|
||||||
|
value,
|
||||||
|
"started with {value}, float value was {unpacked}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathEnd::test 693bfe29f448e433705d65b8b6907f1b270fd636f914e18b76d7a0047dbea506 translated
|
||||||
|
#[test]
|
||||||
|
fn path_end() {
|
||||||
|
for value in 0_u16..u16::from(u8::MAX) {
|
||||||
|
let unpacked = Primitive::unpack_end_cut(value).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
Primitive::pack_end_cut(unpacked).unwrap(),
|
||||||
|
value,
|
||||||
|
"started with {value}, float value was {unpacked}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathRevolutions::test c3f61c80a204e608976cb44a0c10b9651496074c25f254eec8621db65dbbbe37 translated
|
||||||
|
#[test]
|
||||||
|
fn path_revolutions() {
|
||||||
|
for value in 0_u8..u8::MAX {
|
||||||
|
let unpacked = Primitive::unpack_path_revolutions(value).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
Primitive::pack_path_revolutions(unpacked).unwrap(),
|
||||||
|
value,
|
||||||
|
"started with {value}, float value was {unpacked}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathScale::test b92e4ab375fcc788dea701d8579268f39b4f3b1d51d4eed91458547350405d61 translated
|
||||||
|
#[test]
|
||||||
|
fn path_scale() {
|
||||||
|
for value in 0_u8..u8::MAX {
|
||||||
|
let unpacked = Primitive::unpack_path_scale(value).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
Primitive::pack_path_scale(unpacked).unwrap(),
|
||||||
|
value,
|
||||||
|
"started with {value}, float value was {unpacked}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathTaper::test 93a0adbc0630de3c9fbea6f8080d74ef6e3180e3813f00460bce5d52ef2f12b7 translated
|
||||||
|
#[test]
|
||||||
|
fn path_taper() {
|
||||||
|
for value in i8::MIN..i8::MAX {
|
||||||
|
let unpacked = Primitive::unpack_path_taper(value).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
Primitive::pack_path_taper(unpacked).unwrap(),
|
||||||
|
value,
|
||||||
|
"started with {value}, float value was {unpacked}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntryOffsets::test 720ea1a9477d333b14786bc14e9abca24858e63acae94f4c6055d81f14ff033a translated
|
||||||
|
#[test]
|
||||||
|
fn texture_entry_offsets() {
|
||||||
|
let mut value = -1.0_f32;
|
||||||
|
while value <= 1.0 {
|
||||||
|
value = (value * 1000.0).round() / 1000.0;
|
||||||
|
let packed = Helpers::te_offset_short(value).unwrap();
|
||||||
|
let unpacked = Helpers::te_offset_float(packed.to_le_bytes().to_vec(), 0).unwrap();
|
||||||
|
let rounded = (unpacked * 1000.0).round() / 1000.0;
|
||||||
|
assert!(
|
||||||
|
(rounded - value).abs() < f32::from_bits(1),
|
||||||
|
"{rounded} is not equal to {value}"
|
||||||
|
);
|
||||||
|
value += 0.001;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry::test 0670a9a8dcc4001e726df699ef8001604956b6674028a192502b92b725858990 translated
|
||||||
|
#[test]
|
||||||
|
fn texture_entry() {
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
let face = entry.create_face(0).unwrap();
|
||||||
|
face.set_bump(Bumpiness::Concrete);
|
||||||
|
face.set_fullbright(true);
|
||||||
|
face.set_media_flags(true);
|
||||||
|
face.set_offset_u(0.5);
|
||||||
|
face.set_offset_v(-0.5);
|
||||||
|
face.set_repeat_u(3.0);
|
||||||
|
face.set_repeat_v(4.0);
|
||||||
|
face.set_rgba(Color4 {
|
||||||
|
r: 0.0,
|
||||||
|
g: 0.25,
|
||||||
|
b: 0.75,
|
||||||
|
a: 1.0,
|
||||||
|
});
|
||||||
|
face.set_rotation(1.5);
|
||||||
|
face.set_shiny(Shininess::Medium);
|
||||||
|
face.set_tex_map_type(MappingType::Planar);
|
||||||
|
face.set_texture_id(uuid());
|
||||||
|
let first = entry.get_bytes().unwrap();
|
||||||
|
let length = i32::try_from(first.len()).expect("TextureEntry length fits Int32");
|
||||||
|
let decoded =
|
||||||
|
PrimitiveTextureEntry::new_with_bytes_int32_int32(first.clone(), 0, length).unwrap();
|
||||||
|
let second = decoded.get_bytes().unwrap();
|
||||||
|
assert_eq!(first.len(), second.len());
|
||||||
|
for (index, (actual, expected)) in first.iter().zip(&second).enumerate() {
|
||||||
|
assert_eq!(actual, expected, "byte {index} is not equal");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_DefaultFace_Roundtrips::test 8db56b448e53e6bec5540a5a4721dc75f85a933c6c89e166f7df7baf8e44aab3 translated
|
||||||
|
#[test]
|
||||||
|
fn render_material_id_default_face_round_trips() {
|
||||||
|
let material = uuid();
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
entry
|
||||||
|
.default_texture
|
||||||
|
.as_mut()
|
||||||
|
.unwrap()
|
||||||
|
.set_render_material_id(material);
|
||||||
|
assert_eq!(
|
||||||
|
round_trip(&entry)
|
||||||
|
.default_texture
|
||||||
|
.as_ref()
|
||||||
|
.unwrap()
|
||||||
|
.render_material_id(),
|
||||||
|
material
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_PerFace_Roundtrips::test 2897366ecaa41f07b4db6ebf3e80a7ebe56480f1c44f31cedea2d88a62214dc6 translated
|
||||||
|
#[test]
|
||||||
|
fn render_material_id_per_face_round_trips() {
|
||||||
|
let material = uuid();
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
entry
|
||||||
|
.create_face(0)
|
||||||
|
.unwrap()
|
||||||
|
.set_render_material_id(material);
|
||||||
|
let decoded = round_trip(&entry);
|
||||||
|
assert_eq!(face(&decoded, 0).render_material_id(), material);
|
||||||
|
assert_eq!(
|
||||||
|
decoded
|
||||||
|
.default_texture
|
||||||
|
.as_ref()
|
||||||
|
.unwrap()
|
||||||
|
.render_material_id(),
|
||||||
|
UUID::zero()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_MultipleFaces_Roundtrips::test f3d8c103e4b3d43a8e3bea1356ba13808633fdb2ea06583234551f9059b2a241 translated
|
||||||
|
#[test]
|
||||||
|
fn render_material_id_multiple_faces_round_trip() {
|
||||||
|
let default_material = uuid();
|
||||||
|
let first = uuid();
|
||||||
|
let second = uuid();
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
entry
|
||||||
|
.default_texture
|
||||||
|
.as_mut()
|
||||||
|
.unwrap()
|
||||||
|
.set_render_material_id(default_material);
|
||||||
|
entry.create_face(0).unwrap().set_render_material_id(first);
|
||||||
|
entry.create_face(1).unwrap().set_render_material_id(second);
|
||||||
|
let decoded = round_trip(&entry);
|
||||||
|
assert_eq!(
|
||||||
|
decoded
|
||||||
|
.default_texture
|
||||||
|
.as_ref()
|
||||||
|
.unwrap()
|
||||||
|
.render_material_id(),
|
||||||
|
default_material
|
||||||
|
);
|
||||||
|
assert_eq!(face(&decoded, 0).render_material_id(), first);
|
||||||
|
assert_eq!(face(&decoded, 1).render_material_id(), second);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.TextureEntry_RenderMaterialID_InheritsFromDefault_WhenNotOverridden::test 2313a0134836651e23c693505c3c000ad7ff24956b432d0761a5e8b77cb01642 translated
|
||||||
|
#[test]
|
||||||
|
fn render_material_id_inherits_from_default_when_not_overridden() {
|
||||||
|
let material = uuid();
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
entry
|
||||||
|
.default_texture
|
||||||
|
.as_mut()
|
||||||
|
.unwrap()
|
||||||
|
.set_render_material_id(material);
|
||||||
|
let decoded = round_trip(&entry);
|
||||||
|
assert_eq!(
|
||||||
|
decoded
|
||||||
|
.default_texture
|
||||||
|
.as_ref()
|
||||||
|
.unwrap()
|
||||||
|
.render_material_id(),
|
||||||
|
material
|
||||||
|
);
|
||||||
|
if let Some(face) = decoded.get_face(0).unwrap() {
|
||||||
|
assert_eq!(face.render_material_id(), material);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn high_face_round_trip(index: u32) -> bool {
|
||||||
|
let texture = uuid();
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
entry.create_face(index).unwrap().set_texture_id(texture);
|
||||||
|
let decoded = round_trip(&entry);
|
||||||
|
face(&decoded, index as usize).texture_id() == texture
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d3ad6116f2458248 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55 translated
|
||||||
|
#[test]
|
||||||
|
fn high_face_32_texture_id_is_preserved() {
|
||||||
|
assert!(high_face_round_trip(32));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:c6f3ac57944a5314 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55 translated
|
||||||
|
#[test]
|
||||||
|
fn high_face_33_texture_id_is_preserved() {
|
||||||
|
assert!(high_face_round_trip(33));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d59eced1ded07f84 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55 translated
|
||||||
|
#[test]
|
||||||
|
fn high_face_40_texture_id_is_preserved() {
|
||||||
|
assert!(high_face_round_trip(40));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:59df3d13bd106053 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55 translated
|
||||||
|
#[test]
|
||||||
|
fn high_face_44_texture_id_is_preserved() {
|
||||||
|
assert!(high_face_round_trip(44));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_AllHighFaces_TextureIDs_AllPreserved::test 203ca43b9f1965e1fae7feb36e84eff1df9ac5968eb23753077816d16dd24228 translated
|
||||||
|
#[test]
|
||||||
|
fn all_high_face_texture_ids_are_preserved() {
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
let expected: Vec<_> = (32..PrimitiveTextureEntry::MAX_FACES)
|
||||||
|
.map(|index| {
|
||||||
|
let texture = uuid();
|
||||||
|
entry
|
||||||
|
.create_face(u32::try_from(index).expect("face index fits UInt32"))
|
||||||
|
.unwrap()
|
||||||
|
.set_texture_id(texture);
|
||||||
|
texture
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
let decoded = round_trip(&entry);
|
||||||
|
for (offset, texture) in expected.into_iter().enumerate() {
|
||||||
|
assert_eq!(face(&decoded, offset + 32).texture_id(), texture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_LowAndHighFaces_BothPreserved::test dd520cac107415a186a44eb3a17bd000f933ec49b814a496e6788237fcfffb1e translated
|
||||||
|
#[test]
|
||||||
|
fn low_and_high_faces_are_both_preserved() {
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
let expected = [(0, uuid()), (15, uuid()), (32, uuid()), (44, uuid())];
|
||||||
|
for (index, texture) in expected {
|
||||||
|
entry.create_face(index).unwrap().set_texture_id(texture);
|
||||||
|
}
|
||||||
|
let decoded = round_trip(&entry);
|
||||||
|
for (index, texture) in expected {
|
||||||
|
assert_eq!(
|
||||||
|
face(&decoded, index as usize).texture_id(),
|
||||||
|
texture,
|
||||||
|
"face {index}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RGBA_IsPreserved::test db41d130d270d31f52f3928df88ccc052102673c1afbca03cc0648526fafbabb translated
|
||||||
|
#[test]
|
||||||
|
fn face_32_rgba_is_preserved() {
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
entry.default_texture.as_mut().unwrap().set_rgba(Color4 {
|
||||||
|
r: 1.0,
|
||||||
|
g: 1.0,
|
||||||
|
b: 1.0,
|
||||||
|
a: 1.0,
|
||||||
|
});
|
||||||
|
entry.create_face(32).unwrap().set_rgba(Color4 {
|
||||||
|
r: 1.0,
|
||||||
|
g: 0.0,
|
||||||
|
b: 0.0,
|
||||||
|
a: 1.0,
|
||||||
|
});
|
||||||
|
let color = face(&round_trip(&entry), 32).rgba();
|
||||||
|
assert!((color.r - 1.0).abs() <= 0.01);
|
||||||
|
assert!(color.g.abs() <= 0.01);
|
||||||
|
assert!(color.b.abs() <= 0.01);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatU_IsPreserved::test 58e80815263025ec54cd15e3c9a42771f5e55c81e9acb212a0f163faef9fd499 translated
|
||||||
|
#[test]
|
||||||
|
fn face_32_repeat_u_is_preserved() {
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
entry.create_face(32).unwrap().set_repeat_u(4.0);
|
||||||
|
assert!((face(&round_trip(&entry), 32).repeat_u() - 4.0).abs() <= 0.01);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatV_IsPreserved::test fbeb1fdd584a26576b6f1ba653b2995d1a6d6bccc2c1dc51e46aa9f211b78724 translated
|
||||||
|
#[test]
|
||||||
|
fn face_32_repeat_v_is_preserved() {
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
entry.create_face(32).unwrap().set_repeat_v(4.0);
|
||||||
|
assert!((face(&round_trip(&entry), 32).repeat_v() - 4.0).abs() <= 0.01);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_AllFaces_TextureIDs_AllPreserved::test 5e5a390af8deff77ef80f751735456541f24d7e27666557d50d99065cc3ba6a4 translated
|
||||||
|
#[test]
|
||||||
|
fn all_face_texture_ids_are_preserved() {
|
||||||
|
let mut entry = PrimitiveTextureEntry::new_with_uuid(uuid()).unwrap();
|
||||||
|
let expected: Vec<_> = (0..PrimitiveTextureEntry::MAX_FACES)
|
||||||
|
.map(|index| {
|
||||||
|
let texture = uuid();
|
||||||
|
entry
|
||||||
|
.create_face(u32::try_from(index).expect("face index fits UInt32"))
|
||||||
|
.unwrap()
|
||||||
|
.set_texture_id(texture);
|
||||||
|
texture
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
let decoded = round_trip(&entry);
|
||||||
|
for (index, texture) in expected.into_iter().enumerate() {
|
||||||
|
assert_eq!(face(&decoded, index).texture_id(), texture, "face {index}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.GetOSD_FromOSD_Roundtrip_Minimal::test 5e81b8a195f3e59bfe9e3ebf50c3291f7cbcd49f567ede7c1c8b726e0c6c9c19 translated
|
||||||
|
#[test]
|
||||||
|
fn primitive_osd_round_trip_minimal() {
|
||||||
|
let mut primitive = Primitive::new_with_constructor().unwrap();
|
||||||
|
primitive.id = uuid();
|
||||||
|
primitive.local_id = 12_345;
|
||||||
|
primitive.parent_id = 54_321;
|
||||||
|
primitive.flags =
|
||||||
|
PrimFlags(PrimFlags::PHANTOM.0 | PrimFlags::PHYSICS.0 | PrimFlags::CAST_SHADOWS.0);
|
||||||
|
primitive.position = Vector3 {
|
||||||
|
x: 1.1,
|
||||||
|
y: 2.2,
|
||||||
|
z: 3.3,
|
||||||
|
};
|
||||||
|
primitive.rotation = Quaternion {
|
||||||
|
x: 0.1,
|
||||||
|
y: 0.2,
|
||||||
|
z: 0.3,
|
||||||
|
w: 0.9,
|
||||||
|
};
|
||||||
|
primitive.scale = Vector3 {
|
||||||
|
x: 0.5,
|
||||||
|
y: 0.6,
|
||||||
|
z: 0.7,
|
||||||
|
};
|
||||||
|
let mut data = PrimitiveConstructionData::new_with_constructor().unwrap();
|
||||||
|
data.material = Material::Wood;
|
||||||
|
data.p_code = PCode::Prim;
|
||||||
|
data.state = 7;
|
||||||
|
data.path_curve = PathCurve::Circle;
|
||||||
|
data.path_scale_x = 1.2;
|
||||||
|
data.path_scale_y = 0.8;
|
||||||
|
data.profile_begin = 0.0;
|
||||||
|
data.profile_end = 1.0;
|
||||||
|
data.profile_hollow = 0.1;
|
||||||
|
data.set_profile_curve_with_property(ProfileCurve::Square);
|
||||||
|
data.set_profile_hole(HoleType(1));
|
||||||
|
primitive.prim_data = data;
|
||||||
|
let mut properties = PrimitiveObjectProperties::new().unwrap();
|
||||||
|
properties.name = "TestPrim".into();
|
||||||
|
properties.description = "A primitive used in unit tests".into();
|
||||||
|
primitive.properties = Some(properties);
|
||||||
|
let decoded = Primitive::from_osd(primitive.get_osd().unwrap()).unwrap();
|
||||||
|
assert_eq!(decoded.id, primitive.id);
|
||||||
|
assert_eq!(decoded.local_id, primitive.local_id);
|
||||||
|
assert_eq!(decoded.parent_id, primitive.parent_id);
|
||||||
|
assert_ne!(decoded.flags.0 & PrimFlags::PHANTOM.0, 0);
|
||||||
|
assert_ne!(decoded.flags.0 & PrimFlags::PHYSICS.0, 0);
|
||||||
|
assert_ne!(decoded.flags.0 & PrimFlags::CAST_SHADOWS.0, 0);
|
||||||
|
assert_vector(decoded.position, primitive.position);
|
||||||
|
assert_quaternion(decoded.rotation, primitive.rotation);
|
||||||
|
assert_vector(decoded.scale, primitive.scale);
|
||||||
|
assert_eq!(decoded.prim_data.material, primitive.prim_data.material);
|
||||||
|
assert_eq!(decoded.prim_data.p_code, primitive.prim_data.p_code);
|
||||||
|
assert_eq!(decoded.prim_data.state, primitive.prim_data.state);
|
||||||
|
assert_eq!(decoded.prim_data.path_curve, primitive.prim_data.path_curve);
|
||||||
|
assert_eq!(
|
||||||
|
decoded.prim_data.path_scale_x,
|
||||||
|
primitive.prim_data.path_scale_x
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
decoded.prim_data.path_scale_y,
|
||||||
|
primitive.prim_data.path_scale_y
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
decoded.prim_data.profile_begin,
|
||||||
|
primitive.prim_data.profile_begin
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
decoded.prim_data.profile_end,
|
||||||
|
primitive.prim_data.profile_end
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
decoded.prim_data.profile_hollow,
|
||||||
|
primitive.prim_data.profile_hollow
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
decoded.prim_data.profile_curve_with_property(),
|
||||||
|
primitive.prim_data.profile_curve_with_property()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
decoded.prim_data.profile_hole(),
|
||||||
|
primitive.prim_data.profile_hole()
|
||||||
|
);
|
||||||
|
let decoded_properties = decoded.properties.as_ref().expect("properties");
|
||||||
|
let original_properties = primitive.properties.as_ref().unwrap();
|
||||||
|
assert_eq!(decoded_properties.name, original_properties.name);
|
||||||
|
assert_eq!(
|
||||||
|
decoded_properties.description,
|
||||||
|
original_properties.description
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.GetOSD_FromOSD_Roundtrip_Extras::test 63bae8bddacab170aec00c6d7a219f96fa794f489190b34cb426bbf9a3672af5 translated
|
||||||
|
#[test]
|
||||||
|
fn primitive_osd_round_trip_extras() {
|
||||||
|
let mut primitive = Primitive::new_with_constructor().unwrap();
|
||||||
|
primitive.id = uuid();
|
||||||
|
let mut flexible = PrimitiveFlexibleData::new_with_constructor().unwrap();
|
||||||
|
flexible.softness = 3;
|
||||||
|
flexible.tension = 1.5;
|
||||||
|
flexible.drag = 0.7;
|
||||||
|
flexible.gravity = -9.8;
|
||||||
|
flexible.wind = 0.2;
|
||||||
|
flexible.force = Vector3 {
|
||||||
|
x: 0.1,
|
||||||
|
y: 0.2,
|
||||||
|
z: 0.3,
|
||||||
|
};
|
||||||
|
primitive.flexible = Some(flexible);
|
||||||
|
let mut light = PrimitiveLightData::new_with_constructor().unwrap();
|
||||||
|
light.color = Color4 {
|
||||||
|
r: 0.2,
|
||||||
|
g: 0.4,
|
||||||
|
b: 0.6,
|
||||||
|
a: 1.0,
|
||||||
|
};
|
||||||
|
light.intensity = 0.8;
|
||||||
|
light.radius = 10.0;
|
||||||
|
light.cutoff = 0.5;
|
||||||
|
light.falloff = 2.0;
|
||||||
|
primitive.light = Some(light);
|
||||||
|
let mut image = PrimitiveLightImage::new_with_constructor().unwrap();
|
||||||
|
image.light_texture = uuid();
|
||||||
|
image.params = Vector3 {
|
||||||
|
x: 1.0,
|
||||||
|
y: 2.0,
|
||||||
|
z: 3.0,
|
||||||
|
};
|
||||||
|
primitive.light_map = Some(image);
|
||||||
|
let mut sculpt = PrimitiveSculptData::new_with_constructor().unwrap();
|
||||||
|
sculpt.sculpt_texture = uuid();
|
||||||
|
sculpt.set_type_(SculptType::Mesh);
|
||||||
|
primitive.sculpt = Some(sculpt);
|
||||||
|
let decoded = Primitive::from_osd(primitive.get_osd().unwrap()).unwrap();
|
||||||
|
let (actual, expected) = (
|
||||||
|
decoded.flexible.as_ref().unwrap(),
|
||||||
|
primitive.flexible.as_ref().unwrap(),
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
(
|
||||||
|
actual.softness,
|
||||||
|
actual.tension,
|
||||||
|
actual.drag,
|
||||||
|
actual.gravity,
|
||||||
|
actual.wind
|
||||||
|
),
|
||||||
|
(
|
||||||
|
expected.softness,
|
||||||
|
expected.tension,
|
||||||
|
expected.drag,
|
||||||
|
expected.gravity,
|
||||||
|
expected.wind
|
||||||
|
)
|
||||||
|
);
|
||||||
|
assert_vector(actual.force, expected.force);
|
||||||
|
let (actual, expected) = (
|
||||||
|
decoded.light.as_ref().unwrap(),
|
||||||
|
primitive.light.as_ref().unwrap(),
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
(
|
||||||
|
actual.color.r,
|
||||||
|
actual.color.g,
|
||||||
|
actual.color.b,
|
||||||
|
actual.intensity,
|
||||||
|
actual.radius,
|
||||||
|
actual.cutoff,
|
||||||
|
actual.falloff
|
||||||
|
),
|
||||||
|
(
|
||||||
|
expected.color.r,
|
||||||
|
expected.color.g,
|
||||||
|
expected.color.b,
|
||||||
|
expected.intensity,
|
||||||
|
expected.radius,
|
||||||
|
expected.cutoff,
|
||||||
|
expected.falloff
|
||||||
|
)
|
||||||
|
);
|
||||||
|
let (actual, expected) = (
|
||||||
|
decoded.light_map.as_ref().unwrap(),
|
||||||
|
primitive.light_map.as_ref().unwrap(),
|
||||||
|
);
|
||||||
|
assert_eq!(actual.light_texture, expected.light_texture);
|
||||||
|
assert_vector(actual.params, expected.params);
|
||||||
|
let (actual, expected) = (
|
||||||
|
decoded.sculpt.as_ref().unwrap(),
|
||||||
|
primitive.sculpt.as_ref().unwrap(),
|
||||||
|
);
|
||||||
|
assert_eq!(actual.sculpt_texture, expected.sculpt_texture);
|
||||||
|
assert_eq!(actual.type_(), expected.type_());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_MissingVolume_DoesNotThrow_AndUsesDefaults::test 03f9369aab6f6a71ee13982a7b6ba9780f86bcb5b6f081f9550f491b692f711c translated
|
||||||
|
#[test]
|
||||||
|
fn primitive_from_osd_missing_volume_uses_defaults() {
|
||||||
|
let id = uuid();
|
||||||
|
let primitive = Primitive::from_osd(OSD::Map(HashMap::from([
|
||||||
|
("id".into(), OSD::UUID(id)),
|
||||||
|
("localid".into(), OSD::Integer(99)),
|
||||||
|
("parentid".into(), OSD::Integer(100)),
|
||||||
|
])))
|
||||||
|
.unwrap();
|
||||||
|
assert_eq!(primitive.id, id);
|
||||||
|
assert_eq!(primitive.local_id, 99);
|
||||||
|
assert_eq!(primitive.parent_id, 100);
|
||||||
|
assert_eq!(primitive.prim_data.path_curve, PathCurve::Line);
|
||||||
|
assert_eq!(
|
||||||
|
primitive.prim_data.profile_curve_with_property(),
|
||||||
|
ProfileCurve::Circle
|
||||||
|
);
|
||||||
|
assert_eq!(primitive.prim_data.profile_end, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_WrongTypes_ForTransforms_AreIgnored::test a23d4b1ab6d24c11c96862bc18ba57fccf1a8a1d690c90c5e8da3092973220f7 translated
|
||||||
|
#[test]
|
||||||
|
fn primitive_from_osd_wrong_transform_types_are_ignored() {
|
||||||
|
let primitive = Primitive::from_osd(OSD::Map(HashMap::from([
|
||||||
|
("position".into(), OSD::String("not-a-vector".into())),
|
||||||
|
("rotation".into(), OSD::Integer(123)),
|
||||||
|
("scale".into(), OSD::String("also-not-a-vector".into())),
|
||||||
|
])))
|
||||||
|
.unwrap();
|
||||||
|
assert_vector(
|
||||||
|
primitive.position,
|
||||||
|
Vector3 {
|
||||||
|
x: 0.0,
|
||||||
|
y: 0.0,
|
||||||
|
z: 0.0,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
assert_quaternion(
|
||||||
|
primitive.rotation,
|
||||||
|
Quaternion {
|
||||||
|
x: 0.0,
|
||||||
|
y: 0.0,
|
||||||
|
z: 0.0,
|
||||||
|
w: 1.0,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
assert_vector(
|
||||||
|
primitive.scale,
|
||||||
|
Vector3 {
|
||||||
|
x: 1.0,
|
||||||
|
y: 1.0,
|
||||||
|
z: 1.0,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/PrimitiveTests.cs::PrimitiveTests.FromOSD_PartialProfile_UsesDefaultsForMissingFields::test f3a3e506e3ef417f6323875db82179a4ffbdc1d4ee383417f2b0bd5afd0d0dba translated
|
||||||
|
#[test]
|
||||||
|
fn primitive_from_osd_partial_profile_uses_defaults() {
|
||||||
|
let profile = OSD::Map(HashMap::from([(
|
||||||
|
"curve".into(),
|
||||||
|
OSD::Integer(ProfileCurve::EqualTriangle as i32),
|
||||||
|
)]));
|
||||||
|
let volume = OSD::Map(HashMap::from([("profile".into(), profile)]));
|
||||||
|
let primitive =
|
||||||
|
Primitive::from_osd(OSD::Map(HashMap::from([("volume".into(), volume)]))).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
primitive.prim_data.profile_curve_with_property(),
|
||||||
|
ProfileCurve::EqualTriangle
|
||||||
|
);
|
||||||
|
assert_eq!(primitive.prim_data.profile_begin, 0.0);
|
||||||
|
assert_eq!(primitive.prim_data.profile_end, 1.0);
|
||||||
|
assert_eq!(primitive.prim_data.profile_hollow, 0.0);
|
||||||
|
}
|
||||||
60
tests/compat/tests/world_packet_semantics.rs
Normal file
60
tests/compat/tests/world_packet_semantics.rs
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
// Exact Rust translation of LibreMetaverse.Tests/StartAuctionTests.cs.
|
||||||
|
// Source SHA-256: 7087a3957277dc76a018ff3478e69c556f33a890ada9ad2c8c53f3fc34ec7375
|
||||||
|
|
||||||
|
use libremetaverse::packets::{
|
||||||
|
Packet, PacketType, ViewerStartAuctionPacket, ViewerStartAuctionPacketAgentDataBlock,
|
||||||
|
ViewerStartAuctionPacketParcelDataBlock,
|
||||||
|
};
|
||||||
|
use libremetaverse::{GridClient, Simulator};
|
||||||
|
use libremetaverse_types::UUID;
|
||||||
|
|
||||||
|
fn uuid() -> UUID {
|
||||||
|
UUID::random().expect("UUID Random")
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields::test f37ef06cfba37754effe04a0bb0edfa159c761b811a05efd95157896756bef16 translated
|
||||||
|
#[test]
|
||||||
|
fn viewer_start_auction_packet_round_trips_agent_and_parcel_fields() {
|
||||||
|
let agent = uuid();
|
||||||
|
let session = uuid();
|
||||||
|
let snapshot = uuid();
|
||||||
|
let packet = ViewerStartAuctionPacket {
|
||||||
|
agent_data: ViewerStartAuctionPacketAgentDataBlock {
|
||||||
|
agent_id: agent,
|
||||||
|
session_id: session,
|
||||||
|
},
|
||||||
|
parcel_data: ViewerStartAuctionPacketParcelDataBlock {
|
||||||
|
local_id: 12_345,
|
||||||
|
snapshot_id: snapshot,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
let bytes = packet.to_bytes_with_method().unwrap();
|
||||||
|
let mut end = i32::try_from(bytes.len()).expect("packet length fits Int32") - 1;
|
||||||
|
let built =
|
||||||
|
Packet::build_packet_with_bytes_int32_bytes(bytes.clone(), &mut end, Vec::new()).unwrap();
|
||||||
|
assert_eq!(built.type_, PacketType::ViewerStartAuction);
|
||||||
|
let mut position = 0;
|
||||||
|
let parsed = ViewerStartAuctionPacket::new_with_bytes_int32(bytes, &mut position).unwrap();
|
||||||
|
assert_eq!(parsed.agent_data.agent_id, agent);
|
||||||
|
assert_eq!(parsed.agent_data.session_id, session);
|
||||||
|
assert_eq!(parsed.parcel_data.local_id, 12_345);
|
||||||
|
assert_eq!(parsed.parcel_data.snapshot_id, snapshot);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.StartAuction_DoesNotThrow::test deec194333b480dabb3f6e6d96b360a29d11a40ca1103117fc7ce5cdb80d6eb0 translated
|
||||||
|
#[test]
|
||||||
|
fn start_auction_does_not_throw() {
|
||||||
|
let client = GridClient::new().expect("GridClient constructor");
|
||||||
|
let simulator = Simulator::new(
|
||||||
|
GridClient::new().expect("simulator GridClient constructor"),
|
||||||
|
"127.0.0.1:13".parse().unwrap(),
|
||||||
|
0,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.expect("Simulator constructor");
|
||||||
|
client
|
||||||
|
.parcels()
|
||||||
|
.start_auction(simulator, 1, uuid())
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -98,7 +98,7 @@ COMPOSED_BASE_TYPES = {
|
|||||||
"T:LibreMetaverse.Packets.TestMessagePacket",
|
"T:LibreMetaverse.Packets.TestMessagePacket",
|
||||||
"T:LibreMetaverse.Rendering.Joint",
|
"T:LibreMetaverse.Rendering.Joint",
|
||||||
}
|
}
|
||||||
OPEN_ENUM_IDS = {"T:LibreMetaverse.BakeType"}
|
OPEN_ENUM_IDS = {"T:LibreMetaverse.BakeType", "T:LibreMetaverse.HoleType"}
|
||||||
TRAIT_SUPERTRAITS = {
|
TRAIT_SUPERTRAITS = {
|
||||||
"T:LibreMetaverse.IBakingTextureProvider": "std::any::Any",
|
"T:LibreMetaverse.IBakingTextureProvider": "std::any::Any",
|
||||||
"T:LibreMetaverse.Appearance.ICurrentOutfitPolicy": "Send + Sync",
|
"T:LibreMetaverse.Appearance.ICurrentOutfitPolicy": "Send + Sync",
|
||||||
|
|||||||
@@ -174,7 +174,13 @@ MEMBER_RETURN_OVERRIDES = {
|
|||||||
),
|
),
|
||||||
}
|
}
|
||||||
MEMBER_TYPE_OVERRIDES = {
|
MEMBER_TYPE_OVERRIDES = {
|
||||||
|
"F:LibreMetaverse.Primitive.Flexible": "Option<libremetaverse::PrimitiveFlexibleData>",
|
||||||
|
"F:LibreMetaverse.Primitive.Light": "Option<libremetaverse::PrimitiveLightData>",
|
||||||
|
"F:LibreMetaverse.Primitive.LightMap": "Option<libremetaverse::PrimitiveLightImage>",
|
||||||
"F:LibreMetaverse.Primitive.NameValues": "Option<Vec<libremetaverse::NameValue>>",
|
"F:LibreMetaverse.Primitive.NameValues": "Option<Vec<libremetaverse::NameValue>>",
|
||||||
|
"F:LibreMetaverse.Primitive.TextureEntry.FaceTextures": (
|
||||||
|
"Vec<Option<libremetaverse::PrimitiveTextureEntryFace>>"
|
||||||
|
),
|
||||||
"F:LibreMetaverse.Rendering.Face.Weights": (
|
"F:LibreMetaverse.Rendering.Face.Weights": (
|
||||||
"Option<Vec<libremetaverse::rendering::VertexWeight>>"
|
"Option<Vec<libremetaverse::rendering::VertexWeight>>"
|
||||||
),
|
),
|
||||||
@@ -183,6 +189,16 @@ MEMBER_TYPE_OVERRIDES = {
|
|||||||
),
|
),
|
||||||
}
|
}
|
||||||
MEMBER_SIGNATURE_OVERRIDES = {
|
MEMBER_SIGNATURE_OVERRIDES = {
|
||||||
|
"M:LibreMetaverse.AgentManager.#ctor(LibreMetaverse.GridClient)": (
|
||||||
|
"pub fn new(client: Option<std::sync::Arc<libremetaverse::GridClient>>) "
|
||||||
|
"-> Result<Self, crate::Error>",
|
||||||
|
"optional_shared",
|
||||||
|
),
|
||||||
|
"M:LibreMetaverse.GridManager.#ctor(LibreMetaverse.GridClient)": (
|
||||||
|
"pub fn new(client: Option<std::sync::Arc<libremetaverse::GridClient>>) "
|
||||||
|
"-> Result<Self, crate::Error>",
|
||||||
|
"optional_shared",
|
||||||
|
),
|
||||||
"M:LibreMetaverse.Inventory.#ctor(LibreMetaverse.GridClient)": (
|
"M:LibreMetaverse.Inventory.#ctor(LibreMetaverse.GridClient)": (
|
||||||
"pub fn new_with_grid_client(client: std::sync::Arc<libremetaverse::GridClient>) "
|
"pub fn new_with_grid_client(client: std::sync::Arc<libremetaverse::GridClient>) "
|
||||||
"-> Result<Self, crate::Error>",
|
"-> Result<Self, crate::Error>",
|
||||||
@@ -254,6 +270,25 @@ MEMBER_SIGNATURE_OVERRIDES = {
|
|||||||
"-> Result<Self, crate::Error>",
|
"-> Result<Self, crate::Error>",
|
||||||
"optional_shared",
|
"optional_shared",
|
||||||
),
|
),
|
||||||
|
"M:LibreMetaverse.ObjectManager.#ctor(LibreMetaverse.GridClient)": (
|
||||||
|
"pub fn new(client: Option<std::sync::Arc<libremetaverse::GridClient>>) "
|
||||||
|
"-> Result<Self, crate::Error>",
|
||||||
|
"optional_shared",
|
||||||
|
),
|
||||||
|
"M:LibreMetaverse.Primitive.TextureEntry.CreateFace(System.UInt32)": (
|
||||||
|
"pub fn create_face(&mut self, index: u32) "
|
||||||
|
"-> Result<&mut libremetaverse::PrimitiveTextureEntryFace, crate::Error>",
|
||||||
|
"mutable_self,owned",
|
||||||
|
),
|
||||||
|
"M:LibreMetaverse.Primitive.TextureEntry.GetFace(System.UInt32)": (
|
||||||
|
"pub fn get_face(&self, index: u32) "
|
||||||
|
"-> Result<Option<&libremetaverse::PrimitiveTextureEntryFace>, crate::Error>",
|
||||||
|
"shared_self,owned",
|
||||||
|
),
|
||||||
|
"M:LibreMetaverse.SlurlParser.#ctor(System.String)": (
|
||||||
|
"pub fn new(location: Option<String>) -> Result<Self, crate::Error>",
|
||||||
|
"optional_owned",
|
||||||
|
),
|
||||||
"M:LibreMetaverse.InventoryManager.CreateInventoryItem(LibreMetaverse.InventoryType,LibreMetaverse.UUID)": (
|
"M:LibreMetaverse.InventoryManager.CreateInventoryItem(LibreMetaverse.InventoryType,LibreMetaverse.UUID)": (
|
||||||
"pub fn create_inventory_item(type_: libremetaverse_types::InventoryType, id: "
|
"pub fn create_inventory_item(type_: libremetaverse_types::InventoryType, id: "
|
||||||
"libremetaverse_types::UUID) -> Result<Box<dyn "
|
"libremetaverse_types::UUID) -> Result<Box<dyn "
|
||||||
|
|||||||
Reference in New Issue
Block a user