From a78f9fba761c0e5df7b8e09ce3a468839844f679 Mon Sep 17 00:00:00 2001 From: Chili Palmer Date: Sat, 8 Aug 2026 20:29:15 +0200 Subject: [PATCH] Translate appearance and outfit parity tests --- RUSTREWRITE.md | 8 +- api/MAPPING-COVERAGE.md | 2 +- api/RUST-MAPPING.tsv | 36 +- crates/libremetaverse-types/src/shim.rs | 6 +- .../src/appearance_baker_semantics.rs | 99 + .../src/batch_link_internal_semantics.rs | 459 +++ crates/libremetaverse/src/generated.rs | 121 +- crates/libremetaverse/src/lib.rs | 66 + tests/PARITY.md | 260 +- tests/compat/src/lib.rs | 37 + .../compat/tests/appearance_live_semantics.rs | 187 + tests/compat/tests/appearance_semantics.rs | 401 +++ .../tests/appearance_visual_semantics.rs | 205 ++ .../tests/current_outfit_folder_semantics.rs | 200 ++ .../tests/current_outfit_policy_semantics.rs | 415 +++ tests/compat/tests/generated_parity.rs | 120 - .../tests/misclassified_link_semantics.rs | 142 + tests/compat/tests/network_semantics.rs | 31 +- tests/upstream-tests.json | 3100 ++++++++--------- tools/generate_api_shims.py | 31 +- tools/generate_rust_mapping.py | 87 + 21 files changed, 4111 insertions(+), 1902 deletions(-) create mode 100644 crates/libremetaverse/src/appearance_baker_semantics.rs create mode 100644 crates/libremetaverse/src/batch_link_internal_semantics.rs create mode 100644 tests/compat/tests/appearance_live_semantics.rs create mode 100644 tests/compat/tests/appearance_semantics.rs create mode 100644 tests/compat/tests/appearance_visual_semantics.rs create mode 100644 tests/compat/tests/current_outfit_folder_semantics.rs create mode 100644 tests/compat/tests/current_outfit_policy_semantics.rs create mode 100644 tests/compat/tests/misclassified_link_semantics.rs diff --git a/RUSTREWRITE.md b/RUSTREWRITE.md index f0fb597..315fff9 100644 --- a/RUSTREWRITE.md +++ b/RUSTREWRITE.md @@ -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 bodies; - all 1,289 real NUnit `[Test]`/`[TestCase]` invocations have stable catalog - entries; 145 are translated, four benchmarks are reviewed, and 1,140 remain - pending without executable placeholder tests; + entries; 455 are translated, 11 live-grid cases and four benchmarks are + reviewed, and 819 remain pending without executable placeholder tests; - all nine sample/tool projects have compiling Rust binary targets; - the 128 TestClient command source files are retained as a command inventory. @@ -334,8 +334,8 @@ markers in hand-written Rust files, so regeneration records unresolved cases without creating fake executable tests and fails on body drift. The checked-in audit reports pending, translated, ignored-live, benchmark, drifted, missing, duplicate, stale, and unreviewed cases. The initial handover contained 1,289 -unreviewed cases; the current ledger contains 149 translated, three reviewed -live-grid cases, four benchmark-reviewed, and 1,133 pending cases. +unreviewed cases; the current ledger contains 455 translated, 11 reviewed +live-grid cases, four benchmark-reviewed, and 819 pending cases. The Rust tests must call the public APIs rather than internal replacements. Where the C# tests call internal members through friend-assembly access, record diff --git a/api/MAPPING-COVERAGE.md b/api/MAPPING-COVERAGE.md index 1d80689..df1e501 100644 --- a/api/MAPPING-COVERAGE.md +++ b/api/MAPPING-COVERAGE.md @@ -47,7 +47,7 @@ External member APIs are not copied. Each signature type resolves to Rust core/s - Properties/indexers/events: **5,090 / 11 / 268** - Delegates and flags enums: **40 / 46** - Optional/ref/out/in parameters: **470 / 6,144 / 555 / 0** -- Async Rust signatures: **332** +- Async Rust signatures: **330** - Descriptively renamed overloads: **7,151** - Explicit CLR delegate APM differences: **80** diff --git a/api/RUST-MAPPING.tsv b/api/RUST-MAPPING.tsv index e7edd93..70498a4 100644 --- a/api/RUST-MAPPING.tsv +++ b/api/RUST-MAPPING.tsv @@ -8759,7 +8759,7 @@ F:LibreMetaverse.Primitive.LightMap field LibreMetaverse.Primitive.LightImage Li 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.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.NameValues field LibreMetaverse.NameValue[] LibreMetaverse.Primitive.NameValues libremetaverse libremetaverse::Primitive::name_values pub name_values: Vec owned_value sync none direct_snake_case direct mapped +F:LibreMetaverse.Primitive.NameValues field LibreMetaverse.NameValue[] LibreMetaverse.Primitive.NameValues libremetaverse libremetaverse::Primitive::name_values pub name_values: Option> owned_value sync none direct_snake_case direct mapped F:LibreMetaverse.Primitive.ObjectProperties.AggregatePermTextures field System.Byte LibreMetaverse.Primitive.ObjectProperties.AggregatePermTextures libremetaverse libremetaverse::PrimitiveObjectProperties::aggregate_perm_textures pub aggregate_perm_textures: u8 owned_value sync none direct_snake_case direct mapped F:LibreMetaverse.Primitive.ObjectProperties.AggregatePermTexturesOwner field System.Byte LibreMetaverse.Primitive.ObjectProperties.AggregatePermTexturesOwner libremetaverse libremetaverse::PrimitiveObjectProperties::aggregate_perm_textures_owner pub aggregate_perm_textures_owner: u8 owned_value sync none direct_snake_case direct mapped F:LibreMetaverse.Primitive.ObjectProperties.AggregatePerms field System.Byte LibreMetaverse.Primitive.ObjectProperties.AggregatePerms libremetaverse libremetaverse::PrimitiveObjectProperties::aggregate_perms pub aggregate_perms: u8 owned_value sync none direct_snake_case direct mapped @@ -10367,13 +10367,13 @@ M:LibreMetaverse.Animesh.AnimeshPlayer.Update(System.Single) method System.Void M:LibreMetaverse.AnimeshSkinning.ComputeSkinningMatrices(System.Collections.Generic.Dictionary{System.String,LibreMetaverse.Animesh.JointPose},LibreMetaverse.Rendering.LindenSkeleton,LibreMetaverse.Rendering.MeshSkinData) method LibreMetaverse.Matrix4[] LibreMetaverse.AnimeshSkinning.ComputeSkinningMatrices(System.Collections.Generic.Dictionary pose, LibreMetaverse.Rendering.LindenSkeleton skeleton, LibreMetaverse.Rendering.MeshSkinData skinData) libremetaverse libremetaverse::AnimeshSkinning::compute_skinning_matrices pub fn compute_skinning_matrices(pose: Option>, skeleton: Option, skin_data: Option) -> Result, crate::Error> optional_owned,optional_owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.AnimeshSkinning.DeformVertices(LibreMetaverse.Rendering.Face,LibreMetaverse.Matrix4[],LibreMetaverse.Matrix4,System.Span{LibreMetaverse.Vector3},System.Span{LibreMetaverse.Vector3}) method System.Void LibreMetaverse.AnimeshSkinning.DeformVertices(LibreMetaverse.Rendering.Face face, LibreMetaverse.Matrix4[] skinningMatrices, LibreMetaverse.Matrix4 bindShapeMatrix, System.Span outPositions, System.Span outNormals = default) libremetaverse libremetaverse::AnimeshSkinning::deform_vertices pub fn deform_vertices(face: libremetaverse::rendering::Face, skinning_matrices: Vec, bind_shape_matrix: libremetaverse_types::Matrix4, out_positions: &mut [libremetaverse_types::Vector3], out_normals: Option<&mut [libremetaverse_types::Vector3]>) -> Result<(), crate::Error> owned,owned,owned,mutable_borrow,optional_mutable_borrow sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.#ctor constructor LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy() libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::new pub fn new() -> Result none sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy) method LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy policyToAdd) libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::add_policy pub fn add_policy(&self, policy_to_add: Option>) -> Result shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem) method System.Boolean LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem item) libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::can_attach pub fn can_attach(&self, item: Option) -> Result shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem) method System.Boolean LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem item) libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::can_detach pub fn can_detach(&self, item: Option) -> Result shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy) method System.Void LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy policyToRemove) libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::remove_policy pub fn remove_policy(&self, policy_to_remove: Option>) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List addedItems, System.Collections.Generic.List removedItems, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::report_item_change pub async fn report_item_change(&self, added_items: Option>, removed_items: Option>, cancellation_token: Option) -> Result<(), crate::Error> shared_self,owned,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.CurrentOutfitFolder.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.Appearance.CurrentOutfitFolder(LibreMetaverse.GridClient client) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::new pub fn new(client: Option) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.CurrentOutfitFolder.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy) method LibreMetaverse.Appearance.ICurrentOutfitPolicy LibreMetaverse.Appearance.CurrentOutfitFolder.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy policyToAdd) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::add_policy pub fn add_policy(&self, policy_to_add: Box) -> Result, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy) method LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy policyToAdd) libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::add_policy pub fn add_policy(&self, policy_to_add: Option>) -> Result<&Self, crate::Error> shared_self,optional_shared sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem) method System.Boolean LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem item) libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::can_attach pub fn can_attach(&self, item: Option>) -> Result shared_self,optional_shared sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem) method System.Boolean LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem item) libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::can_detach pub fn can_detach(&self, item: Option>) -> Result shared_self,optional_shared sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy) method System.Void LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy policyToRemove) libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::remove_policy pub fn remove_policy(&self, policy_to_remove: Option>) -> Result<(), crate::Error> shared_self,optional_shared sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List addedItems, System.Collections.Generic.List removedItems, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::CompositeCurrentOutfitPolicy::report_item_change pub async fn report_item_change(&self, added_items: Option>>, removed_items: Option>>, cancellation_token: Option) -> Result<(), crate::Error> shared_self,optional_shared,optional_shared,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.CurrentOutfitFolder.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.Appearance.CurrentOutfitFolder(LibreMetaverse.GridClient client) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::new pub fn new(client: Option>) -> Result optional_shared sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.CurrentOutfitFolder.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy) method LibreMetaverse.Appearance.ICurrentOutfitPolicy LibreMetaverse.Appearance.CurrentOutfitFolder.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy policyToAdd) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::add_policy pub fn add_policy(&self, policy_to_add: std::sync::Arc) -> Result, crate::Error> shared_self,shared sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Appearance.CurrentOutfitFolder.AddToOutfitAsync(LibreMetaverse.InventoryItem,System.Boolean,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.CurrentOutfitFolder.AddToOutfitAsync(LibreMetaverse.InventoryItem item, System.Boolean replace, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::add_to_outfit_with_inventory_item_boolean_cancellation_token pub async fn add_to_outfit_with_inventory_item_boolean_cancellation_token(&self, item: libremetaverse::InventoryItem, replace: bool, cancellation_token: Option) -> Result<(), crate::Error> shared_self,owned,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped M:LibreMetaverse.Appearance.CurrentOutfitFolder.AddToOutfitAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Boolean,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.CurrentOutfitFolder.AddToOutfitAsync(System.Collections.Generic.List requestedItemsToAdd, System.Boolean replace, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::add_to_outfit_with_list_boolean_cancellation_token pub async fn add_to_outfit_with_list_boolean_cancellation_token(&self, requested_items_to_add: Vec, replace: bool, cancellation_token: Option) -> Result<(), crate::Error> shared_self,owned,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped M:LibreMetaverse.Appearance.CurrentOutfitFolder.AttachAsync(LibreMetaverse.InventoryItem,LibreMetaverse.AttachmentPoint,System.Boolean,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.CurrentOutfitFolder.AttachAsync(LibreMetaverse.InventoryItem item, LibreMetaverse.AttachmentPoint point, System.Boolean replace, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::attach pub async fn attach(&self, item: libremetaverse::InventoryItem, point: libremetaverse_types::AttachmentPoint, replace: bool, cancellation_token: Option) -> Result<(), crate::Error> shared_self,owned,owned,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped @@ -10388,12 +10388,12 @@ M:LibreMetaverse.Appearance.CurrentOutfitFolder.GetWornAtAsync(LibreMetaverse.We M:LibreMetaverse.Appearance.CurrentOutfitFolder.IsObjectDescendentOfAsync(LibreMetaverse.InventoryBase,LibreMetaverse.UUID,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.CurrentOutfitFolder.IsObjectDescendentOfAsync(LibreMetaverse.InventoryBase item, LibreMetaverse.UUID parentId, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::is_object_descendent_of pub async fn is_object_descendent_of(&self, item: libremetaverse::InventoryBase, parent_id: libremetaverse_types::UUID, cancellation_token: Option) -> Result shared_self,owned,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Appearance.CurrentOutfitFolder.RemoveFromOutfitAsync(LibreMetaverse.InventoryItem,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.CurrentOutfitFolder.RemoveFromOutfitAsync(LibreMetaverse.InventoryItem item, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::remove_from_outfit_with_inventory_item_cancellation_token pub async fn remove_from_outfit_with_inventory_item_cancellation_token(&self, item: libremetaverse::InventoryItem, cancellation_token: Option) -> Result<(), crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped M:LibreMetaverse.Appearance.CurrentOutfitFolder.RemoveFromOutfitAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.CurrentOutfitFolder.RemoveFromOutfitAsync(System.Collections.Generic.List requestedItemsToRemove, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::remove_from_outfit_with_list_cancellation_token pub async fn remove_from_outfit_with_list_cancellation_token(&self, requested_items_to_remove: Vec, cancellation_token: Option) -> Result<(), crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped -M:LibreMetaverse.Appearance.CurrentOutfitFolder.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy) method System.Void LibreMetaverse.Appearance.CurrentOutfitFolder.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy policyToRemove) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::remove_policy pub fn remove_policy(&self, policy_to_remove: Box) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.CurrentOutfitFolder.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy) method System.Void LibreMetaverse.Appearance.CurrentOutfitFolder.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy policyToRemove) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::remove_policy pub fn remove_policy(&self, policy_to_remove: std::sync::Arc) -> Result<(), crate::Error> shared_self,shared sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Appearance.CurrentOutfitFolder.ReplaceOutfitAsync(LibreMetaverse.UUID,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.CurrentOutfitFolder.ReplaceOutfitAsync(LibreMetaverse.UUID newOutfitFolderId, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::replace_outfit pub async fn replace_outfit(&self, new_outfit_folder_id: libremetaverse_types::UUID, cancellation_token: Option) -> Result shared_self,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.CurrentOutfitFolder.ResolveInventoryLink(LibreMetaverse.InventoryItem) method LibreMetaverse.InventoryItem LibreMetaverse.Appearance.CurrentOutfitFolder.ResolveInventoryLink(LibreMetaverse.InventoryItem itemLink) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::resolve_inventory_link pub fn resolve_inventory_link(&self, item_link: libremetaverse::InventoryItem) -> Result, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem) method System.Boolean LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem item) libremetaverse appearance libremetaverse::appearance::ICurrentOutfitPolicy::can_attach pub fn can_attach(&self, item: Option) -> Result shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem) method System.Boolean LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem item) libremetaverse appearance libremetaverse::appearance::ICurrentOutfitPolicy::can_detach pub fn can_detach(&self, item: Option) -> Result shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.ICurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List addedItems, System.Collections.Generic.List removedItems, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::ICurrentOutfitPolicy::report_item_change pub fn report_item_change(&self, added_items: Option>, removed_items: Option>, cancellation_token: Option) -> std::pin::Pin> + Send + '_>> shared_self,owned,owned,optional_owned boxed_future Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.CurrentOutfitFolder.ResolveInventoryLink(LibreMetaverse.InventoryItem) method LibreMetaverse.InventoryItem LibreMetaverse.Appearance.CurrentOutfitFolder.ResolveInventoryLink(LibreMetaverse.InventoryItem itemLink) libremetaverse appearance libremetaverse::appearance::CurrentOutfitFolder::resolve_inventory_link pub fn resolve_inventory_link(&self, item_link: std::sync::Arc) -> Result>, crate::Error> shared_self,shared sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem) method System.Boolean LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem item) libremetaverse appearance libremetaverse::appearance::ICurrentOutfitPolicy::can_attach pub fn can_attach(&self, item: Option>) -> Result shared_self,optional_shared sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem) method System.Boolean LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem item) libremetaverse appearance libremetaverse::appearance::ICurrentOutfitPolicy::can_detach pub fn can_detach(&self, item: Option>) -> Result shared_self,optional_shared sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.ICurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List addedItems, System.Collections.Generic.List removedItems, System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::ICurrentOutfitPolicy::report_item_change pub fn report_item_change(&self, added_items: Option>>, removed_items: Option>>, cancellation_token: Option) -> std::pin::Pin> + Send + '_>> shared_self,optional_shared,optional_shared,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Appearance.InitialOutfit.#ctor(LibreMetaverse.GridClient,LibreMetaverse.Appearance.CurrentOutfitFolder) constructor LibreMetaverse.Appearance.InitialOutfit(LibreMetaverse.GridClient client, LibreMetaverse.Appearance.CurrentOutfitFolder cof) libremetaverse appearance libremetaverse::appearance::InitialOutfit::new pub fn new(client: libremetaverse::GridClient, cof: libremetaverse::appearance::CurrentOutfitFolder) -> Result owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Appearance.InitialOutfit.CheckSystemFoldersAsync(System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Appearance.InitialOutfit.CheckSystemFoldersAsync(System.Threading.CancellationToken cancellationToken = default) libremetaverse appearance libremetaverse::appearance::InitialOutfit::check_system_folders pub async fn check_system_folders(&self, cancellation_token: Option) -> Result<(), crate::Error> shared_self,optional_owned async Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Appearance.InitialOutfit.CopyFolderAsync(LibreMetaverse.InventoryFolder,LibreMetaverse.UUID,System.Threading.CancellationToken,System.IProgress{LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress}) method System.Threading.Tasks.Task LibreMetaverse.Appearance.InitialOutfit.CopyFolderAsync(LibreMetaverse.InventoryFolder folder, LibreMetaverse.UUID destination, System.Threading.CancellationToken cancellationToken = default, System.IProgress progress = default) libremetaverse appearance libremetaverse::appearance::InitialOutfit::copy_folder pub async fn copy_folder(&self, folder: libremetaverse::InventoryFolder, destination: libremetaverse_types::UUID, cancellation_token: Option, progress: Option>>) -> Result shared_self,owned,owned,optional_owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped @@ -10756,7 +10756,7 @@ M:LibreMetaverse.Avatar.Interests.GetOSD method LibreMetaverse.StructuredData.OS M:LibreMetaverse.Avatar.Statistics.FromOSD(LibreMetaverse.StructuredData.OSD) method LibreMetaverse.Avatar.Statistics LibreMetaverse.Avatar.Statistics.FromOSD(LibreMetaverse.StructuredData.OSD O) libremetaverse libremetaverse::AvatarStatistics::from_osd pub fn from_osd(o: libremetaverse_structured_data::OSD) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Avatar.Statistics.GetOSD method LibreMetaverse.StructuredData.OSD LibreMetaverse.Avatar.Statistics.GetOSD() libremetaverse libremetaverse::AvatarStatistics::get_osd pub fn get_osd(&self) -> Result shared_self sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.AvatarAnimationEventArgs.#ctor(LibreMetaverse.UUID,System.Collections.Generic.List{LibreMetaverse.Animation}) constructor LibreMetaverse.AvatarAnimationEventArgs(LibreMetaverse.UUID avatarID, System.Collections.Generic.List anims) libremetaverse libremetaverse::AvatarAnimationEventArgs::new pub fn new(avatar_id: libremetaverse_types::UUID, anims: Vec) -> Result owned,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.AvatarAppearanceEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Boolean,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Primitive.TextureEntryFace[],System.Collections.Generic.List{System.Byte},System.Byte,System.Int32,LibreMetaverse.AppearanceFlags,System.Int32) constructor LibreMetaverse.AvatarAppearanceEventArgs(LibreMetaverse.Simulator sim, LibreMetaverse.UUID avatarID, System.Boolean isTrial, LibreMetaverse.Primitive.TextureEntryFace defaultTexture, LibreMetaverse.Primitive.TextureEntryFace[] faceTextures, System.Collections.Generic.List visualParams, System.Byte appearanceVersion, System.Int32 COFVersion, LibreMetaverse.AppearanceFlags appearanceFlags, System.Int32 childCount) libremetaverse libremetaverse::AvatarAppearanceEventArgs::new pub fn new(sim: libremetaverse::Simulator, avatar_id: libremetaverse_types::UUID, is_trial: bool, default_texture: libremetaverse::PrimitiveTextureEntryFace, face_textures: Vec, visual_params: Vec, appearance_version: u8, cof_version: i32, appearance_flags: libremetaverse::AppearanceFlags, child_count: i32) -> Result owned,owned,owned,owned,owned,owned,owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.AvatarAppearanceEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Boolean,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Primitive.TextureEntryFace[],System.Collections.Generic.List{System.Byte},System.Byte,System.Int32,LibreMetaverse.AppearanceFlags,System.Int32) constructor LibreMetaverse.AvatarAppearanceEventArgs(LibreMetaverse.Simulator sim, LibreMetaverse.UUID avatarID, System.Boolean isTrial, LibreMetaverse.Primitive.TextureEntryFace defaultTexture, LibreMetaverse.Primitive.TextureEntryFace[] faceTextures, System.Collections.Generic.List visualParams, System.Byte appearanceVersion, System.Int32 COFVersion, LibreMetaverse.AppearanceFlags appearanceFlags, System.Int32 childCount) libremetaverse libremetaverse::AvatarAppearanceEventArgs::new pub fn new(sim: Option, avatar_id: libremetaverse_types::UUID, is_trial: bool, default_texture: libremetaverse::PrimitiveTextureEntryFace, face_textures: Vec, visual_params: Vec, appearance_version: u8, cof_version: i32, appearance_flags: libremetaverse::AppearanceFlags, child_count: i32) -> Result optional_owned,owned,owned,owned,owned,owned,owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.AvatarAppearanceEventArgs.DecodeVisualParams method System.Collections.Generic.IReadOnlyDictionary LibreMetaverse.AvatarAppearanceEventArgs.DecodeVisualParams() libremetaverse libremetaverse::AvatarAppearanceEventArgs::decode_visual_params pub fn decode_visual_params(&self) -> Result, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.AvatarClassifiedReplyEventArgs.#ctor(LibreMetaverse.UUID,System.Collections.Generic.Dictionary{LibreMetaverse.UUID,System.String}) constructor LibreMetaverse.AvatarClassifiedReplyEventArgs(LibreMetaverse.UUID avatarid, System.Collections.Generic.Dictionary classifieds) libremetaverse libremetaverse::AvatarClassifiedReplyEventArgs::new pub fn new(avatarid: libremetaverse_types::UUID, classifieds: std::collections::HashMap) -> Result owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.AvatarGroupsReplyEventArgs.#ctor(LibreMetaverse.UUID,System.Collections.Generic.List{LibreMetaverse.AvatarGroup}) constructor LibreMetaverse.AvatarGroupsReplyEventArgs(LibreMetaverse.UUID avatarID, System.Collections.Generic.List avatarGroups) libremetaverse libremetaverse::AvatarGroupsReplyEventArgs::new pub fn new(avatar_id: libremetaverse_types::UUID, avatar_groups: Vec) -> Result owned,owned sync Result<_, crate::Error> direct_snake_case method mapped @@ -11269,8 +11269,8 @@ M:LibreMetaverse.ImageDownload.#ctor constructor LibreMetaverse.ImageDownload() M:LibreMetaverse.ImageReceiveProgressEventArgs.#ctor(LibreMetaverse.UUID,System.Int32,System.Int32) constructor LibreMetaverse.ImageReceiveProgressEventArgs(LibreMetaverse.UUID imageID, System.Int32 received, System.Int32 total) libremetaverse libremetaverse::ImageReceiveProgressEventArgs::new pub fn new(image_id: libremetaverse_types::UUID, received: i32, total: i32) -> Result owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.ImageRequest.#ctor(LibreMetaverse.UUID,LibreMetaverse.ImageType,System.Single,System.Int32) constructor LibreMetaverse.ImageRequest(LibreMetaverse.UUID imageid, LibreMetaverse.ImageType type, System.Single priority, System.Int32 discardLevel) libremetaverse libremetaverse::ImageRequest::new pub fn new(imageid: libremetaverse_types::UUID, type_: libremetaverse::ImageType, priority: f32, discard_level: i32) -> Result owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Imaging.Baker.#ctor(LibreMetaverse.BakeType) constructor LibreMetaverse.Imaging.Baker(LibreMetaverse.BakeType bakeType) libremetaverse imaging libremetaverse::imaging::Baker::new pub fn new(bake_type: libremetaverse::BakeType) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Imaging.Baker.AddTexture(LibreMetaverse.AppearanceManager.TextureData) method System.Void LibreMetaverse.Imaging.Baker.AddTexture(LibreMetaverse.AppearanceManager.TextureData tdata) libremetaverse imaging libremetaverse::imaging::Baker::add_texture pub fn add_texture(&self, tdata: libremetaverse::AppearanceManagerTextureData) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Imaging.Baker.Bake method System.Void LibreMetaverse.Imaging.Baker.Bake() libremetaverse imaging libremetaverse::imaging::Baker::bake pub fn bake(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Imaging.Baker.AddTexture(LibreMetaverse.AppearanceManager.TextureData) method System.Void LibreMetaverse.Imaging.Baker.AddTexture(LibreMetaverse.AppearanceManager.TextureData tdata) libremetaverse imaging libremetaverse::imaging::Baker::add_texture pub fn add_texture(&mut self, tdata: libremetaverse::AppearanceManagerTextureData) -> Result<(), crate::Error> mutable_self,owned sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Imaging.Baker.Bake method System.Void LibreMetaverse.Imaging.Baker.Bake() libremetaverse imaging libremetaverse::imaging::Baker::bake pub fn bake(&mut self) -> Result<(), crate::Error> mutable_self sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Imaging.Baker.BakeTypeFor(LibreMetaverse.AvatarTextureIndex) method LibreMetaverse.BakeType LibreMetaverse.Imaging.Baker.BakeTypeFor(LibreMetaverse.AvatarTextureIndex index) libremetaverse imaging libremetaverse::imaging::Baker::bake_type_for pub fn bake_type_for(index: libremetaverse::AvatarTextureIndex) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Imaging.Baker.LoadResourceLayer(System.String) method LibreMetaverse.Imaging.ManagedImage LibreMetaverse.Imaging.Baker.LoadResourceLayer(System.String fileName) libremetaverse imaging libremetaverse::imaging::Baker::load_resource_layer pub fn load_resource_layer(file_name: String) -> Result, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Imaging.ITextureCodec.Decode(System.IO.Stream) method LibreMetaverse.Imaging.ManagedImage LibreMetaverse.Imaging.ITextureCodec.Decode(System.IO.Stream stream) libremetaverse-imaging libremetaverse_imaging::ITextureCodec::decode pub fn decode(&self, stream: Box) -> Result shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped @@ -11887,7 +11887,7 @@ M:LibreMetaverse.InventoryManager.CreateItemFromAssetAsync(System.Byte[],System. M:LibreMetaverse.InventoryManager.CreateItemFromAssetResult.#ctor constructor LibreMetaverse.InventoryManager.CreateItemFromAssetResult() libremetaverse libremetaverse::InventoryManagerCreateItemFromAssetResult::new pub fn new() -> Result none sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.InventoryManager.CreateItemFromAssetVariablePriceAsync(System.Byte[],System.String,System.String,LibreMetaverse.AssetType,LibreMetaverse.InventoryType,LibreMetaverse.UUID,LibreMetaverse.Permissions,System.Func{System.Int32,System.Boolean},System.Threading.CancellationToken,System.IProgress{LibreMetaverse.HttpCapsClient.ProgressReport}) method System.Threading.Tasks.Task LibreMetaverse.InventoryManager.CreateItemFromAssetVariablePriceAsync(System.Byte[] data, System.String name, System.String description, LibreMetaverse.AssetType assetType, LibreMetaverse.InventoryType invType, LibreMetaverse.UUID folderID, LibreMetaverse.Permissions permissions, System.Func confirmCost = default, System.Threading.CancellationToken cancellationToken = default, System.IProgress progress = default) libremetaverse libremetaverse::InventoryManager::create_item_from_asset_variable_price pub async fn create_item_from_asset_variable_price(&self, data: Vec, name: String, description: String, asset_type: libremetaverse_types::AssetType, inv_type: libremetaverse_types::InventoryType, folder_id: libremetaverse_types::UUID, permissions: libremetaverse::Permissions, confirm_cost: Option bool + Send + Sync>>, cancellation_token: Option, progress: Option>>) -> Result shared_self,owned,owned,owned,owned,owned,owned,owned,optional_owned,optional_owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.InventoryManager.CreateLinkAsync(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String,System.String,LibreMetaverse.InventoryType,LibreMetaverse.UUID,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.InventoryManager.CreateLinkAsync(LibreMetaverse.UUID folderID, LibreMetaverse.UUID itemID, System.String name, System.String description, LibreMetaverse.InventoryType invType, LibreMetaverse.UUID transactionID, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::InventoryManager::create_link pub async fn create_link(&self, folder_id: libremetaverse_types::UUID, item_id: libremetaverse_types::UUID, name: String, description: String, inv_type: libremetaverse_types::InventoryType, transaction_id: libremetaverse_types::UUID, cancellation_token: Option) -> Result, crate::Error> shared_self,owned,owned,owned,owned,owned,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.InventoryManager.CreateLinksAsync(LibreMetaverse.UUID,System.Collections.Generic.IEnumerable{System.ValueTuple{LibreMetaverse.InventoryBase,System.String}},System.Action{System.Boolean},System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.InventoryManager.CreateLinksAsync(LibreMetaverse.UUID folderID, System.Collections.Generic.IEnumerable> linksToCreate, System.Action callback, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::InventoryManager::create_links pub async fn create_links(&self, folder_id: libremetaverse_types::UUID, links_to_create: Box>, callback: Option>, cancellation_token: Option) -> Result<(), crate::Error> shared_self,owned,owned,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.InventoryManager.CreateLinksAsync(LibreMetaverse.UUID,System.Collections.Generic.IEnumerable{System.ValueTuple{LibreMetaverse.InventoryBase,System.String}},System.Action{System.Boolean},System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.InventoryManager.CreateLinksAsync(LibreMetaverse.UUID folderID, System.Collections.Generic.IEnumerable> linksToCreate, System.Action callback, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::InventoryManager::create_links pub async fn create_links(&self, folder_id: libremetaverse_types::UUID, links_to_create: Box>, callback: Option>, cancellation_token: Option) -> Result<(), crate::Error> shared_self,owned,owned,optional_owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.InventoryManager.CreateOrRetrieveInventoryItem(LibreMetaverse.InventoryType,LibreMetaverse.UUID) method LibreMetaverse.InventoryItem LibreMetaverse.InventoryManager.CreateOrRetrieveInventoryItem(LibreMetaverse.InventoryType InvType, LibreMetaverse.UUID ItemID) libremetaverse libremetaverse::InventoryManager::create_or_retrieve_inventory_item pub fn create_or_retrieve_inventory_item(&self, inv_type: libremetaverse_types::InventoryType, item_id: libremetaverse_types::UUID) -> Result shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.InventoryManager.DecryptShadowID(LibreMetaverse.UUID) method LibreMetaverse.UUID LibreMetaverse.InventoryManager.DecryptShadowID(LibreMetaverse.UUID shadowID) libremetaverse libremetaverse::InventoryManager::decrypt_shadow_id pub fn decrypt_shadow_id(shadow_id: libremetaverse_types::UUID) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.InventoryManager.Dispose method System.Void LibreMetaverse.InventoryManager.Dispose() libremetaverse libremetaverse::InventoryManager::dispose pub fn dispose(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped @@ -25865,7 +25865,7 @@ P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.Phase property L P:LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.TotalItems property System.Int32 LibreMetaverse.Appearance.InitialOutfit.InitialOutfitProgress.TotalItems libremetaverse appearance libremetaverse::appearance::InitialOutfitInitialOutfitProgress::total_items pub fn total_items(&self) -> i32 ; pub fn set_total_items(&mut self, value: i32) shared_or_mutable_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.AppearanceManager.LastUpdateReceivedCOFVersion property System.Int32 LibreMetaverse.AppearanceManager.LastUpdateReceivedCOFVersion libremetaverse libremetaverse::AppearanceManager::last_update_received_cof_version pub fn last_update_received_cof_version(&self) -> i32 shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.AppearanceManager.ManagerBusy property System.Boolean LibreMetaverse.AppearanceManager.ManagerBusy libremetaverse libremetaverse::AppearanceManager::manager_busy pub fn manager_busy(&self) -> bool shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped -P:LibreMetaverse.AppearanceManager.TextureProvider property LibreMetaverse.IBakingTextureProvider LibreMetaverse.AppearanceManager.TextureProvider libremetaverse libremetaverse::AppearanceManager::texture_provider pub fn texture_provider(&self) -> Box ; pub fn set_texture_provider(&mut self, value: Box) shared_or_mutable_self sync infallible_placeholder direct_snake_case accessor_methods mapped +P:LibreMetaverse.AppearanceManager.TextureProvider property LibreMetaverse.IBakingTextureProvider LibreMetaverse.AppearanceManager.TextureProvider libremetaverse libremetaverse::AppearanceManager::texture_provider pub fn texture_provider(&self) -> std::sync::Arc ; pub fn set_texture_provider(&mut self, value: std::sync::Arc) shared_or_mutable_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.AppearanceSetEventArgs.Success property System.Boolean LibreMetaverse.AppearanceSetEventArgs.Success libremetaverse libremetaverse::AppearanceSetEventArgs::success pub fn success(&self) -> bool shared_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.ArchetypeParam.Id property System.Int32 LibreMetaverse.ArchetypeParam.Id libremetaverse libremetaverse::ArchetypeParam::id pub fn id(&self) -> i32 ; pub fn set_id(&mut self, value: i32) shared_or_mutable_self sync infallible_placeholder direct_snake_case accessor_methods mapped P:LibreMetaverse.ArchetypeParam.Name property System.String LibreMetaverse.ArchetypeParam.Name libremetaverse libremetaverse::ArchetypeParam::name pub fn name(&self) -> String ; pub fn set_name(&mut self, value: String) shared_or_mutable_self sync infallible_placeholder direct_snake_case accessor_methods mapped diff --git a/crates/libremetaverse-types/src/shim.rs b/crates/libremetaverse-types/src/shim.rs index 3364265..8ede15e 100644 --- a/crates/libremetaverse-types/src/shim.rs +++ b/crates/libremetaverse-types/src/shim.rs @@ -57,6 +57,8 @@ pub enum Error { IndexOutOfRange, /// An operation observed a requested cancellation. Cancelled, + /// An HTTP request completed with an unsuccessful response. + HttpRequest, } impl Error { @@ -69,7 +71,8 @@ impl Error { | Self::Argument | Self::InvalidOperation | Self::IndexOutOfRange - | Self::Cancelled => None, + | Self::Cancelled + | Self::HttpRequest => None, } } } @@ -91,6 +94,7 @@ impl fmt::Display for Error { } Self::IndexOutOfRange => formatter.write_str("index was out of range"), Self::Cancelled => formatter.write_str("operation was cancelled"), + Self::HttpRequest => formatter.write_str("HTTP request failed"), } } } diff --git a/crates/libremetaverse/src/appearance_baker_semantics.rs b/crates/libremetaverse/src/appearance_baker_semantics.rs new file mode 100644 index 0000000..6997d4c --- /dev/null +++ b/crates/libremetaverse/src/appearance_baker_semantics.rs @@ -0,0 +1,99 @@ +// Exact Rust translations of LibreMetaverse.Tests/BakerTests.cs. +// Source SHA-256: 7727140f0fbf2c77ed7a6f3f468798d8f7ba96c5d9889246a2bccd2d4bd8def2 + +use super::*; +use libremetaverse_imaging::{ManagedImage, ManagedImageImageChannels}; +use libremetaverse_types::Color4; + +fn gray_alpha_image(value: u8) -> ManagedImage { + let channels = ManagedImageImageChannels( + ManagedImageImageChannels::GRAY.0 | ManagedImageImageChannels::ALPHA.0, + ); + let mut image = ManagedImage::new(4, 4, channels).unwrap(); + image.red.fill(value); + image.alpha.fill(255); + image +} + +fn texture_data( + image: ManagedImage, + color: Color4, + index: AvatarTextureIndex, +) -> AppearanceManagerTextureData { + let mut data = AppearanceManagerTextureData::new().unwrap(); + data.texture = Some(assets::AssetTexture::new_with_managed_image(image).unwrap()); + data.color = color; + data.texture_index = index; + data +} + +// parity-case: LibreMetaverse.Tests/BakerTests.cs::BakerTests.Bake_GrayscaleLayerTexture_DoesNotThrow::test c3fc1d2c16b5f8d69678a6cf05a3a275e0b657f3a6e7f6788f350f2a107200b3 translated +#[test] +fn bake_grayscale_layer_texture_does_not_throw() { + let color = Color4::new_with_single_single_single_single(0.5, 0.25, 0.75, 1.0).unwrap(); + let data = texture_data(gray_alpha_image(128), color, AvatarTextureIndex::UpperShirt); + let mut baker = imaging::Baker::new(BakeType::UpperBody).unwrap(); + baker.add_texture(data).unwrap(); + baker.bake().unwrap(); + assert!(baker.baked_texture().is_some()); +} + +// parity-case: LibreMetaverse.Tests/BakerTests.cs::BakerTests.Bake_GrayscaleHairTextureNoSkin_DoesNotThrow::test e48b737d9138e63cda98b5e80bf561a80d1dab5de78901ac9e1bb320ca281eb6 translated +#[test] +fn bake_grayscale_hair_texture_no_skin_does_not_throw() { + let data = texture_data( + gray_alpha_image(200), + Color4::white(), + AvatarTextureIndex::Hair, + ); + let mut baker = imaging::Baker::new(BakeType::Head).unwrap(); + baker.add_texture(data).unwrap(); + baker.bake().unwrap(); + assert!(baker.baked_texture().is_some()); +} + +// parity-case: LibreMetaverse.Tests/BakerTests.cs::BakerTests.LoadResourceLayer_HeadColorTga_LoadsFromCharacterDirectory::test 5a9b80005a51f04a227ca392218725d50704d038783e04fc49bb955997c22e76 translated +#[test] +fn load_resource_layer_head_color_tga_loads_from_character_directory() { + assert!( + imaging::Baker::load_resource_layer("head_color.tga".into()) + .unwrap() + .is_some() + ); +} + +// parity-case: LibreMetaverse.Tests/BakerTests.cs::BakerTests.LoadResourceLayer_CachedResourceNotCorruptedByCallerMutation::test 18b458bbd7bb13d2b68711f7d3495193f1b4edac9c1f776930ad2c172f97cd49 translated +#[test] +fn load_resource_layer_cached_resource_not_corrupted_by_caller_mutation() { + imaging::Baker::load_resource_layer("head_color.tga".into()).unwrap(); + let mut second = imaging::Baker::load_resource_layer("head_color.tga".into()) + .unwrap() + .unwrap(); + let original_width = second.width; + let original_height = second.height; + second + .resize_nearest_neighbor(original_width / 2, original_height / 2) + .unwrap(); + let third = imaging::Baker::load_resource_layer("head_color.tga".into()) + .unwrap() + .unwrap(); + assert_eq!(third.width, original_width); + assert_eq!(third.height, original_height); +} + +// parity-case: LibreMetaverse.Tests/BakerTests.cs::BakerTests.ResizeToBakeDimensions_SourceSmallerInOneAxisOnly_ScalesRatherThanTiles::test ce5bd346b48cb19dbc0248403eafefb07309d4e05e675e9a02db5a46d7cd65ff translated +#[test] +fn resize_to_bake_dimensions_source_smaller_in_one_axis_only_scales_rather_than_tiles() { + let mut source = ManagedImage::new(2, 8, ManagedImageImageChannels::COLOR).unwrap(); + for y in 0..8 { + for x in 0..2 { + source.red[y * 2 + x] = u8::try_from(y * 10).unwrap(); + } + } + let result = imaging::Baker::resize_to_bake_dimensions(source, 4, 4) + .unwrap() + .unwrap(); + assert_eq!(result.width, 4); + assert_eq!(result.height, 4); + assert!(result.red[3 * 4] > 50); +} diff --git a/crates/libremetaverse/src/batch_link_internal_semantics.rs b/crates/libremetaverse/src/batch_link_internal_semantics.rs new file mode 100644 index 0000000..a26cbbe --- /dev/null +++ b/crates/libremetaverse/src/batch_link_internal_semantics.rs @@ -0,0 +1,459 @@ +// Exact Rust translations of LibreMetaverse.Tests/BatchLinkTests.cs. +// Source SHA-256: 092ccb2686769d27f6a8072114654e91308f88edd94223a77af92f56426ee1ee + +use super::*; +use libremetaverse_structured_data::{OSD, OSDParser}; +use libremetaverse_types::compat::{HttpMessageHandler, HttpRequest, HttpResponse, Uri}; +use libremetaverse_types::{AssetType, InventoryType, UUID, WearableType}; +use std::collections::{BTreeMap, HashMap, VecDeque}; +use std::fmt::Write as _; +use std::sync::{Arc, Mutex}; + +const CAP: &str = "http://fake-ais3.test/ais3"; +const LIBRARY_CAP: &str = "http://fake-lib.test/lib/"; +const SEED: &str = "http://fake-seed.test/caps"; + +fn block_on(future: F) -> F::Output { + use std::task::{Context, Poll, Wake, Waker}; + struct ThreadWake(std::thread::Thread); + impl Wake for ThreadWake { + fn wake(self: Arc) { + 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); + loop { + match future.as_mut().poll(&mut context) { + Poll::Ready(output) => return output, + Poll::Pending => std::thread::park(), + } + } +} + +#[derive(Clone)] +struct RecordingHttp(Arc>>); + +impl RecordingHttp { + fn requests(&self) -> Vec { + self.0.lock().unwrap().clone() + } +} + +fn client_with_cap(responses: Vec<(String, u16, String)>) -> (GridClient, RecordingHttp) { + let requests = Arc::new(Mutex::new(Vec::new())); + let recorded = Arc::clone(&requests); + let mut queues = HashMap::>::new(); + for (uri, status, body) in responses { + queues.entry(uri).or_default().push_back(HttpResponse { + status_code: status, + headers: BTreeMap::new(), + content_type: Some("application/llsd+xml".into()), + body: body.into_bytes(), + }); + } + let queues = Mutex::new(queues); + let seed = format!( + "InventoryAPIv3{CAP}LibraryAPIv3{LIBRARY_CAP}" + ); + let handler = HttpMessageHandler::new(move |request, _| { + let response = if request.uri.0 == SEED { + HttpResponse { + status_code: 200, + headers: BTreeMap::new(), + content_type: Some("application/llsd+xml".into()), + body: seed.as_bytes().to_vec(), + } + } else { + let uri = request.uri.0.clone(); + recorded.lock().unwrap().push(request); + queues + .lock() + .unwrap() + .get_mut(&uri) + .and_then(VecDeque::pop_front) + .unwrap_or(HttpResponse { + status_code: 404, + headers: BTreeMap::new(), + content_type: None, + body: Vec::new(), + }) + }; + async move { response } + }); + let mut client = GridClient::new().unwrap(); + client.set_http_caps_client(HttpCapsClient::new(handler.clone()).unwrap()); + let mut simulator_client = GridClient::new().unwrap(); + simulator_client.set_http_caps_client(HttpCapsClient::new(handler).unwrap()); + let simulator = Simulator::new( + simulator_client, + "127.0.0.1:0".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, RecordingHttp(requests)) +} + +fn link_xml(item: UUID, parent: UUID, linked: UUID, name: &str) -> String { + let item = item.to_string(); + let parent = parent.to_string(); + let linked = linked.to_string(); + let agent = UUID::random().unwrap().to_string(); + let zero = UUID::zero().to_string(); + format!( + "item_id{item}parent_id{parent}linked_id{linked}name{name}descagent_id{agent}inv_type{}type{}created_at0permissionscreator_id{zero}last_owner_id{zero}base_mask0everyone_mask0group_mask0next_owner_mask0owner_mask0is_owner_groupfalsegroup_id{zero}sale_infosale_price0sale_type0", + InventoryType::WEARABLE.0, + AssetType::Link as i32, + ) +} + +fn batch_response(links: &[(UUID, UUID, UUID, &str)]) -> String { + let mut entries = String::new(); + for (index, (item, parent, linked, name)) in links.iter().enumerate() { + write!( + entries, + "{index}{}", + link_xml(*item, *parent, *linked, name) + ) + .unwrap(); + } + format!( + "_embeddedlinks{entries}" + ) +} + +fn wearable(name: &str, wearable_type: WearableType, asset_type: AssetType) -> InventoryWearable { + let mut item = InventoryWearable::new(UUID::random().unwrap()).unwrap(); + item.set_wearable_type(wearable_type); + item.base.set_asset_type(asset_type); + item.base.set_inventory_type(InventoryType::WEARABLE); + item.base.base.set_name(name.into()); + item +} + +fn object(name: &str) -> InventoryObject { + let mut item = InventoryObject::new(UUID::random().unwrap()).unwrap(); + item.base.set_asset_type(AssetType::Object); + item.base.set_inventory_type(InventoryType::OBJECT); + item.base.base.set_name(name.into()); + item +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_ClothingWearable_ReturnsWearableTypeAndZeroLayer::test 898a14ff28d953a58a01c3a0e5d9d9fcbbe61376a33fdc5caf20268aaac76242 translated +#[test] +fn get_cof_link_description_clothing_wearable_returns_wearable_type_and_zero_layer() { + let cof = + appearance::CurrentOutfitFolder::new(Some(Arc::new(GridClient::new().unwrap()))).unwrap(); + let shirt = wearable("Test Shirt", WearableType::Shirt, AssetType::Clothing); + assert_eq!(cof.get_cof_link_description(&shirt).unwrap(), "400"); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_BodyPartShape_ReturnsEmpty::test 4f009136d265da91afb9eafd060faf459f6c510ca0502a33ce9e128d241f9bd1 translated +#[test] +fn get_cof_link_description_body_part_shape_returns_empty() { + let cof = + appearance::CurrentOutfitFolder::new(Some(Arc::new(GridClient::new().unwrap()))).unwrap(); + let shape = wearable("Test Shape", WearableType::Shape, AssetType::Bodypart); + assert_eq!(cof.get_cof_link_description(&shape).unwrap(), ""); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_AttachmentObject_ReturnsEmpty::test a838329a7a23081a4022671bc794e7e706c9ab7da51598280a8befbb824d336d translated +#[test] +fn get_cof_link_description_attachment_object_returns_empty() { + let cof = + appearance::CurrentOutfitFolder::new(Some(Arc::new(GridClient::new().unwrap()))).unwrap(); + assert_eq!( + cof.get_cof_link_description(&object("Test Attachment")) + .unwrap(), + "" + ); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_AllBodyPartTypes_ReturnEmpty::test aa057d55a3b34846567efe382b6e090b5d91935a4ffa6166093b34870ee5da23 translated +#[test] +fn get_cof_link_description_all_body_part_types_return_empty() { + let cof = + appearance::CurrentOutfitFolder::new(Some(Arc::new(GridClient::new().unwrap()))).unwrap(); + for wearable_type in [ + WearableType::Shape, + WearableType::Skin, + WearableType::Eyes, + WearableType::Hair, + ] { + let item = wearable("Test body part", wearable_type, AssetType::Bodypart); + assert_eq!( + cof.get_cof_link_description(&item).unwrap(), + "", + "{wearable_type:?}" + ); + } +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_SuccessResponse_ReturnsAllParsedLinks::test 416a1f023a2ae3b883c4c49f0a774c84a2f1a3562abb3ec848f86fe53d929f63 translated +#[test] +fn create_inventory_links_success_response_returns_all_parsed_links() { + let folder = UUID::random().unwrap(); + let ids = [ + ( + UUID::random().unwrap(), + UUID::random().unwrap(), + UUID::random().unwrap(), + "Link1", + ), + ( + UUID::random().unwrap(), + UUID::random().unwrap(), + UUID::random().unwrap(), + "Link2", + ), + ]; + let uri = format!("{CAP}/category/{}", folder.to_string()); + let (client, _) = client_with_cap(vec![(uri, 200, batch_response(&ids))]); + let payload = OSD::Map(HashMap::from([("links".into(), OSD::Array(Vec::new()))])); + let result = block_on( + client + .ais_client() + .create_inventory_links(folder, payload, None), + ) + .unwrap(); + assert_eq!(result.len(), 2); + let names: Vec = result.iter().map(|item| item.base.name()).collect(); + assert!(names.contains(&"Link1".into())); + assert!(names.contains(&"Link2".into())); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_ServerError_ThrowsHttpRequestException::test 53e3956676e546ab8d69bb63a071028b29151013b6362c39f37516a36cad6641 translated +#[test] +fn create_inventory_links_server_error_throws_http_request_exception() { + let folder = UUID::random().unwrap(); + let (client, _) = client_with_cap(vec![( + format!("{CAP}/category/{}", folder.to_string()), + 500, + String::new(), + )]); + let Err(error) = block_on(client.ais_client().create_inventory_links( + folder, + OSD::Map(HashMap::new()), + None, + )) else { + panic!("expected HttpRequest error"); + }; + assert_eq!(error, Error::HttpRequest); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_NoCapability_ReturnsEmptyList::test d9cd50e620f69e40daab52d175886f3052d3741c5d39ef42549283ff6b2b7b44 translated +#[test] +fn create_inventory_links_no_capability_returns_empty_list() { + let client = GridClient::new().unwrap(); + let result = block_on(client.ais_client().create_inventory_links( + UUID::random().unwrap(), + OSD::Map(HashMap::new()), + None, + )) + .unwrap(); + assert!(result.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_EmptyList_InvokesCallbackWithTrueWithoutHttpCall::test e7ba88352761ca9fd3e956233e3743689b41f47bba09bfbb463c66f132273c70 translated +#[test] +fn create_links_empty_list_invokes_callback_with_true_without_http_call() { + let (client, recording) = client_with_cap(Vec::new()); + let callback = Arc::new(Mutex::new(None)); + let recorded_result = Arc::clone(&callback); + block_on(client.inventory().create_links( + UUID::random().unwrap(), + Box::new(Vec::<(InventoryItem, String)>::new().into_iter()), + Some(Box::new(move |value| { + *recorded_result.lock().unwrap() = Some(value); + })), + None, + )) + .unwrap(); + assert_eq!(*callback.lock().unwrap(), Some(true)); + assert!(recording.requests().is_empty()); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_SendsSingleBatchPost::test 369d99d37dca818991aca94d6ff9d7881874d74797c7a8b705c5925723e383db translated +#[test] +fn create_links_ais_available_sends_single_batch_post() { + let folder = UUID::random().unwrap(); + let first = wearable("Shirt", WearableType::Shirt, AssetType::Clothing); + let second = object("Object"); + let response = batch_response(&[ + ( + UUID::random().unwrap(), + folder, + first.base.base.uuid(), + "Shirt", + ), + ( + UUID::random().unwrap(), + folder, + second.base.base.uuid(), + "Object", + ), + ]); + let (client, recording) = client_with_cap(vec![( + format!("{CAP}/category/{}", folder.to_string()), + 200, + response, + )]); + block_on(client.inventory().create_links( + folder, + Box::new(vec![(first.base, "400".into()), (second.base, String::new())].into_iter()), + None, + None, + )) + .unwrap(); + assert_eq!( + recording + .requests() + .iter() + .filter(|request| request.method == "POST") + .count(), + 1 + ); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_PayloadContainsCorrectFieldsForEachLink::test b7629c3d061fe297e1c1c4f41ca4f8ce9cdeb2764525421be7bdc553a5f83063 translated +#[test] +fn create_links_ais_available_payload_contains_correct_fields_for_each_link() { + let folder = UUID::random().unwrap(); + let linked = wearable("Gloves", WearableType::Gloves, AssetType::Clothing); + let linked_id = linked.base.base.uuid(); + let response = batch_response(&[(UUID::random().unwrap(), folder, linked_id, "Gloves")]); + let (client, recording) = client_with_cap(vec![( + format!("{CAP}/category/{}", folder.to_string()), + 200, + response, + )]); + block_on(client.inventory().create_links( + folder, + Box::new(vec![(linked.base, "900".into())].into_iter()), + None, + None, + )) + .unwrap(); + let request = recording + .requests() + .into_iter() + .find(|request| request.method == "POST") + .unwrap(); + let payload = + OSDParser::deserialize_llsd_xml_with_string(String::from_utf8(request.body).unwrap()) + .unwrap(); + let OSD::Map(payload) = payload else { + panic!("payload must be a map") + }; + let OSD::Array(links) = &payload["links"] else { + panic!("links must be an array") + }; + assert_eq!(links.len(), 1); + let OSD::Map(link) = &links[0] else { + panic!("link must be a map") + }; + assert!(matches!(&link["linked_id"], OSD::UUID(value) if *value == linked_id)); + assert!(matches!(&link["name"], OSD::String(value) if value == "Gloves")); + assert!(matches!(&link["desc"], OSD::String(value) if value == "900")); + assert!(matches!(&link["type"], OSD::Integer(value) if *value == AssetType::Link as i32)); + assert!( + matches!(&link["inv_type"], OSD::Integer(value) if *value == i32::from(InventoryType::WEARABLE.0)) + ); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_CallbackTrueOnSuccess::test 22dc685f896ec0415e56c1c01846ad90a9757cf5d9a0ed0d3706a76ee325d92d translated +#[test] +fn create_links_ais_available_callback_true_on_success() { + let folder = UUID::random().unwrap(); + let linked = object("Hat"); + let response = batch_response(&[( + UUID::random().unwrap(), + folder, + linked.base.base.uuid(), + "Hat", + )]); + let (client, _) = client_with_cap(vec![( + format!("{CAP}/category/{}", folder.to_string()), + 200, + response, + )]); + let callback = Arc::new(Mutex::new(None)); + let result = Arc::clone(&callback); + block_on(client.inventory().create_links( + folder, + Box::new(vec![(linked.base, String::new())].into_iter()), + Some(Box::new(move |value| *result.lock().unwrap() = Some(value))), + None, + )) + .unwrap(); + assert_eq!(*callback.lock().unwrap(), Some(true)); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_ServerError_CallbackFalse::test 5fd9b2967bc61933cea80e01c55ee809f6ade246f10fb4048ec2668e0cc71dbf translated +#[test] +fn create_links_server_error_callback_false() { + let folder = UUID::random().unwrap(); + let linked = object("Hat"); + let (client, _) = client_with_cap(vec![( + format!("{CAP}/category/{}", folder.to_string()), + 500, + String::new(), + )]); + let callback = Arc::new(Mutex::new(None)); + let result = Arc::clone(&callback); + block_on(client.inventory().create_links( + folder, + Box::new(vec![(linked.base, String::new())].into_iter()), + Some(Box::new(move |value| *result.lock().unwrap() = Some(value))), + None, + )) + .unwrap(); + assert_eq!(*callback.lock().unwrap(), Some(false)); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCategoryLinks_UsesGetWithNoTidParameter::test 3079c03ab4b14d4ac10a410b3685f1593ea267c52de7b6323f9e8e8387314f29 translated +#[test] +fn get_category_links_uses_get_with_no_tid_parameter() { + let folder = UUID::random().unwrap(); + let uri = format!("{CAP}/category/{}/links", folder.to_string()); + let response = "_embedded".to_owned(); + let (client, recording) = client_with_cap(vec![(uri.clone(), 200, response)]); + let (success, _, _, _) = block_on( + client + .ais_client() + .get_category_links(folder.to_string(), None), + ) + .unwrap(); + assert!(success); + let requests = recording.requests(); + assert_eq!(requests.len(), 1); + assert_eq!(requests[0].method, "GET"); + assert_eq!(requests[0].uri.0, uri); + assert!(!requests[0].uri.0.contains("?tid=")); +} + +// parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCategory_UsesGetWithNoTidParameter::test 98cd0aa58ce9640263d07aecd45337113b07acfc76640d17c5812abe05d35c73 translated +#[test] +fn get_category_uses_get_with_no_tid_parameter() { + let folder = UUID::random().unwrap(); + let uri = format!("{CAP}/category/{}", folder.to_string()); + let response = "_embedded".to_owned(); + let (client, recording) = client_with_cap(vec![(uri.clone(), 200, response)]); + let (success, _, _, _) = + block_on(client.ais_client().get_category(folder.to_string(), None)).unwrap(); + assert!(success); + let requests = recording.requests(); + assert_eq!(requests.len(), 1); + assert_eq!(requests[0].method, "GET"); + assert_eq!(requests[0].uri.0, uri); + assert!(!requests[0].uri.0.contains("?tid=")); +} diff --git a/crates/libremetaverse/src/generated.rs b/crates/libremetaverse/src/generated.rs index 496ad95..ef247b4 100644 --- a/crates/libremetaverse/src/generated.rs +++ b/crates/libremetaverse/src/generated.rs @@ -4673,13 +4673,16 @@ impl AppearanceManager { libremetaverse_types::unimplemented_api!("P:LibreMetaverse.AppearanceManager.ManagerBusy") } /// C# member: `P:LibreMetaverse.AppearanceManager.TextureProvider`. - pub fn texture_provider(&self) -> Box { + pub fn texture_provider(&self) -> std::sync::Arc { libremetaverse_types::unimplemented_api!( "P:LibreMetaverse.AppearanceManager.TextureProvider" ) } /// Setter for C# member: `P:LibreMetaverse.AppearanceManager.TextureProvider`. - pub fn set_texture_provider(&mut self, value: Box) { + pub fn set_texture_provider( + &mut self, + value: std::sync::Arc, + ) { libremetaverse_types::unimplemented_api!( "P:LibreMetaverse.AppearanceManager.TextureProvider" ) @@ -5742,7 +5745,7 @@ pub struct AvatarAppearanceEventArgs; impl AvatarAppearanceEventArgs { /// C# member: `M:LibreMetaverse.AvatarAppearanceEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Boolean,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Primitive.TextureEntryFace[],System.Collections.Generic.List{System.Byte},System.Byte,System.Int32,LibreMetaverse.AppearanceFlags,System.Int32)`. pub fn new( - sim: libremetaverse::Simulator, + sim: Option, avatar_id: libremetaverse_types::UUID, is_trial: bool, default_texture: libremetaverse::PrimitiveTextureEntryFace, @@ -6582,32 +6585,34 @@ impl AvatarUpdateEventArgs { /// C# type: `T:LibreMetaverse.BakeType`. #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] -#[repr(i32)] -pub enum BakeType { +#[repr(transparent)] +pub struct BakeType(pub i32); +#[allow(non_upper_case_globals)] +impl BakeType { /// C# member: `F:LibreMetaverse.BakeType.BakedAux1`. - BakedAux1 = 8, + pub const BakedAux1: Self = Self(8); /// C# member: `F:LibreMetaverse.BakeType.BakedAux2`. - BakedAux2 = 9, + pub const BakedAux2: Self = Self(9); /// C# member: `F:LibreMetaverse.BakeType.BakedAux3`. - BakedAux3 = 10, + pub const BakedAux3: Self = Self(10); /// C# member: `F:LibreMetaverse.BakeType.BakedLeftArm`. - BakedLeftArm = 6, + pub const BakedLeftArm: Self = Self(6); /// C# member: `F:LibreMetaverse.BakeType.BakedLeftLeg`. - BakedLeftLeg = 7, + pub const BakedLeftLeg: Self = Self(7); /// C# member: `F:LibreMetaverse.BakeType.Eyes`. - Eyes = 3, + pub const Eyes: Self = Self(3); /// C# member: `F:LibreMetaverse.BakeType.Hair`. - Hair = 5, + pub const Hair: Self = Self(5); /// C# member: `F:LibreMetaverse.BakeType.Head`. - Head = 0, + pub const Head: Self = Self(0); /// C# member: `F:LibreMetaverse.BakeType.LowerBody`. - LowerBody = 2, + pub const LowerBody: Self = Self(2); /// C# member: `F:LibreMetaverse.BakeType.Skirt`. - Skirt = 4, + pub const Skirt: Self = Self(4); /// C# member: `F:LibreMetaverse.BakeType.Unknown`. - Unknown = -1, + pub const Unknown: Self = Self(-1); /// C# member: `F:LibreMetaverse.BakeType.UpperBody`. - UpperBody = 1, + pub const UpperBody: Self = Self(1); } /// C# type: `T:LibreMetaverse.BalanceEventArgs`. @@ -13662,7 +13667,7 @@ impl HttpCapsClientProgressReport { } /// C# type: `T:LibreMetaverse.IBakingTextureProvider`. -pub trait IBakingTextureProvider { +pub trait IBakingTextureProvider: std::any::Any { /// C# member: `M:LibreMetaverse.IBakingTextureProvider.RequestTextureAsync(LibreMetaverse.UUID,System.Threading.CancellationToken)`. fn request_texture( &self, @@ -14865,7 +14870,10 @@ impl InventoryAnimation { } /// C# type: `T:LibreMetaverse.InventoryAttachment`. -pub struct InventoryAttachment; +pub struct InventoryAttachment { + /// Rust composition for C# base type `LibreMetaverse.InventoryItem`. + pub base: libremetaverse::InventoryItem, +} impl InventoryAttachment { /// C# member: `M:LibreMetaverse.InventoryAttachment.#ctor(LibreMetaverse.UUID)`. pub fn new(uuid: libremetaverse_types::UUID) -> Result { @@ -15086,7 +15094,10 @@ impl InventoryGesture { } /// C# type: `T:LibreMetaverse.InventoryItem`. -pub struct InventoryItem; +pub struct InventoryItem { + /// Rust composition for C# base type `LibreMetaverse.InventoryBase`. + pub base: libremetaverse::InventoryBase, +} impl InventoryItem { /// C# member: `M:LibreMetaverse.InventoryItem.#ctor(LibreMetaverse.InventoryType,LibreMetaverse.UUID)`. pub fn new_with_inventory_type_uuid( @@ -15595,7 +15606,7 @@ impl InventoryManager { pub async fn create_links( &self, folder_id: libremetaverse_types::UUID, - links_to_create: Box>, + links_to_create: Box>, callback: Option>, cancellation_token: Option, ) -> Result<(), crate::Error> { @@ -16935,7 +16946,10 @@ impl InventoryNotecard { } /// C# type: `T:LibreMetaverse.InventoryObject`. -pub struct InventoryObject; +pub struct InventoryObject { + /// Rust composition for C# base type `LibreMetaverse.InventoryItem`. + pub base: libremetaverse::InventoryItem, +} impl InventoryObject { /// C# member: `M:LibreMetaverse.InventoryObject.#ctor(LibreMetaverse.UUID)`. pub fn new(uuid: libremetaverse_types::UUID) -> Result { @@ -17135,7 +17149,10 @@ impl InventorySound { } /// C# type: `T:LibreMetaverse.InventoryTexture`. -pub struct InventoryTexture; +pub struct InventoryTexture { + /// Rust composition for C# base type `LibreMetaverse.InventoryItem`. + pub base: libremetaverse::InventoryItem, +} impl InventoryTexture { /// C# member: `M:LibreMetaverse.InventoryTexture.#ctor(LibreMetaverse.UUID)`. pub fn new(uuid: libremetaverse_types::UUID) -> Result { @@ -17146,7 +17163,10 @@ impl InventoryTexture { } /// C# type: `T:LibreMetaverse.InventoryWearable`. -pub struct InventoryWearable; +pub struct InventoryWearable { + /// Rust composition for C# base type `LibreMetaverse.InventoryItem`. + pub base: libremetaverse::InventoryItem, +} impl InventoryWearable { /// C# member: `M:LibreMetaverse.InventoryWearable.#ctor(LibreMetaverse.UUID)`. pub fn new(uuid: libremetaverse_types::UUID) -> Result { @@ -23495,7 +23515,7 @@ pub struct Primitive { /// C# member: `F:LibreMetaverse.Primitive.MediaVersion`. pub media_version: String, /// C# member: `F:LibreMetaverse.Primitive.NameValues`. - pub name_values: Vec, + pub name_values: Option>, /// C# member: `F:LibreMetaverse.Primitive.OwnerID`. pub owner_id: libremetaverse_types::UUID, /// C# member: `F:LibreMetaverse.Primitive.ParentID`. @@ -29162,9 +29182,10 @@ pub mod appearance { /// C# member: `M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)`. pub fn add_policy( &self, - policy_to_add: Option>, - ) -> Result - { + policy_to_add: Option< + std::sync::Arc, + >, + ) -> Result<&Self, crate::Error> { libremetaverse_types::not_implemented( "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)", ) @@ -29172,7 +29193,7 @@ pub mod appearance { /// C# member: `M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem)`. pub fn can_attach( &self, - item: Option, + item: Option>, ) -> Result { libremetaverse_types::not_implemented( "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem)", @@ -29181,7 +29202,7 @@ pub mod appearance { /// C# member: `M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem)`. pub fn can_detach( &self, - item: Option, + item: Option>, ) -> Result { libremetaverse_types::not_implemented( "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem)", @@ -29190,7 +29211,9 @@ pub mod appearance { /// C# member: `M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)`. pub fn remove_policy( &self, - policy_to_remove: Option>, + policy_to_remove: Option< + std::sync::Arc, + >, ) -> Result<(), crate::Error> { libremetaverse_types::not_implemented( "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)", @@ -29199,8 +29222,8 @@ pub mod appearance { /// C# member: `M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken)`. pub async fn report_item_change( &self, - added_items: Option>, - removed_items: Option>, + added_items: Option>>, + removed_items: Option>>, cancellation_token: Option, ) -> Result<(), crate::Error> { libremetaverse_types::not_implemented( @@ -29214,7 +29237,9 @@ pub mod appearance { pub struct CurrentOutfitFolder; impl CurrentOutfitFolder { /// C# member: `M:LibreMetaverse.Appearance.CurrentOutfitFolder.#ctor(LibreMetaverse.GridClient)`. - pub fn new(client: Option) -> Result { + pub fn new( + client: Option>, + ) -> Result { libremetaverse_types::not_implemented( "M:LibreMetaverse.Appearance.CurrentOutfitFolder.#ctor(LibreMetaverse.GridClient)", ) @@ -29222,9 +29247,11 @@ pub mod appearance { /// C# member: `M:LibreMetaverse.Appearance.CurrentOutfitFolder.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)`. pub fn add_policy( &self, - policy_to_add: Box, - ) -> Result, crate::Error> - { + policy_to_add: std::sync::Arc, + ) -> Result< + std::sync::Arc, + crate::Error, + > { libremetaverse_types::not_implemented( "M:LibreMetaverse.Appearance.CurrentOutfitFolder.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)", ) @@ -29370,7 +29397,7 @@ pub mod appearance { /// C# member: `M:LibreMetaverse.Appearance.CurrentOutfitFolder.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)`. pub fn remove_policy( &self, - policy_to_remove: Box, + policy_to_remove: std::sync::Arc, ) -> Result<(), crate::Error> { libremetaverse_types::not_implemented( "M:LibreMetaverse.Appearance.CurrentOutfitFolder.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)", @@ -29389,8 +29416,8 @@ pub mod appearance { /// C# member: `M:LibreMetaverse.Appearance.CurrentOutfitFolder.ResolveInventoryLink(LibreMetaverse.InventoryItem)`. pub fn resolve_inventory_link( &self, - item_link: libremetaverse::InventoryItem, - ) -> Result, crate::Error> { + item_link: std::sync::Arc, + ) -> Result>, crate::Error> { libremetaverse_types::not_implemented( "M:LibreMetaverse.Appearance.CurrentOutfitFolder.ResolveInventoryLink(LibreMetaverse.InventoryItem)", ) @@ -29416,11 +29443,11 @@ pub mod appearance { } /// C# type: `T:LibreMetaverse.Appearance.ICurrentOutfitPolicy`. - pub trait ICurrentOutfitPolicy { + pub trait ICurrentOutfitPolicy: Send + Sync { /// C# member: `M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem)`. fn can_attach( &self, - item: Option, + item: Option>, ) -> Result { libremetaverse_types::not_implemented( "M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem)", @@ -29429,7 +29456,7 @@ pub mod appearance { /// C# member: `M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem)`. fn can_detach( &self, - item: Option, + item: Option>, ) -> Result { libremetaverse_types::not_implemented( "M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem)", @@ -29438,8 +29465,8 @@ pub mod appearance { /// C# member: `M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken)`. fn report_item_change( &self, - added_items: Option>, - removed_items: Option>, + added_items: Option>>, + removed_items: Option>>, cancellation_token: Option, ) -> std::pin::Pin< Box> + Send + '_>, @@ -33904,7 +33931,7 @@ pub mod imaging { } /// C# member: `M:LibreMetaverse.Imaging.Baker.AddTexture(LibreMetaverse.AppearanceManager.TextureData)`. pub fn add_texture( - &self, + &mut self, tdata: libremetaverse::AppearanceManagerTextureData, ) -> Result<(), crate::Error> { libremetaverse_types::not_implemented( @@ -33912,7 +33939,7 @@ pub mod imaging { ) } /// C# member: `M:LibreMetaverse.Imaging.Baker.Bake`. - pub fn bake(&self) -> Result<(), crate::Error> { + pub fn bake(&mut self) -> Result<(), crate::Error> { libremetaverse_types::not_implemented("M:LibreMetaverse.Imaging.Baker.Bake") } /// C# member: `M:LibreMetaverse.Imaging.Baker.BakeTypeFor(LibreMetaverse.AvatarTextureIndex)`. diff --git a/crates/libremetaverse/src/lib.rs b/crates/libremetaverse/src/lib.rs index 4e0d71f..7a168e4 100644 --- a/crates/libremetaverse/src/lib.rs +++ b/crates/libremetaverse/src/lib.rs @@ -4,10 +4,14 @@ extern crate self as libremetaverse; mod generated; +#[cfg(test)] +mod appearance_baker_semantics; #[cfg(test)] mod asset_archive_semantics; #[cfg(test)] mod avatar_animesh_semantics; +#[cfg(test)] +mod batch_link_internal_semantics; type Terrain = Vec>; type TerrainLoaded = Box; @@ -71,6 +75,68 @@ impl animesh::AnimeshPlayer { } } +#[allow(dead_code)] +trait CofLinkItem { + fn inventory_item(&self) -> &InventoryItem; + fn wearable_type(&self) -> Option; +} + +impl CofLinkItem for InventoryWearable { + fn inventory_item(&self) -> &InventoryItem { + &self.base + } + + fn wearable_type(&self) -> Option { + Some(self.wearable_type()) + } +} + +impl CofLinkItem for InventoryObject { + fn inventory_item(&self) -> &InventoryItem { + &self.base + } + + fn wearable_type(&self) -> Option { + None + } +} + +#[allow(clippy::unused_self, dead_code)] +impl appearance::CurrentOutfitFolder { + fn get_cof_link_description(&self, _item: &dyn CofLinkItem) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Appearance.CurrentOutfitFolder.GetCofLinkDescription(LibreMetaverse.InventoryItem)", + ) + } +} + +#[allow(clippy::unused_async, dead_code)] +impl InventoryAISClient { + async fn create_inventory_links( + &self, + _parent_uuid: libremetaverse_types::UUID, + _new_inventory: libremetaverse_structured_data::OSD, + _cancellation_token: Option, + ) -> Result, Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.InventoryAISClient.CreateInventoryLinksAsync(LibreMetaverse.UUID,LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken)", + ) + } +} + +#[allow(dead_code)] +impl imaging::Baker { + fn resize_to_bake_dimensions( + _source: libremetaverse_imaging::ManagedImage, + _width: i32, + _height: i32, + ) -> Result, Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Imaging.Baker.ResizeToBakeDimensions(LibreMetaverse.Imaging.ManagedImage,System.Int32,System.Int32)", + ) + } +} + pub use generated::*; pub use libremetaverse_imaging as imaging_abstractions; pub use libremetaverse_structured_data as structured_data; diff --git a/tests/PARITY.md b/tests/PARITY.md index 7498d77..f01d182 100644 --- a/tests/PARITY.md +++ b/tests/PARITY.md @@ -5,9 +5,9 @@ Generated from LibreMetaverse `2aa70bb68513b39795da5d13c88f31b86e85a3ba`. Stable ## Status - Total: **1,289** -- Pending/unreviewed: **939** -- Translated/reviewed: **343** -- Ignored live/reviewed: **3** (19 upstream live candidates) +- Pending/unreviewed: **819** +- Translated/reviewed: **455** +- Ignored live/reviewed: **11** (19 upstream live candidates) - Benchmarks/reviewed: **4** (4 upstream benchmark candidates) - Drifted: **0** @@ -51,58 +51,58 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case` | `LibreMetaverse.Tests/AnimeshSkinningTests.cs::AnimeshSkinningTests.DeformVertices_NullWeights_PassesPositionsThrough::test` | `AnimeshSkinningTests.DeformVertices_NullWeights_PassesPositionsThrough` | `` | `LibreMetaverse.Tests/AnimeshSkinningTests.cs:115` | `Animesh` | `` | `crates/libremetaverse/src/avatar_animesh_semantics.rs:516 (`animesh_skinning_deform_vertices_null_weights_passes_positions_through`)` | `translated` | `bbeb45d84770e6b766272bf9a5d48bd415ba98681d9da70d256598429566144d` | | `LibreMetaverse.Tests/AnimeshSkinningTests.cs::AnimeshSkinningTests.DeformVertices_ShortOutputSpan_ThrowsArgumentException::test` | `AnimeshSkinningTests.DeformVertices_ShortOutputSpan_ThrowsArgumentException` | `` | `LibreMetaverse.Tests/AnimeshSkinningTests.cs:136` | `Animesh` | `` | `crates/libremetaverse/src/avatar_animesh_semantics.rs:539 (`animesh_skinning_deform_vertices_short_output_span_throws_argument`)` | `translated` | `dfb10b33cedddadbaa5431f1fdf8a1c59369441e94618f97ef13f53ab931907b` | | `LibreMetaverse.Tests/AnimeshSkinningTests.cs::AnimeshSkinningTests.DeformVertices_IdentitySkinning_FullWeight_PreservesPositions::test` | `AnimeshSkinningTests.DeformVertices_IdentitySkinning_FullWeight_PreservesPositions` | `` | `LibreMetaverse.Tests/AnimeshSkinningTests.cs:155` | `Animesh` | `` | `crates/libremetaverse/src/avatar_animesh_semantics.rs:556 (`animesh_skinning_deform_vertices_identity_skinning_full_weight_preserves_positions`)` | `translated` | `fcf305a633047e7a4181954fee4990db3537e549f2cb940b08e6d3f0f544c8e1` | -| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_IsInitializedAfterLogin::test` | `AppearanceLiveTests.COF_IsInitializedAfterLogin` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:122` | `Appearance, RequiresLiveServer` | `` | `pending source translation` | `pending` | `7029854dc6f4e03016e2ea274140cd9adbbad6b8c11b58cf9e728d9a4cf37f81` | -| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_HasExpectedFolderName::test` | `AppearanceLiveTests.COF_HasExpectedFolderName` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:138` | `Appearance, RequiresLiveServer` | `` | `pending source translation` | `pending` | `9a8cee3c3958b8631921aaa6b43f69dc430eee9bd3544c8f667aa8f5e858b8ac` | -| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetCurrentOutfitLinksAsync_ReturnsLinks::test` | `AppearanceLiveTests.GetCurrentOutfitLinksAsync_ReturnsLinks` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:155` | `Appearance, RequiresLiveServer` | `` | `pending source translation` | `pending` | `a1a1c9f926a8b9f4cc4287ab751c4eb70d25a83c1024ef76e53f95c351db8a35` | -| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetCurrentOutfitLinksAsync_ContainsAtLeastOneLink::test` | `AppearanceLiveTests.GetCurrentOutfitLinksAsync_ContainsAtLeastOneLink` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:177` | `Appearance, RequiresLiveServer` | `` | `pending source translation` | `pending` | `ef91dfaf7b75f61c97c3957b4dac006a153c7f2d167d6732a9a6dceee08883f2` | -| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetWornAt_Shape_ReturnsAtLeastOne::test` | `AppearanceLiveTests.GetWornAt_Shape_ReturnsAtLeastOne` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:199` | `Appearance, RequiresLiveServer` | `` | `pending source translation` | `pending` | `abc01e346371910610312ff9352ee05c0d317a7c677c0fa8cb398d3b0522c3bf` | -| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.LastUpdateReceivedCOFVersion_AdvancesAfterLogin::test` | `AppearanceLiveTests.LastUpdateReceivedCOFVersion_AdvancesAfterLogin` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:222` | `Appearance, RequiresLiveServer` | `` | `pending source translation` | `pending` | `5371df8b02df9da20b413f4155f63967184dad23f57708beb56a2c6559e78520` | -| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.RequestOwnAvatarTextures_DoesNotThrow_AndMaintainsVersionGuard::test` | `AppearanceLiveTests.RequestOwnAvatarTextures_DoesNotThrow_AndMaintainsVersionGuard` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:254` | `Appearance, RequiresLiveServer` | `` | `pending source translation` | `pending` | `ee8420690fc9714411450beb5be5755b82ddf7ed0d69e9da88b3184339bea744` | -| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_MaxClothingLayers_Is60::test` | `AppearanceLiveTests.COF_MaxClothingLayers_Is60` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:289` | `Appearance, RequiresLiveServer` | `` | `pending source translation` | `pending` | `aac1292781cb0a4cbf710535036fa6464065f72d1b2c5214a9b7dc918513e8cd` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableTypeToAssetType_BodypartsAndClothing_ReturnsExpected::test` | `AppearanceManagerTests.WearableTypeToAssetType_BodypartsAndClothing_ReturnsExpected` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:8` | `` | `` | `pending source translation` | `pending` | `6d0f0d09a6da8121ba828159a75ca1c1ce54329ec48060a6786aa8f807c13ec0` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndexToTextureIndex_Matches_BakeTypeToAgentTextureIndex::test` | `AppearanceManagerTests.BakeIndexToTextureIndex_Matches_BakeTypeToAgentTextureIndex` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:22` | `` | `` | `pending source translation` | `pending` | `c559ea49314b157605346243713fd10480a10f9a97daffd9cac8acccbd39612b` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndex_ArrayLength_Equals_BAKED_TEXTURE_COUNT::test` | `AppearanceManagerTests.BakeIndex_ArrayLength_Equals_BAKED_TEXTURE_COUNT` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:33` | `` | `` | `pending source translation` | `pending` | `b661ca888df5b7fd41e51dfd298fb6d5e30a3a848102006c109b9dc4fc0e165c` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Head_IncludesExpectedSlots::test` | `AppearanceManagerTests.BakeTypeToTextures_Head_IncludesExpectedSlots` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:39` | `` | `` | `pending source translation` | `pending` | `44e03523f0e3f6691e527e014bfc38d9ca57c1d310e7cf2c6d7ae8a429a31e1d` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesExpectedSlots::test` | `AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesExpectedSlots` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:49` | `` | `` | `pending source translation` | `pending` | `fb7650becf6c01c1e7ffd731ac7b6c013957467110c7ed8d5bef9788ee9a5a16` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_LowerBody_Eyes_Skirt_Hair_IncludeExpected::test` | `AppearanceManagerTests.BakeTypeToTextures_LowerBody_Eyes_Skirt_Hair_IncludeExpected` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:59` | `` | `` | `pending source translation` | `pending` | `fad2baeca74cab39305c8f599c5de5777b55c329738db5c55f58a09366870374` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.MorphLayerForBakeType_ReturnsExpectedIndices::test` | `AppearanceManagerTests.MorphLayerForBakeType_ReturnsExpectedIndices` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:78` | `` | `` | `pending source translation` | `pending` | `3051ccea9adec4f9ef824ce967c74e7708b62a2264b98ae22340eb8d1927c44f` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_HasExpectedDimensions_And_FirstLayerContainsShapeAndSkin::test` | `AppearanceManagerTests.WearableBakeMap_HasExpectedDimensions_And_FirstLayerContainsShapeAndSkin` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:87` | `` | `` | `pending source translation` | `pending` | `42c072449d1819c956035d1f0290b90acc1e62b4e1e6309590d0cb6cb41bb375` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToAgentTextureIndex_ReturnsUnknown_ForInvalid::test` | `AppearanceManagerTests.BakeTypeToAgentTextureIndex_ReturnsUnknown_ForInvalid` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:95` | `` | `` | `pending source translation` | `pending` | `bc79d717462f06d498050182b6d116cea73f3bc173853f6d7894e3de88b70432` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BAKED_TEXTURE_COUNT_Is11::test` | `AppearanceManagerTests.BAKED_TEXTURE_COUNT_Is11` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:104` | `` | `` | `pending source translation` | `pending` | `9d34c333f7e143d25964553dedaa1bae79c20e1aead331626f449a3894e31e5b` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakedTextureHash_Has11Entries::test` | `AppearanceManagerTests.BakedTextureHash_Has11Entries` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:110` | `` | `` | `pending source translation` | `pending` | `7b26852cc8c1d7257e3e5f6f936f3870e0a06845f5809cc3000d67eb7590a49e` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakedTextureHash_AllEntriesNonZero::test` | `AppearanceManagerTests.BakedTextureHash_AllEntriesNonZero` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:116` | `` | `` | `pending source translation` | `pending` | `dc7a4010cfc2f975c0624bc5fbceed414297b1139f734d79786b2bb20d943553` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_Has11Rows::test` | `AppearanceManagerTests.WearableBakeMap_Has11Rows` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:123` | `` | `` | `pending source translation` | `pending` | `db6016bcdc90f21095f0723556489ec174603783dc40805b56123e25d7a83312` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_ExtendedRows_AreAllInvalid::test` | `AppearanceManagerTests.WearableBakeMap_ExtendedRows_AreAllInvalid` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:129` | `` | `` | `pending source translation` | `pending` | `9b36d72c16980dc3780137dda47afa9cd79ef3a2be0d8ccb20723e1e1ac67f41` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndexToTextureIndex_ExtendedBakes_MatchAgentTextureIndex::test` | `AppearanceManagerTests.BakeIndexToTextureIndex_ExtendedBakes_MatchAgentTextureIndex` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:140` | `` | `` | `pending source translation` | `pending` | `c331e94827930443aa3ca327374ec562fc9a294fce3304d7cba9f7e7859e43d3` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Head_IncludesUniversalTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_Head_IncludesUniversalTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:154` | `` | `` | `pending source translation` | `pending` | `578423fedcd5e4ed4e53b3d7d80c24a9c8ce30b35db13a09bdf8f47312b7da87` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesUniversalTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesUniversalTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:161` | `` | `` | `pending source translation` | `pending` | `6d95989bf8380348714a0ba9ae4c04a85ea64ae47ffc94aaa841ce64810abebd` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_LowerBody_IncludesUniversalTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_LowerBody_IncludesUniversalTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:168` | `` | `` | `pending source translation` | `pending` | `a21524c69c8bd32610e8cfa405a3cb3eae0a48add62d40a281f9311ebe739ffb` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Eyes_IncludesTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_Eyes_IncludesTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:175` | `` | `` | `pending source translation` | `pending` | `606c6bad5f911d070c5d8126004d5a1e1dfd4887a115e8dd1f69f2d36bf53ac6` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Skirt_IncludesTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_Skirt_IncludesTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:182` | `` | `` | `pending source translation` | `pending` | `7a38a59414bc74221bfbdc8889ef60714a4c6b4f26c9bd47e8f41bfa5a5da811` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Hair_IncludesHairTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_Hair_IncludesHairTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:189` | `` | `` | `pending source translation` | `pending` | `c9a8c6a0dce259103fb466eb571785eb3c9395c8fa144f1a02d42ae73c0d8253` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedLeftArm_ContainsLeftArmTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_BakedLeftArm_ContainsLeftArmTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:198` | `` | `` | `pending source translation` | `pending` | `bbbb01e8e009489967b36f22d83c6f326e295b9aabcbb58c00d82bab4e803f66` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedLeftLeg_ContainsLeftLegTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_BakedLeftLeg_ContainsLeftLegTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:206` | `` | `` | `pending source translation` | `pending` | `9d2a25a6ed9cd5a99c206a0fc6d66389959fc5e30dd036302a73fb0b500880b5` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux1_ContainsAux1Tattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_BakedAux1_ContainsAux1Tattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:213` | `` | `` | `pending source translation` | `pending` | `b9b0b56e1d4d552f2b43e5e570f3fc1a1f8651d8e77055fabcc35b37b5a9f21d` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux2_ContainsAux2Tattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_BakedAux2_ContainsAux2Tattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:220` | `` | `` | `pending source translation` | `pending` | `6be4bdbf667cadd673afbb1dafa8f4c1844ac9c34464fe5bbbc62f8ebe705b4d` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux3_ContainsAux3Tattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_BakedAux3_ContainsAux3Tattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:227` | `` | `` | `pending source translation` | `pending` | `5d7530c72824f8baf6044fb122d224da61fff1b6cfbf3114ac2f24b1418675d2` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.MorphLayerForBakeType_ExtendedBakes_ReturnTattooSlots::test` | `AppearanceManagerTests.MorphLayerForBakeType_ExtendedBakes_ReturnTattooSlots` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:234` | `` | `` | `pending source translation` | `pending` | `7f05dc0b59adce3b46c82f7415e91e4c945963d918ad6ad1f0e5c9569ee2220e` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.TextureProvider_Default_IsGridClientBakingTextureProvider::test` | `AppearanceManagerTests.TextureProvider_Default_IsGridClientBakingTextureProvider` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:251` | `` | `` | `pending source translation` | `pending` | `afdfbf516988c4ba35dfdb42158218a4815e1b8d146ef958225cf0fe73dfc3a9` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.TextureProvider_CanBeReplaced::test` | `AppearanceManagerTests.TextureProvider_CanBeReplaced` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:259` | `` | `` | `pending source translation` | `pending` | `e9c27d5b8717fdac1a9f3d22930709c0dee326909cb3c777b769b0ed2dc35b0c` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.LastUpdateReceivedCOFVersion_InitialValue_IsMinusOne::test` | `AppearanceManagerTests.LastUpdateReceivedCOFVersion_InitialValue_IsMinusOne` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:270` | `` | `` | `pending source translation` | `pending` | `f43c2d8c99cb597ba7a5d4c87d4585560e888931d84741de2882d05ab17b310a` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_HigherVersion_Updates::test` | `AppearanceManagerTests.UpdateLastReceivedCOFVersion_HigherVersion_Updates` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:277` | `` | `` | `pending source translation` | `pending` | `62d82f9ec6d12ec9354f02e7b7e86adb29ccecb8b104ed39a66937495bab1438` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_LowerVersion_DoesNotUpdate::test` | `AppearanceManagerTests.UpdateLastReceivedCOFVersion_LowerVersion_DoesNotUpdate` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:285` | `` | `` | `pending source translation` | `pending` | `ec5831c7d2c03132d3c7e50f6c0d088ca57f2726b7caf77ac240a9d5e92a77b6` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_SameVersion_DoesNotChange::test` | `AppearanceManagerTests.UpdateLastReceivedCOFVersion_SameVersion_DoesNotChange` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:294` | `` | `` | `pending source translation` | `pending` | `2e607b33bb8be04e6710e26fe62510f0634900579260accd9ffd720023636deb` | -| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_MonotonicallyIncreasing_TracksPeak::test` | `AppearanceManagerTests.UpdateLastReceivedCOFVersion_MonotonicallyIncreasing_TracksPeak` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:303` | `` | `` | `pending source translation` | `pending` | `5789831f288823729299944a8796c67348b932570392f59bf8b6d562cfa1c90c` | -| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_EmptyArray_ReturnsEmptyDictionary::test` | `AppearanceTests.DecodeVisualParams_EmptyArray_ReturnsEmptyDictionary` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:47` | `Appearance` | `` | `pending source translation` | `pending` | `644f412b90d429032a9273d24e89333a1694dc88eec3429a98acf00588315ec5` | -| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_CountMatchesGroup0ParamCount::test` | `AppearanceTests.DecodeVisualParams_CountMatchesGroup0ParamCount` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:55` | `Appearance` | `` | `pending source translation` | `pending` | `6a9acc7130e3394476392b86334a0ce1cb82253bea2b37ac33cf90a426c7af40` | -| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_RoundTrip_DefaultValues::test` | `AppearanceTests.DecodeVisualParams_RoundTrip_DefaultValues` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:70` | `Appearance` | `` | `pending source translation` | `pending` | `a0c0727a50b414522f875709240f4056547cb699c6ec1981fbef15488784daf5` | -| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_KeysAreGroup0ParamIDs::test` | `AppearanceTests.DecodeVisualParams_KeysAreGroup0ParamIDs` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:105` | `Appearance` | `` | `pending source translation` | `pending` | `fc4fd3059b01a319af2946ea0c289120a4c2609e7e9a96ac26c039c5042b8b4c` | -| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_TruncatedArray_ReturnsPartialResult::test` | `AppearanceTests.DecodeVisualParams_TruncatedArray_ReturnsPartialResult` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:118` | `Appearance` | `` | `pending source translation` | `pending` | `b017127549e186b3cf85b9fe0cc09811ea1d00efa44e3d863292033cb0691d13` | -| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_MinValue_DecodesNearParamMin::test` | `AppearanceTests.DecodeVisualParams_MinValue_DecodesNearParamMin` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:133` | `Appearance` | `` | `pending source translation` | `pending` | `80e0fd97979f91c879add1fc3142a0b619a405e4977120db1d5f42a11a71f3f5` | -| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_MaxValue_DecodesNearParamMax::test` | `AppearanceTests.DecodeVisualParams_MaxValue_DecodesNearParamMax` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:149` | `Appearance` | `` | `pending source translation` | `pending` | `31937bc9080b18be4aa98ea44bf73f929ba7862b621406b03c16a4651542f302` | -| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:168` | `Appearance` | `` | `pending source translation` | `pending` | `af99909259d531024895ce7ea325b49927a12daa886a35eab3d52e3f8fc76921` | -| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:176` | `Appearance` | `` | `pending source translation` | `pending` | `0aec57fab35764525195e6c0e08a63ff10a467be684295381731c04e836539b5` | -| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:199` | `Appearance` | `` | `pending source translation` | `pending` | `ff87dd3a506027ad248006b3b55d85a18b0810bc5b4e3a72eb81d31ebbe4184a` | +| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_IsInitializedAfterLogin::test` | `AppearanceLiveTests.COF_IsInitializedAfterLogin` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:122` | `Appearance, RequiresLiveServer` | `` | `tests/compat/tests/appearance_live_semantics.rs:58 (`cof_is_initialized_after_login`)` | `ignored-live` | `7029854dc6f4e03016e2ea274140cd9adbbad6b8c11b58cf9e728d9a4cf37f81` | +| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_HasExpectedFolderName::test` | `AppearanceLiveTests.COF_HasExpectedFolderName` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:138` | `Appearance, RequiresLiveServer` | `` | `tests/compat/tests/appearance_live_semantics.rs:71 (`cof_has_expected_folder_name`)` | `ignored-live` | `9a8cee3c3958b8631921aaa6b43f69dc430eee9bd3544c8f667aa8f5e858b8ac` | +| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetCurrentOutfitLinksAsync_ReturnsLinks::test` | `AppearanceLiveTests.GetCurrentOutfitLinksAsync_ReturnsLinks` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:155` | `Appearance, RequiresLiveServer` | `` | `tests/compat/tests/appearance_live_semantics.rs:84 (`get_current_outfit_links_returns_links`)` | `ignored-live` | `a1a1c9f926a8b9f4cc4287ab751c4eb70d25a83c1024ef76e53f95c351db8a35` | +| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetCurrentOutfitLinksAsync_ContainsAtLeastOneLink::test` | `AppearanceLiveTests.GetCurrentOutfitLinksAsync_ContainsAtLeastOneLink` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:177` | `Appearance, RequiresLiveServer` | `` | `tests/compat/tests/appearance_live_semantics.rs:98 (`get_current_outfit_links_contains_at_least_one_link`)` | `ignored-live` | `ef91dfaf7b75f61c97c3957b4dac006a153c7f2d167d6732a9a6dceee08883f2` | +| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetWornAt_Shape_ReturnsAtLeastOne::test` | `AppearanceLiveTests.GetWornAt_Shape_ReturnsAtLeastOne` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:199` | `Appearance, RequiresLiveServer` | `` | `tests/compat/tests/appearance_live_semantics.rs:114 (`get_worn_at_shape_returns_at_least_one`)` | `ignored-live` | `abc01e346371910610312ff9352ee05c0d317a7c677c0fa8cb398d3b0522c3bf` | +| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.LastUpdateReceivedCOFVersion_AdvancesAfterLogin::test` | `AppearanceLiveTests.LastUpdateReceivedCOFVersion_AdvancesAfterLogin` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:222` | `Appearance, RequiresLiveServer` | `` | `tests/compat/tests/appearance_live_semantics.rs:130 (`last_update_received_cof_version_advances_after_login`)` | `ignored-live` | `5371df8b02df9da20b413f4155f63967184dad23f57708beb56a2c6559e78520` | +| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.RequestOwnAvatarTextures_DoesNotThrow_AndMaintainsVersionGuard::test` | `AppearanceLiveTests.RequestOwnAvatarTextures_DoesNotThrow_AndMaintainsVersionGuard` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:254` | `Appearance, RequiresLiveServer` | `` | `tests/compat/tests/appearance_live_semantics.rs:154 (`request_own_avatar_textures_does_not_throw_and_maintains_version_guard`)` | `ignored-live` | `ee8420690fc9714411450beb5be5755b82ddf7ed0d69e9da88b3184339bea744` | +| `LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_MaxClothingLayers_Is60::test` | `AppearanceLiveTests.COF_MaxClothingLayers_Is60` | `` | `LibreMetaverse.Tests/AppearanceLiveTests.cs:289` | `Appearance, RequiresLiveServer` | `` | `tests/compat/tests/appearance_live_semantics.rs:179 (`cof_max_clothing_layers_is_60`)` | `ignored-live` | `aac1292781cb0a4cbf710535036fa6464065f72d1b2c5214a9b7dc918513e8cd` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableTypeToAssetType_BodypartsAndClothing_ReturnsExpected::test` | `AppearanceManagerTests.WearableTypeToAssetType_BodypartsAndClothing_ReturnsExpected` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:8` | `` | `` | `tests/compat/tests/appearance_semantics.rs:23 (`appearance_manager_wearable_type_to_asset_type_returns_expected`)` | `translated` | `6d0f0d09a6da8121ba828159a75ca1c1ce54329ec48060a6786aa8f807c13ec0` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndexToTextureIndex_Matches_BakeTypeToAgentTextureIndex::test` | `AppearanceManagerTests.BakeIndexToTextureIndex_Matches_BakeTypeToAgentTextureIndex` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:22` | `` | `` | `tests/compat/tests/appearance_semantics.rs:52 (`appearance_manager_bake_index_matches_agent_texture_index`)` | `translated` | `c559ea49314b157605346243713fd10480a10f9a97daffd9cac8acccbd39612b` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndex_ArrayLength_Equals_BAKED_TEXTURE_COUNT::test` | `AppearanceManagerTests.BakeIndex_ArrayLength_Equals_BAKED_TEXTURE_COUNT` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:33` | `` | `` | `tests/compat/tests/appearance_semantics.rs:66 (`appearance_manager_bake_index_array_length_matches_count`)` | `translated` | `b661ca888df5b7fd41e51dfd298fb6d5e30a3a848102006c109b9dc4fc0e165c` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Head_IncludesExpectedSlots::test` | `AppearanceManagerTests.BakeTypeToTextures_Head_IncludesExpectedSlots` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:39` | `` | `` | `tests/compat/tests/appearance_semantics.rs:75 (`appearance_manager_head_bake_includes_expected_slots`)` | `translated` | `44e03523f0e3f6691e527e014bfc38d9ca57c1d310e7cf2c6d7ae8a429a31e1d` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesExpectedSlots::test` | `AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesExpectedSlots` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:49` | `` | `` | `tests/compat/tests/appearance_semantics.rs:86 (`appearance_manager_upper_body_bake_includes_expected_slots`)` | `translated` | `fb7650becf6c01c1e7ffd731ac7b6c013957467110c7ed8d5bef9788ee9a5a16` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_LowerBody_Eyes_Skirt_Hair_IncludeExpected::test` | `AppearanceManagerTests.BakeTypeToTextures_LowerBody_Eyes_Skirt_Hair_IncludeExpected` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:59` | `` | `` | `tests/compat/tests/appearance_semantics.rs:97 (`appearance_manager_lower_eyes_skirt_hair_bakes_include_expected_slots`)` | `translated` | `fad2baeca74cab39305c8f599c5de5777b55c329738db5c55f58a09366870374` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.MorphLayerForBakeType_ReturnsExpectedIndices::test` | `AppearanceManagerTests.MorphLayerForBakeType_ReturnsExpectedIndices` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:78` | `` | `` | `tests/compat/tests/appearance_semantics.rs:117 (`appearance_manager_morph_layer_returns_expected_indices`)` | `translated` | `3051ccea9adec4f9ef824ce967c74e7708b62a2264b98ae22340eb8d1927c44f` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_HasExpectedDimensions_And_FirstLayerContainsShapeAndSkin::test` | `AppearanceManagerTests.WearableBakeMap_HasExpectedDimensions_And_FirstLayerContainsShapeAndSkin` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:87` | `` | `` | `tests/compat/tests/appearance_semantics.rs:142 (`appearance_manager_wearable_bake_map_has_expected_dimensions_and_first_layer`)` | `translated` | `42c072449d1819c956035d1f0290b90acc1e62b4e1e6309590d0cb6cb41bb375` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToAgentTextureIndex_ReturnsUnknown_ForInvalid::test` | `AppearanceManagerTests.BakeTypeToAgentTextureIndex_ReturnsUnknown_ForInvalid` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:95` | `` | `` | `tests/compat/tests/appearance_semantics.rs:151 (`appearance_manager_invalid_bake_type_returns_unknown_texture_index`)` | `translated` | `bc79d717462f06d498050182b6d116cea73f3bc173853f6d7894e3de88b70432` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BAKED_TEXTURE_COUNT_Is11::test` | `AppearanceManagerTests.BAKED_TEXTURE_COUNT_Is11` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:104` | `` | `` | `tests/compat/tests/appearance_semantics.rs:161 (`appearance_manager_baked_texture_count_is_eleven`)` | `translated` | `9d34c333f7e143d25964553dedaa1bae79c20e1aead331626f449a3894e31e5b` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakedTextureHash_Has11Entries::test` | `AppearanceManagerTests.BakedTextureHash_Has11Entries` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:110` | `` | `` | `tests/compat/tests/appearance_semantics.rs:167 (`appearance_manager_baked_texture_hash_has_eleven_entries`)` | `translated` | `7b26852cc8c1d7257e3e5f6f936f3870e0a06845f5809cc3000d67eb7590a49e` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakedTextureHash_AllEntriesNonZero::test` | `AppearanceManagerTests.BakedTextureHash_AllEntriesNonZero` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:116` | `` | `` | `tests/compat/tests/appearance_semantics.rs:173 (`appearance_manager_baked_texture_hash_entries_are_nonzero`)` | `translated` | `dc7a4010cfc2f975c0624bc5fbceed414297b1139f734d79786b2bb20d943553` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_Has11Rows::test` | `AppearanceManagerTests.WearableBakeMap_Has11Rows` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:123` | `` | `` | `tests/compat/tests/appearance_semantics.rs:182 (`appearance_manager_wearable_bake_map_has_eleven_rows`)` | `translated` | `db6016bcdc90f21095f0723556489ec174603783dc40805b56123e25d7a83312` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_ExtendedRows_AreAllInvalid::test` | `AppearanceManagerTests.WearableBakeMap_ExtendedRows_AreAllInvalid` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:129` | `` | `` | `tests/compat/tests/appearance_semantics.rs:188 (`appearance_manager_extended_wearable_bake_rows_are_invalid`)` | `translated` | `9b36d72c16980dc3780137dda47afa9cd79ef3a2be0d8ccb20723e1e1ac67f41` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndexToTextureIndex_ExtendedBakes_MatchAgentTextureIndex::test` | `AppearanceManagerTests.BakeIndexToTextureIndex_ExtendedBakes_MatchAgentTextureIndex` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:140` | `` | `` | `tests/compat/tests/appearance_semantics.rs:199 (`appearance_manager_extended_bake_indices_match_agent_texture_indices`)` | `translated` | `c331e94827930443aa3ca327374ec562fc9a294fce3304d7cba9f7e7859e43d3` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Head_IncludesUniversalTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_Head_IncludesUniversalTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:154` | `` | `` | `tests/compat/tests/appearance_semantics.rs:213 (`appearance_manager_head_bake_includes_universal_tattoo`)` | `translated` | `578423fedcd5e4ed4e53b3d7d80c24a9c8ce30b35db13a09bdf8f47312b7da87` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesUniversalTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesUniversalTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:161` | `` | `` | `tests/compat/tests/appearance_semantics.rs:221 (`appearance_manager_upper_body_bake_includes_universal_tattoo`)` | `translated` | `6d95989bf8380348714a0ba9ae4c04a85ea64ae47ffc94aaa841ce64810abebd` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_LowerBody_IncludesUniversalTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_LowerBody_IncludesUniversalTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:168` | `` | `` | `tests/compat/tests/appearance_semantics.rs:229 (`appearance_manager_lower_body_bake_includes_universal_tattoo`)` | `translated` | `a21524c69c8bd32610e8cfa405a3cb3eae0a48add62d40a281f9311ebe739ffb` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Eyes_IncludesTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_Eyes_IncludesTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:175` | `` | `` | `tests/compat/tests/appearance_semantics.rs:237 (`appearance_manager_eyes_bake_includes_tattoo`)` | `translated` | `606c6bad5f911d070c5d8126004d5a1e1dfd4887a115e8dd1f69f2d36bf53ac6` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Skirt_IncludesTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_Skirt_IncludesTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:182` | `` | `` | `tests/compat/tests/appearance_semantics.rs:245 (`appearance_manager_skirt_bake_includes_tattoo`)` | `translated` | `7a38a59414bc74221bfbdc8889ef60714a4c6b4f26c9bd47e8f41bfa5a5da811` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Hair_IncludesHairTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_Hair_IncludesHairTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:189` | `` | `` | `tests/compat/tests/appearance_semantics.rs:253 (`appearance_manager_hair_bake_includes_hair_tattoo`)` | `translated` | `c9a8c6a0dce259103fb466eb571785eb3c9395c8fa144f1a02d42ae73c0d8253` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedLeftArm_ContainsLeftArmTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_BakedLeftArm_ContainsLeftArmTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:198` | `` | `` | `tests/compat/tests/appearance_semantics.rs:261 (`appearance_manager_left_arm_bake_contains_only_left_arm_tattoo`)` | `translated` | `bbbb01e8e009489967b36f22d83c6f326e295b9aabcbb58c00d82bab4e803f66` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedLeftLeg_ContainsLeftLegTattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_BakedLeftLeg_ContainsLeftLegTattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:206` | `` | `` | `tests/compat/tests/appearance_semantics.rs:270 (`appearance_manager_left_leg_bake_contains_left_leg_tattoo`)` | `translated` | `9d2a25a6ed9cd5a99c206a0fc6d66389959fc5e30dd036302a73fb0b500880b5` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux1_ContainsAux1Tattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_BakedAux1_ContainsAux1Tattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:213` | `` | `` | `tests/compat/tests/appearance_semantics.rs:278 (`appearance_manager_aux1_bake_contains_aux1_tattoo`)` | `translated` | `b9b0b56e1d4d552f2b43e5e570f3fc1a1f8651d8e77055fabcc35b37b5a9f21d` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux2_ContainsAux2Tattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_BakedAux2_ContainsAux2Tattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:220` | `` | `` | `tests/compat/tests/appearance_semantics.rs:286 (`appearance_manager_aux2_bake_contains_aux2_tattoo`)` | `translated` | `6be4bdbf667cadd673afbb1dafa8f4c1844ac9c34464fe5bbbc62f8ebe705b4d` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux3_ContainsAux3Tattoo::test` | `AppearanceManagerTests.BakeTypeToTextures_BakedAux3_ContainsAux3Tattoo` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:227` | `` | `` | `tests/compat/tests/appearance_semantics.rs:294 (`appearance_manager_aux3_bake_contains_aux3_tattoo`)` | `translated` | `5d7530c72824f8baf6044fb122d224da61fff1b6cfbf3114ac2f24b1418675d2` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.MorphLayerForBakeType_ExtendedBakes_ReturnTattooSlots::test` | `AppearanceManagerTests.MorphLayerForBakeType_ExtendedBakes_ReturnTattooSlots` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:234` | `` | `` | `tests/compat/tests/appearance_semantics.rs:302 (`appearance_manager_extended_morph_layers_return_tattoo_slots`)` | `translated` | `7f05dc0b59adce3b46c82f7415e91e4c945963d918ad6ad1f0e5c9569ee2220e` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.TextureProvider_Default_IsGridClientBakingTextureProvider::test` | `AppearanceManagerTests.TextureProvider_Default_IsGridClientBakingTextureProvider` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:251` | `` | `` | `tests/compat/tests/appearance_semantics.rs:319 (`appearance_manager_default_texture_provider_is_grid_client_provider`)` | `translated` | `afdfbf516988c4ba35dfdb42158218a4815e1b8d146ef958225cf0fe73dfc3a9` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.TextureProvider_CanBeReplaced::test` | `AppearanceManagerTests.TextureProvider_CanBeReplaced` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:259` | `` | `` | `tests/compat/tests/appearance_semantics.rs:330 (`appearance_manager_texture_provider_can_be_replaced`)` | `translated` | `e9c27d5b8717fdac1a9f3d22930709c0dee326909cb3c777b769b0ed2dc35b0c` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.LastUpdateReceivedCOFVersion_InitialValue_IsMinusOne::test` | `AppearanceManagerTests.LastUpdateReceivedCOFVersion_InitialValue_IsMinusOne` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:270` | `` | `` | `tests/compat/tests/appearance_semantics.rs:342 (`appearance_manager_initial_cof_version_is_minus_one`)` | `translated` | `f43c2d8c99cb597ba7a5d4c87d4585560e888931d84741de2882d05ab17b310a` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_HigherVersion_Updates::test` | `AppearanceManagerTests.UpdateLastReceivedCOFVersion_HigherVersion_Updates` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:277` | `` | `` | `tests/compat/tests/appearance_semantics.rs:349 (`appearance_manager_higher_cof_version_updates`)` | `translated` | `62d82f9ec6d12ec9354f02e7b7e86adb29ccecb8b104ed39a66937495bab1438` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_LowerVersion_DoesNotUpdate::test` | `AppearanceManagerTests.UpdateLastReceivedCOFVersion_LowerVersion_DoesNotUpdate` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:285` | `` | `` | `tests/compat/tests/appearance_semantics.rs:360 (`appearance_manager_lower_cof_version_does_not_update`)` | `translated` | `ec5831c7d2c03132d3c7e50f6c0d088ca57f2726b7caf77ac240a9d5e92a77b6` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_SameVersion_DoesNotChange::test` | `AppearanceManagerTests.UpdateLastReceivedCOFVersion_SameVersion_DoesNotChange` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:294` | `` | `` | `tests/compat/tests/appearance_semantics.rs:375 (`appearance_manager_same_cof_version_does_not_change`)` | `translated` | `2e607b33bb8be04e6710e26fe62510f0634900579260accd9ffd720023636deb` | +| `LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_MonotonicallyIncreasing_TracksPeak::test` | `AppearanceManagerTests.UpdateLastReceivedCOFVersion_MonotonicallyIncreasing_TracksPeak` | `` | `LibreMetaverse.Tests/AppearanceManagerTests.cs:303` | `` | `` | `tests/compat/tests/appearance_semantics.rs:390 (`appearance_manager_cof_version_tracks_peak`)` | `translated` | `5789831f288823729299944a8796c67348b932570392f59bf8b6d562cfa1c90c` | +| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_EmptyArray_ReturnsEmptyDictionary::test` | `AppearanceTests.DecodeVisualParams_EmptyArray_ReturnsEmptyDictionary` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:47` | `Appearance` | `` | `tests/compat/tests/appearance_visual_semantics.rs:35 (`decode_visual_params_empty_array_returns_empty_dictionary`)` | `translated` | `644f412b90d429032a9273d24e89333a1694dc88eec3429a98acf00588315ec5` | +| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_CountMatchesGroup0ParamCount::test` | `AppearanceTests.DecodeVisualParams_CountMatchesGroup0ParamCount` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:55` | `Appearance` | `` | `tests/compat/tests/appearance_visual_semantics.rs:44 (`decode_visual_params_count_matches_group0_param_count`)` | `translated` | `6a9acc7130e3394476392b86334a0ce1cb82253bea2b37ac33cf90a426c7af40` | +| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_RoundTrip_DefaultValues::test` | `AppearanceTests.DecodeVisualParams_RoundTrip_DefaultValues` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:70` | `Appearance` | `` | `tests/compat/tests/appearance_visual_semantics.rs:54 (`decode_visual_params_round_trip_default_values`)` | `translated` | `a0c0727a50b414522f875709240f4056547cb699c6ec1981fbef15488784daf5` | +| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_KeysAreGroup0ParamIDs::test` | `AppearanceTests.DecodeVisualParams_KeysAreGroup0ParamIDs` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:105` | `Appearance` | `` | `tests/compat/tests/appearance_visual_semantics.rs:102 (`decode_visual_params_keys_are_group0_param_ids`)` | `translated` | `fc4fd3059b01a319af2946ea0c289120a4c2609e7e9a96ac26c039c5042b8b4c` | +| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_TruncatedArray_ReturnsPartialResult::test` | `AppearanceTests.DecodeVisualParams_TruncatedArray_ReturnsPartialResult` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:118` | `Appearance` | `` | `tests/compat/tests/appearance_visual_semantics.rs:113 (`decode_visual_params_truncated_array_returns_partial_result`)` | `translated` | `b017127549e186b3cf85b9fe0cc09811ea1d00efa44e3d863292033cb0691d13` | +| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_MinValue_DecodesNearParamMin::test` | `AppearanceTests.DecodeVisualParams_MinValue_DecodesNearParamMin` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:133` | `Appearance` | `` | `tests/compat/tests/appearance_visual_semantics.rs:123 (`decode_visual_params_min_value_decodes_near_param_min`)` | `translated` | `80e0fd97979f91c879add1fc3142a0b619a405e4977120db1d5f42a11a71f3f5` | +| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_MaxValue_DecodesNearParamMax::test` | `AppearanceTests.DecodeVisualParams_MaxValue_DecodesNearParamMax` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:149` | `Appearance` | `` | `tests/compat/tests/appearance_visual_semantics.rs:141 (`decode_visual_params_max_value_decodes_near_param_max`)` | `translated` | `31937bc9080b18be4aa98ea44bf73f929ba7862b621406b03c16a4651542f302` | +| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:168` | `Appearance` | `` | `tests/compat/tests/appearance_visual_semantics.rs:159 (`appearance_event_args_decode_visual_params_empty_list_returns_empty_dictionary`)` | `translated` | `af99909259d531024895ce7ea325b49927a12daa886a35eab3d52e3f8fc76921` | +| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:176` | `Appearance` | `` | `tests/compat/tests/appearance_visual_semantics.rs:166 (`appearance_event_args_decode_visual_params_round_trip_default_values`)` | `translated` | `0aec57fab35764525195e6c0e08a63ff10a467be684295381731c04e836539b5` | +| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:199` | `Appearance` | `` | `tests/compat/tests/appearance_visual_semantics.rs:188 (`appearance_event_args_decode_visual_params_matches_avatar_decode_visual_params`)` | `translated` | `ff87dd3a506027ad248006b3b55d85a18b0810bc5b4e3a72eb81d31ebbe4184a` | | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_OverrideToDefault_IsNudgedOffDefault::test` | `AssetMaterialOverrideTests.SetBaseColorFactor_OverrideToDefault_IsNudgedOffDefault` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:43` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:117 (`base_color_override_to_default_is_nudged`)` | `translated` | `df553fd4df83e48d4dd74cdd8aa15a737ea3a416bcad802f7110bbfe79928a31` | | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_NotOverride_LeavesExactDefaultUnchanged::test` | `AssetMaterialOverrideTests.SetBaseColorFactor_NotOverride_LeavesExactDefaultUnchanged` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:52` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:131 (`base_color_non_override_keeps_default`)` | `translated` | `fec94fcfac0f36cc5813ed087a30e04fcc9815bc02072ea3f5dd282b8698a89c` | | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetMetallicFactor_OverrideToOne_ClampsBelowDefault::test` | `AssetMaterialOverrideTests.SetMetallicFactor_OverrideToOne_ClampsBelowDefault` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:61` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:145 (`metallic_override_to_one_clamps_below_default`)` | `translated` | `7fcee795160428082f6e579881867c7b6c83f31549077fc28a46d18c75c485c9` | @@ -120,25 +120,25 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case` | `LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_AcceptsHigherVersion::test` | `AvatarManagerTests.UpdateLastReceivedCOFVersion_AcceptsHigherVersion` | `` | `LibreMetaverse.Tests/AvatarManagerTests.cs:55` | `Appearance` | `` | `crates/libremetaverse/src/avatar_animesh_semantics.rs:597 (`appearance_manager_update_last_received_cof_version_accepts_higher_version`)` | `translated` | `3656364491dcd7a05c868b11ea0d8be48609d10c6054b9696f54cbac10cfe6df` | | `LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_RejectsLowerVersion::test` | `AvatarManagerTests.UpdateLastReceivedCOFVersion_RejectsLowerVersion` | `` | `LibreMetaverse.Tests/AvatarManagerTests.cs:68` | `Appearance` | `` | `crates/libremetaverse/src/avatar_animesh_semantics.rs:612 (`appearance_manager_update_last_received_cof_version_rejects_lower_version`)` | `translated` | `f4a827fcace9d50306a8c375183e056140996d2a39b02e4dd12fc6cc79e5d0f0` | | `LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_EqualVersion_IsNotAdvanced::test` | `AvatarManagerTests.UpdateLastReceivedCOFVersion_EqualVersion_IsNotAdvanced` | `` | `LibreMetaverse.Tests/AvatarManagerTests.cs:81` | `Appearance` | `` | `crates/libremetaverse/src/avatar_animesh_semantics.rs:627 (`appearance_manager_update_last_received_cof_version_equal_version_is_not_advanced`)` | `translated` | `e3db5962cdad5e18ad27a36d0d7cca2d471e96df7513315d0f34bb0db99d723c` | -| `LibreMetaverse.Tests/BakerTests.cs::BakerTests.Bake_GrayscaleLayerTexture_DoesNotThrow::test` | `BakerTests.Bake_GrayscaleLayerTexture_DoesNotThrow` | `` | `LibreMetaverse.Tests/BakerTests.cs:15` | `Imaging` | `` | `pending source translation` | `pending` | `c3fc1d2c16b5f8d69678a6cf05a3a275e0b657f3a6e7f6788f350f2a107200b3` | -| `LibreMetaverse.Tests/BakerTests.cs::BakerTests.Bake_GrayscaleHairTextureNoSkin_DoesNotThrow::test` | `BakerTests.Bake_GrayscaleHairTextureNoSkin_DoesNotThrow` | `` | `LibreMetaverse.Tests/BakerTests.cs:37` | `Imaging` | `` | `pending source translation` | `pending` | `e48b737d9138e63cda98b5e80bf561a80d1dab5de78901ac9e1bb320ca281eb6` | -| `LibreMetaverse.Tests/BakerTests.cs::BakerTests.LoadResourceLayer_HeadColorTga_LoadsFromCharacterDirectory::test` | `BakerTests.LoadResourceLayer_HeadColorTga_LoadsFromCharacterDirectory` | `` | `LibreMetaverse.Tests/BakerTests.cs:62` | `Imaging` | `` | `pending source translation` | `pending` | `5a9b80005a51f04a227ca392218725d50704d038783e04fc49bb955997c22e76` | -| `LibreMetaverse.Tests/BakerTests.cs::BakerTests.LoadResourceLayer_CachedResourceNotCorruptedByCallerMutation::test` | `BakerTests.LoadResourceLayer_CachedResourceNotCorruptedByCallerMutation` | `` | `LibreMetaverse.Tests/BakerTests.cs:69` | `Imaging` | `` | `pending source translation` | `pending` | `18b458bbd7bb13d2b68711f7d3495193f1b4edac9c1f776930ad2c172f97cd49` | -| `LibreMetaverse.Tests/BakerTests.cs::BakerTests.ResizeToBakeDimensions_SourceSmallerInOneAxisOnly_ScalesRatherThanTiles::test` | `BakerTests.ResizeToBakeDimensions_SourceSmallerInOneAxisOnly_ScalesRatherThanTiles` | `` | `LibreMetaverse.Tests/BakerTests.cs:93` | `Imaging` | `` | `pending source translation` | `pending` | `ce5bd346b48cb19dbc0248403eafefb07309d4e05e675e9a02db5a46d7cd65ff` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_ClothingWearable_ReturnsWearableTypeAndZeroLayer::test` | `BatchLinkTests.GetCofLinkDescription_ClothingWearable_ReturnsWearableTypeAndZeroLayer` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:84` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `898a14ff28d953a58a01c3a0e5d9d9fcbbe61376a33fdc5caf20268aaac76242` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_BodyPartShape_ReturnsEmpty::test` | `BatchLinkTests.GetCofLinkDescription_BodyPartShape_ReturnsEmpty` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:98` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `4f009136d265da91afb9eafd060faf459f6c510ca0502a33ce9e128d241f9bd1` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_AttachmentObject_ReturnsEmpty::test` | `BatchLinkTests.GetCofLinkDescription_AttachmentObject_ReturnsEmpty` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:112` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `a838329a7a23081a4022671bc794e7e706c9ab7da51598280a8befbb824d336d` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_AllBodyPartTypes_ReturnEmpty::test` | `BatchLinkTests.GetCofLinkDescription_AllBodyPartTypes_ReturnEmpty` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:125` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `aa057d55a3b34846567efe382b6e090b5d91935a4ffa6166093b34870ee5da23` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_SuccessResponse_ReturnsAllParsedLinks::test` | `BatchLinkTests.CreateInventoryLinksAsync_SuccessResponse_ReturnsAllParsedLinks` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:146` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `416a1f023a2ae3b883c4c49f0a774c84a2f1a3562abb3ec848f86fe53d929f63` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_ServerError_ThrowsHttpRequestException::test` | `BatchLinkTests.CreateInventoryLinksAsync_ServerError_ThrowsHttpRequestException` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:162` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `53e3956676e546ab8d69bb63a071028b29151013b6362c39f37516a36cad6641` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_NoCapability_ReturnsEmptyList::test` | `BatchLinkTests.CreateInventoryLinksAsync_NoCapability_ReturnsEmptyList` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:173` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `d9cd50e620f69e40daab52d175886f3052d3741c5d39ef42549283ff6b2b7b44` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_EmptyList_InvokesCallbackWithTrueWithoutHttpCall::test` | `BatchLinkTests.CreateLinksAsync_EmptyList_InvokesCallbackWithTrueWithoutHttpCall` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:183` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `e7ba88352761ca9fd3e956233e3743689b41f47bba09bfbb463c66f132273c70` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_SendsSingleBatchPost::test` | `BatchLinkTests.CreateLinksAsync_AisAvailable_SendsSingleBatchPost` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:198` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `369d99d37dca818991aca94d6ff9d7881874d74797c7a8b705c5925723e383db` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_PayloadContainsCorrectFieldsForEachLink::test` | `BatchLinkTests.CreateLinksAsync_AisAvailable_PayloadContainsCorrectFieldsForEachLink` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:219` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `b7629c3d061fe297e1c1c4f41ca4f8ce9cdeb2764525421be7bdc553a5f83063` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_CallbackTrueOnSuccess::test` | `BatchLinkTests.CreateLinksAsync_AisAvailable_CallbackTrueOnSuccess` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:253` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `22dc685f896ec0415e56c1c01846ad90a9757cf5d9a0ed0d3706a76ee325d92d` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_ServerError_CallbackFalse::test` | `BatchLinkTests.CreateLinksAsync_ServerError_CallbackFalse` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:270` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `5fd9b2967bc61933cea80e01c55ee809f6ade246f10fb4048ec2668e0cc71dbf` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCategoryLinks_UsesGetWithNoTidParameter::test` | `BatchLinkTests.GetCategoryLinks_UsesGetWithNoTidParameter` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:289` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `3079c03ab4b14d4ac10a410b3685f1593ea267c52de7b6323f9e8e8387314f29` | -| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCategory_UsesGetWithNoTidParameter::test` | `BatchLinkTests.GetCategory_UsesGetWithNoTidParameter` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:304` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `98cd0aa58ce9640263d07aecd45337113b07acfc76640d17c5812abe05d35c73` | +| `LibreMetaverse.Tests/BakerTests.cs::BakerTests.Bake_GrayscaleLayerTexture_DoesNotThrow::test` | `BakerTests.Bake_GrayscaleLayerTexture_DoesNotThrow` | `` | `LibreMetaverse.Tests/BakerTests.cs:15` | `Imaging` | `` | `crates/libremetaverse/src/appearance_baker_semantics.rs:30 (`bake_grayscale_layer_texture_does_not_throw`)` | `translated` | `c3fc1d2c16b5f8d69678a6cf05a3a275e0b657f3a6e7f6788f350f2a107200b3` | +| `LibreMetaverse.Tests/BakerTests.cs::BakerTests.Bake_GrayscaleHairTextureNoSkin_DoesNotThrow::test` | `BakerTests.Bake_GrayscaleHairTextureNoSkin_DoesNotThrow` | `` | `LibreMetaverse.Tests/BakerTests.cs:37` | `Imaging` | `` | `crates/libremetaverse/src/appearance_baker_semantics.rs:41 (`bake_grayscale_hair_texture_no_skin_does_not_throw`)` | `translated` | `e48b737d9138e63cda98b5e80bf561a80d1dab5de78901ac9e1bb320ca281eb6` | +| `LibreMetaverse.Tests/BakerTests.cs::BakerTests.LoadResourceLayer_HeadColorTga_LoadsFromCharacterDirectory::test` | `BakerTests.LoadResourceLayer_HeadColorTga_LoadsFromCharacterDirectory` | `` | `LibreMetaverse.Tests/BakerTests.cs:62` | `Imaging` | `` | `crates/libremetaverse/src/appearance_baker_semantics.rs:55 (`load_resource_layer_head_color_tga_loads_from_character_directory`)` | `translated` | `5a9b80005a51f04a227ca392218725d50704d038783e04fc49bb955997c22e76` | +| `LibreMetaverse.Tests/BakerTests.cs::BakerTests.LoadResourceLayer_CachedResourceNotCorruptedByCallerMutation::test` | `BakerTests.LoadResourceLayer_CachedResourceNotCorruptedByCallerMutation` | `` | `LibreMetaverse.Tests/BakerTests.cs:69` | `Imaging` | `` | `crates/libremetaverse/src/appearance_baker_semantics.rs:65 (`load_resource_layer_cached_resource_not_corrupted_by_caller_mutation`)` | `translated` | `18b458bbd7bb13d2b68711f7d3495193f1b4edac9c1f776930ad2c172f97cd49` | +| `LibreMetaverse.Tests/BakerTests.cs::BakerTests.ResizeToBakeDimensions_SourceSmallerInOneAxisOnly_ScalesRatherThanTiles::test` | `BakerTests.ResizeToBakeDimensions_SourceSmallerInOneAxisOnly_ScalesRatherThanTiles` | `` | `LibreMetaverse.Tests/BakerTests.cs:93` | `Imaging` | `` | `crates/libremetaverse/src/appearance_baker_semantics.rs:84 (`resize_to_bake_dimensions_source_smaller_in_one_axis_only_scales_rather_than_tiles`)` | `translated` | `ce5bd346b48cb19dbc0248403eafefb07309d4e05e675e9a02db5a46d7cd65ff` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_ClothingWearable_ReturnsWearableTypeAndZeroLayer::test` | `BatchLinkTests.GetCofLinkDescription_ClothingWearable_ReturnsWearableTypeAndZeroLayer` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:84` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:151 (`get_cof_link_description_clothing_wearable_returns_wearable_type_and_zero_layer`)` | `translated` | `898a14ff28d953a58a01c3a0e5d9d9fcbbe61376a33fdc5caf20268aaac76242` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_BodyPartShape_ReturnsEmpty::test` | `BatchLinkTests.GetCofLinkDescription_BodyPartShape_ReturnsEmpty` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:98` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:160 (`get_cof_link_description_body_part_shape_returns_empty`)` | `translated` | `4f009136d265da91afb9eafd060faf459f6c510ca0502a33ce9e128d241f9bd1` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_AttachmentObject_ReturnsEmpty::test` | `BatchLinkTests.GetCofLinkDescription_AttachmentObject_ReturnsEmpty` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:112` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:169 (`get_cof_link_description_attachment_object_returns_empty`)` | `translated` | `a838329a7a23081a4022671bc794e7e706c9ab7da51598280a8befbb824d336d` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_AllBodyPartTypes_ReturnEmpty::test` | `BatchLinkTests.GetCofLinkDescription_AllBodyPartTypes_ReturnEmpty` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:125` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:181 (`get_cof_link_description_all_body_part_types_return_empty`)` | `translated` | `aa057d55a3b34846567efe382b6e090b5d91935a4ffa6166093b34870ee5da23` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_SuccessResponse_ReturnsAllParsedLinks::test` | `BatchLinkTests.CreateInventoryLinksAsync_SuccessResponse_ReturnsAllParsedLinks` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:146` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:201 (`create_inventory_links_success_response_returns_all_parsed_links`)` | `translated` | `416a1f023a2ae3b883c4c49f0a774c84a2f1a3562abb3ec848f86fe53d929f63` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_ServerError_ThrowsHttpRequestException::test` | `BatchLinkTests.CreateInventoryLinksAsync_ServerError_ThrowsHttpRequestException` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:162` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:234 (`create_inventory_links_server_error_throws_http_request_exception`)` | `translated` | `53e3956676e546ab8d69bb63a071028b29151013b6362c39f37516a36cad6641` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_NoCapability_ReturnsEmptyList::test` | `BatchLinkTests.CreateInventoryLinksAsync_NoCapability_ReturnsEmptyList` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:173` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:253 (`create_inventory_links_no_capability_returns_empty_list`)` | `translated` | `d9cd50e620f69e40daab52d175886f3052d3741c5d39ef42549283ff6b2b7b44` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_EmptyList_InvokesCallbackWithTrueWithoutHttpCall::test` | `BatchLinkTests.CreateLinksAsync_EmptyList_InvokesCallbackWithTrueWithoutHttpCall` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:183` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:266 (`create_links_empty_list_invokes_callback_with_true_without_http_call`)` | `translated` | `e7ba88352761ca9fd3e956233e3743689b41f47bba09bfbb463c66f132273c70` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_SendsSingleBatchPost::test` | `BatchLinkTests.CreateLinksAsync_AisAvailable_SendsSingleBatchPost` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:198` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:285 (`create_links_ais_available_sends_single_batch_post`)` | `translated` | `369d99d37dca818991aca94d6ff9d7881874d74797c7a8b705c5925723e383db` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_PayloadContainsCorrectFieldsForEachLink::test` | `BatchLinkTests.CreateLinksAsync_AisAvailable_PayloadContainsCorrectFieldsForEachLink` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:219` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:327 (`create_links_ais_available_payload_contains_correct_fields_for_each_link`)` | `translated` | `b7629c3d061fe297e1c1c4f41ca4f8ce9cdeb2764525421be7bdc553a5f83063` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_CallbackTrueOnSuccess::test` | `BatchLinkTests.CreateLinksAsync_AisAvailable_CallbackTrueOnSuccess` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:253` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:373 (`create_links_ais_available_callback_true_on_success`)` | `translated` | `22dc685f896ec0415e56c1c01846ad90a9757cf5d9a0ed0d3706a76ee325d92d` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_ServerError_CallbackFalse::test` | `BatchLinkTests.CreateLinksAsync_ServerError_CallbackFalse` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:270` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:401 (`create_links_server_error_callback_false`)` | `translated` | `5fd9b2967bc61933cea80e01c55ee809f6ade246f10fb4048ec2668e0cc71dbf` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCategoryLinks_UsesGetWithNoTidParameter::test` | `BatchLinkTests.GetCategoryLinks_UsesGetWithNoTidParameter` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:289` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:423 (`get_category_links_uses_get_with_no_tid_parameter`)` | `translated` | `3079c03ab4b14d4ac10a410b3685f1593ea267c52de7b6323f9e8e8387314f29` | +| `LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCategory_UsesGetWithNoTidParameter::test` | `BatchLinkTests.GetCategory_UsesGetWithNoTidParameter` | `` | `LibreMetaverse.Tests/BatchLinkTests.cs:304` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `crates/libremetaverse/src/batch_link_internal_semantics.rs:444 (`get_category_uses_get_with_no_tid_parameter`)` | `translated` | `98cd0aa58ce9640263d07aecd45337113b07acfc76640d17c5812abe05d35c73` | | `LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.HelperFunctions::test` | `BinarySDTests.HelperFunctions` | `` | `LibreMetaverse.Tests/BinaryLLSDTests.cs:55` | `` | `` | `tests/compat/tests/structured_data.rs:183 (`binary_helper_functions`)` | `translated` | `2e76ce199c2d56677831b18d049db19098e36a3a6c648785450e30b457833b03` | | `LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.DeserializeUndef::test` | `BinarySDTests.DeserializeUndef` | `` | `LibreMetaverse.Tests/BinaryLLSDTests.cs:104` | `` | `` | `tests/compat/tests/structured_data.rs:219 (`binary_deserialize_undef`)` | `translated` | `9bd23543dfef3ad9ac7df278ad70f4d115ee429aea1575ca4f7ae81ac42d6d5c` | | `LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.SerializeUndef::test` | `BinarySDTests.SerializeUndef` | `` | `LibreMetaverse.Tests/BinaryLLSDTests.cs:111` | `` | `` | `tests/compat/tests/structured_data.rs:227 (`binary_serialize_undef`)` | `translated` | `e40b444801b08d08b1df4817855f8965d44302c77bc544bc06745a5bd41af7e3` | @@ -173,50 +173,50 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case` | `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.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/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException::test` | `CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:60` | `` | `` | `pending source translation` | `pending` | `243079029ec81f92ffbc587007a2421389963f72c7843786c5b9a8634a7ddca3` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow::test` | `CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:67` | `` | `` | `pending source translation` | `pending` | `1d0daac0bfa091bc3c3bffddc32a1511295dd7101f8ab5dfbf305b13b9ac7405` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow::test` | `CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:77` | `` | `` | `pending source translation` | `pending` | `124b41c342a295f02e9d5991d1dead0ff3e9a780f96424b88f75117ca206460b` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.MaxClothingLayers_Returns60::test` | `CurrentOutfitFolderTests.MaxClothingLayers_Returns60` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:88` | `` | `` | `pending source translation` | `pending` | `e35e779b342fdb54bb7f5b2061f70c35ccc3f7f9ba87f48b2697f24c10f94397` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.COF_InitiallyNull::test` | `CurrentOutfitFolderTests.COF_InitiallyNull` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:98` | `` | `` | `pending source translation` | `pending` | `2dee4e58f3f53e50c5389ba0594ea0b063af55871eefae49e99bdd4b5c28e552` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.AddPolicy_WithValidPolicy_ReturnsAddedPolicy::test` | `CurrentOutfitFolderTests.AddPolicy_WithValidPolicy_ReturnsAddedPolicy` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:108` | `` | `` | `pending source translation` | `pending` | `747db5d674a6cb0bc54bcb9d32501d5bab49e0df5e5e39f3781f88d5100ed244` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.RemovePolicy_WithValidPolicy_DoesNotThrow::test` | `CurrentOutfitFolderTests.RemovePolicy_WithValidPolicy_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:122` | `` | `` | `pending source translation` | `pending` | `41f61b917da0410be01b346644a76bc9c800f78d1e1ba6ef805b14cea1b4d00d` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow::test` | `CurrentOutfitFolderTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:135` | `` | `` | `pending source translation` | `pending` | `4add41578d3d5340618cb29ed6969b84c5c3a80e6da09ccb03bc6872a6b6689a` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.ResolveInventoryLink_WithNonLinkItem_ReturnsSameItem::test` | `CurrentOutfitFolderTests.ResolveInventoryLink_WithNonLinkItem_ReturnsSameItem` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:147` | `` | `` | `pending source translation` | `pending` | `7430a64883f3938afe7da1b126e4ee460cbf2485e2d51035273b4ca8fd150960` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.ResolveInventoryLink_WithLinkItemNotInStore_ReturnsNull::test` | `CurrentOutfitFolderTests.ResolveInventoryLink_WithLinkItemNotInStore_ReturnsNull` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:165` | `` | `` | `pending source translation` | `pending` | `21e0dae8c038d2381eef736ad30d48fc0247e0a55b86e75de02982290a3a9bd0` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithNoNameValues_ReturnsZero::test` | `CurrentOutfitFolderTests.GetAttachmentItemID_WithNoNameValues_ReturnsZero` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:195` | `` | `` | `pending source translation` | `pending` | `c9e017a587c37b694484feda4fab81ef7f2bb098bbf8f96f3cefbb21f1a568d8` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithAttachItemID_ReturnsCorrectUUID::test` | `CurrentOutfitFolderTests.GetAttachmentItemID_WithAttachItemID_ReturnsCorrectUUID` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:208` | `` | `` | `pending source translation` | `pending` | `23e6be11056b93d75424c23030e1d2082545f686d12c0aa14f66991664e347e8` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithoutAttachItemID_ReturnsZero::test` | `CurrentOutfitFolderTests.GetAttachmentItemID_WithoutAttachItemID_ReturnsZero` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:226` | `` | `` | `pending source translation` | `pending` | `7ee12fc59c8b5e5cb074e18c2af48c0f1b1d7be0937db65a7056e29e114b691f` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.IsObjectDescendentOf_WithZeroParentId_ReturnsFalse::test` | `CurrentOutfitFolderTests.IsObjectDescendentOf_WithZeroParentId_ReturnsFalse` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:243` | `` | `` | `pending source translation` | `pending` | `a878c220510aacbf61ebfb192952e26d96343312fcf9648e57e270e29aaa9d5d` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.IsObjectDescendentOf_WithDirectParent_ReturnsTrue::test` | `CurrentOutfitFolderTests.IsObjectDescendentOf_WithDirectParent_ReturnsTrue` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:257` | `` | `` | `pending source translation` | `pending` | `ac3af5edef5ee67058a91a990bfde38e616d00919b0cd8e0b5f7345f7d8dab6c` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.FetchParent_WithZeroParentUUID_ReturnsNull::test` | `CurrentOutfitFolderTests.FetchParent_WithZeroParentUUID_ReturnsNull` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:275` | `` | `` | `pending source translation` | `pending` | `ee6cc0cc9a48ec07afb8bd7fa8e1c53c2db258be11e2848ee5752e41eb34e45a` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetCurrentOutfitLinks_WithNullCOF_ReturnsEmptyList::test` | `CurrentOutfitFolderTests.GetCurrentOutfitLinks_WithNullCOF_ReturnsEmptyList` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:292` | `` | `` | `pending source translation` | `pending` | `5c0d475ccd4423bc099eb141f36061fdfaa589fd36d27c907d03a9d0be3f6f48` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_WithValidPolicy_ReturnsThis::test` | `CompositeCurrentOutfitPolicyTests.AddPolicy_WithValidPolicy_ReturnsThis` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:330` | `` | `` | `pending source translation` | `pending` | `31c1829eaa2b82b498cc1eaea131d2e34d1a0b5620be24f4da853c62c49807cc` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_WithNullPolicy_ThrowsArgumentNullException::test` | `CompositeCurrentOutfitPolicyTests.AddPolicy_WithNullPolicy_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:338` | `` | `` | `pending source translation` | `pending` | `6a111f0ad2e91c8566b5459939e3ecc76282cd033bb8d6483e1672c36891e597` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_MultiplePolicies_AllAreConsulted::test` | `CompositeCurrentOutfitPolicyTests.AddPolicy_MultiplePolicies_AllAreConsulted` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:345` | `` | `` | `pending source translation` | `pending` | `1767ee3dee6b07e71f10b52613962e211fcf9906a45d12188f517cf751896f24` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_SamePolicyTwice_OnlyAddsOnce::test` | `CompositeCurrentOutfitPolicyTests.AddPolicy_SamePolicyTwice_OnlyAddsOnce` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:361` | `` | `` | `pending source translation` | `pending` | `e3d1340780680bfc46267194ddb3c47e4ae24299cf532d92dd71d9770f1955fa` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithAddedPolicy_RemovesPolicy::test` | `CompositeCurrentOutfitPolicyTests.RemovePolicy_WithAddedPolicy_RemovesPolicy` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:379` | `` | `` | `pending source translation` | `pending` | `9dd407dceeacdcc60fccb0d9869ad261d90acd74ae4257331e0cf8d4be2ee603` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow::test` | `CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:394` | `` | `` | `pending source translation` | `pending` | `9fa18bd628f6f02912168309e8e2afb6346a73a235dcc16cc81bc35e2dcf766f` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNull_DoesNotThrow::test` | `CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNull_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:400` | `` | `` | `pending source translation` | `pending` | `28075d5f7c5458f1ccdf9981970e212e1663a9e5ebee65fce636a11a22390bfb` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithNoPolicies_ReturnsTrue::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WithNoPolicies_ReturnsTrue` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:410` | `` | `` | `pending source translation` | `pending` | `74bc06bb6cedfe84a3cd7e5b4c32b251ee6eff81c272c7d899436dbd7f21886b` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithNullItem_ThrowsArgumentNullException::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WithNullItem_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:418` | `` | `` | `pending source translation` | `pending` | `a47ebf9c89b603c10109c6e643de5043ba13cd2eaf5f04d73ab1fd5f40e9b332` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesAllowing_ReturnsTrue::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesAllowing_ReturnsTrue` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:425` | `` | `` | `pending source translation` | `pending` | `32c2f5dcc5cbdf24e4205c25c833aaa3c0f203aeb8ff20c30fdac1264f12f6bd` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithOnePolicyDenying_ReturnsFalse::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WithOnePolicyDenying_ReturnsFalse` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:439` | `` | `` | `pending source translation` | `pending` | `f38d910142a563bded6d35b969c0c560ffa072fd8df073a15fbbbed745681d0d` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesDenying_ReturnsFalse::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesDenying_ReturnsFalse` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:453` | `` | `` | `pending source translation` | `pending` | `6cdda22d59a3cd690a187b597a7c8a2474e43c27902e737f15f0c71adc5bcf7c` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithNoPolicies_ReturnsTrue::test` | `CompositeCurrentOutfitPolicyTests.CanDetach_WithNoPolicies_ReturnsTrue` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:471` | `` | `` | `pending source translation` | `pending` | `fe53b90f59fd9a73c4af1b7071f04cae0a7b623d6a50a3d8eb2fcae82e6872e9` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithNullItem_ThrowsArgumentNullException::test` | `CompositeCurrentOutfitPolicyTests.CanDetach_WithNullItem_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:479` | `` | `` | `pending source translation` | `pending` | `8a39f9c6e26f3a136de641f38507db144f731aed0861edbeafcfdb70306ecffb` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesAllowing_ReturnsTrue::test` | `CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesAllowing_ReturnsTrue` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:486` | `` | `` | `pending source translation` | `pending` | `2cbe1f0a5907c1dfa01af4329fa64177463798ec6caa357c8da8f5d3291901bf` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithOnePolicyDenying_ReturnsFalse::test` | `CompositeCurrentOutfitPolicyTests.CanDetach_WithOnePolicyDenying_ReturnsFalse` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:500` | `` | `` | `pending source translation` | `pending` | `11896040dd8e4b5bbd7d85a1da126c648ad77eb349a73edf1e18fa5710cde1c9` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesDenying_ReturnsFalse::test` | `CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesDenying_ReturnsFalse` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:514` | `` | `` | `pending source translation` | `pending` | `62b8478f593f2bf16b44267d80668e327a245d0b5c0386e7229a5857d669ae6c` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNoPolicies_CompletesSuccessfully::test` | `CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNoPolicies_CompletesSuccessfully` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:532` | `` | `` | `pending source translation` | `pending` | `e3f6824512503bea532826b9a9e4f7bb5abdea53f962fbbc6fdae299a6fe44a0` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithMultiplePolicies_CallsAllPolicies::test` | `CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithMultiplePolicies_CallsAllPolicies` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:543` | `` | `` | `pending source translation` | `pending` | `4797cc1851d78364553dac59a6f9a894107fa04fb3fddfb52ed0e4fb5b4bcd1a` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithCancelledToken_ThrowsOperationCanceledException::test` | `CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithCancelledToken_ThrowsOperationCanceledException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:560` | `` | `` | `pending source translation` | `pending` | `e4eaf9c1ee2d55a3e6c7bca634ff1af2a0e19b7560ea616984d258df46ec89fd` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithEmptyLists_DoesNotThrow::test` | `CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithEmptyLists_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:575` | `` | `` | `pending source translation` | `pending` | `6ba7e22fb7425e523f301612f7d7f6aed88e7d422050a70137d93b4a8004ae50` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNullLists_DoesNotThrowFromComposite::test` | `CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNullLists_DoesNotThrowFromComposite` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:588` | `` | `` | `pending source translation` | `pending` | `c512c54f78c46fb4774d9b5c9c1057627592e1c25267811cddf3d687d3d1ec4d` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddRemovePolicy_ConcurrentAccess_DoesNotThrow::test` | `CompositeCurrentOutfitPolicyTests.AddRemovePolicy_ConcurrentAccess_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:601` | `` | `` | `pending source translation` | `pending` | `a73a01065867d90305f491e41d9ea61bc27b80c026672ed920368877bfb0fe14` | -| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WhileModifyingPolicies_DoesNotThrow::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WhileModifyingPolicies_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:627` | `` | `` | `pending source translation` | `pending` | `697999feeb776fae9a47cb9678c0ae0234d3b3831ce40c0e6f50fe622a5cc2b7` | -| `LibreMetaverse.Tests/DownloadManagerTests.cs::DownloadManagerTests.QueueDownloadAsync_SingleDownload_CompletesSuccessfully::test` | `DownloadManagerTests.QueueDownloadAsync_SingleDownload_CompletesSuccessfully` | `` | `LibreMetaverse.Tests/DownloadManagerTests.cs:46` | `` | `` | `tests/compat/tests/network_semantics.rs:192 (`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:229 (`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:275 (`queue_download_cancellation_propagates`)` | `translated` | `9eb3791b1def609d6f45be0fff8ae67ea04332045c0c419c6c2e7d118aeb6271` | +| `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.Dispose_CalledOnce_DoesNotThrow::test` | `CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:67` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:31 (`dispose_called_once_does_not_throw`)` | `translated` | `1d0daac0bfa091bc3c3bffddc32a1511295dd7101f8ab5dfbf305b13b9ac7405` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow::test` | `CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:77` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:37 (`dispose_called_multiple_times_does_not_throw`)` | `translated` | `124b41c342a295f02e9d5991d1dead0ff3e9a780f96424b88f75117ca206460b` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.MaxClothingLayers_Returns60::test` | `CurrentOutfitFolderTests.MaxClothingLayers_Returns60` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:88` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:45 (`max_clothing_layers_returns_60`)` | `translated` | `e35e779b342fdb54bb7f5b2061f70c35ccc3f7f9ba87f48b2697f24c10f94397` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.COF_InitiallyNull::test` | `CurrentOutfitFolderTests.COF_InitiallyNull` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:98` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:51 (`cof_initially_null`)` | `translated` | `2dee4e58f3f53e50c5389ba0594ea0b063af55871eefae49e99bdd4b5c28e552` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.AddPolicy_WithValidPolicy_ReturnsAddedPolicy::test` | `CurrentOutfitFolderTests.AddPolicy_WithValidPolicy_ReturnsAddedPolicy` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:108` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:57 (`add_policy_with_valid_policy_returns_added_policy`)` | `translated` | `747db5d674a6cb0bc54bcb9d32501d5bab49e0df5e5e39f3781f88d5100ed244` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.RemovePolicy_WithValidPolicy_DoesNotThrow::test` | `CurrentOutfitFolderTests.RemovePolicy_WithValidPolicy_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:122` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:66 (`remove_policy_with_valid_policy_does_not_throw`)` | `translated` | `41f61b917da0410be01b346644a76bc9c800f78d1e1ba6ef805b14cea1b4d00d` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow::test` | `CurrentOutfitFolderTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:135` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:75 (`remove_policy_with_non_added_policy_does_not_throw`)` | `translated` | `4add41578d3d5340618cb29ed6969b84c5c3a80e6da09ccb03bc6872a6b6689a` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.ResolveInventoryLink_WithNonLinkItem_ReturnsSameItem::test` | `CurrentOutfitFolderTests.ResolveInventoryLink_WithNonLinkItem_ReturnsSameItem` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:147` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:82 (`resolve_inventory_link_with_non_link_item_returns_same_item`)` | `translated` | `7430a64883f3938afe7da1b126e4ee460cbf2485e2d51035273b4ca8fd150960` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.ResolveInventoryLink_WithLinkItemNotInStore_ReturnsNull::test` | `CurrentOutfitFolderTests.ResolveInventoryLink_WithLinkItemNotInStore_ReturnsNull` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:165` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:97 (`resolve_inventory_link_with_link_item_not_in_store_returns_null`)` | `translated` | `21e0dae8c038d2381eef736ad30d48fc0247e0a55b86e75de02982290a3a9bd0` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithNoNameValues_ReturnsZero::test` | `CurrentOutfitFolderTests.GetAttachmentItemID_WithNoNameValues_ReturnsZero` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:195` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:114 (`get_attachment_item_id_with_no_name_values_returns_zero`)` | `translated` | `c9e017a587c37b694484feda4fab81ef7f2bb098bbf8f96f3cefbb21f1a568d8` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithAttachItemID_ReturnsCorrectUUID::test` | `CurrentOutfitFolderTests.GetAttachmentItemID_WithAttachItemID_ReturnsCorrectUUID` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:208` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:125 (`get_attachment_item_id_with_attach_item_id_returns_correct_uuid`)` | `translated` | `23e6be11056b93d75424c23030e1d2082545f686d12c0aa14f66991664e347e8` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithoutAttachItemID_ReturnsZero::test` | `CurrentOutfitFolderTests.GetAttachmentItemID_WithoutAttachItemID_ReturnsZero` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:226` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:145 (`get_attachment_item_id_without_attach_item_id_returns_zero`)` | `translated` | `7ee12fc59c8b5e5cb074e18c2af48c0f1b1d7be0937db65a7056e29e114b691f` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.IsObjectDescendentOf_WithZeroParentId_ReturnsFalse::test` | `CurrentOutfitFolderTests.IsObjectDescendentOf_WithZeroParentId_ReturnsFalse` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:243` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:164 (`is_object_descendent_of_with_zero_parent_id_returns_false`)` | `translated` | `a878c220510aacbf61ebfb192952e26d96343312fcf9648e57e270e29aaa9d5d` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.IsObjectDescendentOf_WithDirectParent_ReturnsTrue::test` | `CurrentOutfitFolderTests.IsObjectDescendentOf_WithDirectParent_ReturnsTrue` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:257` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:172 (`is_object_descendent_of_with_direct_parent_returns_true`)` | `translated` | `ac3af5edef5ee67058a91a990bfde38e616d00919b0cd8e0b5f7345f7d8dab6c` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.FetchParent_WithZeroParentUUID_ReturnsNull::test` | `CurrentOutfitFolderTests.FetchParent_WithZeroParentUUID_ReturnsNull` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:275` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:182 (`fetch_parent_with_zero_parent_uuid_returns_null`)` | `translated` | `ee6cc0cc9a48ec07afb8bd7fa8e1c53c2db258be11e2848ee5752e41eb34e45a` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetCurrentOutfitLinks_WithNullCOF_ReturnsEmptyList::test` | `CurrentOutfitFolderTests.GetCurrentOutfitLinks_WithNullCOF_ReturnsEmptyList` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:292` | `` | `` | `tests/compat/tests/current_outfit_folder_semantics.rs:195 (`get_current_outfit_links_with_null_cof_returns_empty_list`)` | `translated` | `5c0d475ccd4423bc099eb141f36061fdfaa589fd36d27c907d03a9d0be3f6f48` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_WithValidPolicy_ReturnsThis::test` | `CompositeCurrentOutfitPolicyTests.AddPolicy_WithValidPolicy_ReturnsThis` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:330` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:74 (`add_policy_with_valid_policy_returns_this`)` | `translated` | `31c1829eaa2b82b498cc1eaea131d2e34d1a0b5620be24f4da853c62c49807cc` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_WithNullPolicy_ThrowsArgumentNullException::test` | `CompositeCurrentOutfitPolicyTests.AddPolicy_WithNullPolicy_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:338` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:86 (`add_policy_with_null_policy_throws_argument_null_exception`)` | `translated` | `6a111f0ad2e91c8566b5459939e3ecc76282cd033bb8d6483e1672c36891e597` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_MultiplePolicies_AllAreConsulted::test` | `CompositeCurrentOutfitPolicyTests.AddPolicy_MultiplePolicies_AllAreConsulted` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:345` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:96 (`add_policy_multiple_policies_all_are_consulted`)` | `translated` | `1767ee3dee6b07e71f10b52613962e211fcf9906a45d12188f517cf751896f24` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_SamePolicyTwice_OnlyAddsOnce::test` | `CompositeCurrentOutfitPolicyTests.AddPolicy_SamePolicyTwice_OnlyAddsOnce` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:361` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:112 (`add_policy_same_policy_twice_only_adds_once`)` | `translated` | `e3d1340780680bfc46267194ddb3c47e4ae24299cf532d92dd71d9770f1955fa` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithAddedPolicy_RemovesPolicy::test` | `CompositeCurrentOutfitPolicyTests.RemovePolicy_WithAddedPolicy_RemovesPolicy` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:379` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:124 (`remove_policy_with_added_policy_removes_policy`)` | `translated` | `9dd407dceeacdcc60fccb0d9869ad261d90acd74ae4257331e0cf8d4be2ee603` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow::test` | `CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:394` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:137 (`remove_policy_with_non_added_policy_does_not_throw`)` | `translated` | `9fa18bd628f6f02912168309e8e2afb6346a73a235dcc16cc81bc35e2dcf766f` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNull_DoesNotThrow::test` | `CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNull_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:400` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:146 (`remove_policy_with_null_does_not_throw`)` | `translated` | `28075d5f7c5458f1ccdf9981970e212e1663a9e5ebee65fce636a11a22390bfb` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithNoPolicies_ReturnsTrue::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WithNoPolicies_ReturnsTrue` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:410` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:155 (`can_attach_with_no_policies_returns_true`)` | `translated` | `74bc06bb6cedfe84a3cd7e5b4c32b251ee6eff81c272c7d899436dbd7f21886b` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithNullItem_ThrowsArgumentNullException::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WithNullItem_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:418` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:166 (`can_attach_with_null_item_throws_argument_null_exception`)` | `translated` | `a47ebf9c89b603c10109c6e643de5043ba13cd2eaf5f04d73ab1fd5f40e9b332` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesAllowing_ReturnsTrue::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesAllowing_ReturnsTrue` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:425` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:177 (`can_attach_with_all_policies_allowing_returns_true`)` | `translated` | `32c2f5dcc5cbdf24e4205c25c833aaa3c0f203aeb8ff20c30fdac1264f12f6bd` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithOnePolicyDenying_ReturnsFalse::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WithOnePolicyDenying_ReturnsFalse` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:439` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:190 (`can_attach_with_one_policy_denying_returns_false`)` | `translated` | `f38d910142a563bded6d35b969c0c560ffa072fd8df073a15fbbbed745681d0d` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesDenying_ReturnsFalse::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesDenying_ReturnsFalse` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:453` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:203 (`can_attach_with_all_policies_denying_returns_false`)` | `translated` | `6cdda22d59a3cd690a187b597a7c8a2474e43c27902e737f15f0c71adc5bcf7c` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithNoPolicies_ReturnsTrue::test` | `CompositeCurrentOutfitPolicyTests.CanDetach_WithNoPolicies_ReturnsTrue` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:471` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:216 (`can_detach_with_no_policies_returns_true`)` | `translated` | `fe53b90f59fd9a73c4af1b7071f04cae0a7b623d6a50a3d8eb2fcae82e6872e9` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithNullItem_ThrowsArgumentNullException::test` | `CompositeCurrentOutfitPolicyTests.CanDetach_WithNullItem_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:479` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:227 (`can_detach_with_null_item_throws_argument_null_exception`)` | `translated` | `8a39f9c6e26f3a136de641f38507db144f731aed0861edbeafcfdb70306ecffb` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesAllowing_ReturnsTrue::test` | `CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesAllowing_ReturnsTrue` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:486` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:238 (`can_detach_with_all_policies_allowing_returns_true`)` | `translated` | `2cbe1f0a5907c1dfa01af4329fa64177463798ec6caa357c8da8f5d3291901bf` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithOnePolicyDenying_ReturnsFalse::test` | `CompositeCurrentOutfitPolicyTests.CanDetach_WithOnePolicyDenying_ReturnsFalse` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:500` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:251 (`can_detach_with_one_policy_denying_returns_false`)` | `translated` | `11896040dd8e4b5bbd7d85a1da126c648ad77eb349a73edf1e18fa5710cde1c9` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesDenying_ReturnsFalse::test` | `CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesDenying_ReturnsFalse` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:514` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:264 (`can_detach_with_all_policies_denying_returns_false`)` | `translated` | `62b8478f593f2bf16b44267d80668e327a245d0b5c0386e7229a5857d669ae6c` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNoPolicies_CompletesSuccessfully::test` | `CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNoPolicies_CompletesSuccessfully` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:532` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:277 (`report_item_change_with_no_policies_completes_successfully`)` | `translated` | `e3f6824512503bea532826b9a9e4f7bb5abdea53f962fbbc6fdae299a6fe44a0` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithMultiplePolicies_CallsAllPolicies::test` | `CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithMultiplePolicies_CallsAllPolicies` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:543` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:290 (`report_item_change_with_multiple_policies_calls_all_policies`)` | `translated` | `4797cc1851d78364553dac59a6f9a894107fa04fb3fddfb52ed0e4fb5b4bcd1a` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithCancelledToken_ThrowsOperationCanceledException::test` | `CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithCancelledToken_ThrowsOperationCanceledException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:560` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:318 (`report_item_change_with_cancelled_token_throws_operation_cancelled_exception`)` | `translated` | `e4eaf9c1ee2d55a3e6c7bca634ff1af2a0e19b7560ea616984d258df46ec89fd` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithEmptyLists_DoesNotThrow::test` | `CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithEmptyLists_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:575` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:337 (`report_item_change_with_empty_lists_does_not_throw`)` | `translated` | `6ba7e22fb7425e523f301612f7d7f6aed88e7d422050a70137d93b4a8004ae50` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNullLists_DoesNotThrowFromComposite::test` | `CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNullLists_DoesNotThrowFromComposite` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:588` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:352 (`report_item_change_with_null_lists_does_not_throw_from_composite`)` | `translated` | `c512c54f78c46fb4774d9b5c9c1057627592e1c25267811cddf3d687d3d1ec4d` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddRemovePolicy_ConcurrentAccess_DoesNotThrow::test` | `CompositeCurrentOutfitPolicyTests.AddRemovePolicy_ConcurrentAccess_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:601` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:363 (`add_remove_policy_concurrent_access_does_not_throw`)` | `translated` | `a73a01065867d90305f491e41d9ea61bc27b80c026672ed920368877bfb0fe14` | +| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WhileModifyingPolicies_DoesNotThrow::test` | `CompositeCurrentOutfitPolicyTests.CanAttach_WhileModifyingPolicies_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:627` | `` | `` | `tests/compat/tests/current_outfit_policy_semantics.rs:389 (`can_attach_while_modifying_policies_does_not_throw`)` | `translated` | `697999feeb776fae9a47cb9678c0ae0234d3b3831ce40c0e6f50fe622a5cc2b7` | +| `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_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.SetParcelEnvironment_SendsParcelidInQueryStringNotBody::test` | `EnvironmentManagerTests.SetParcelEnvironment_SendsParcelidInQueryStringNotBody` | `` | `LibreMetaverse.Tests/EnvironmentManagerTests.cs:128` | `Environment` | `` | `pending source translation` | `pending` | `f633e2d78e4c6a0fff42917ccfe8de68e4f6133a11e7eef7f9b757c3d1622f0f` | | `LibreMetaverse.Tests/EnvironmentManagerTests.cs::EnvironmentManagerTests.SetRegionEnvironment_OmitsQueryStringEntirely::test` | `EnvironmentManagerTests.SetRegionEnvironment_OmitsQueryStringEntirely` | `` | `LibreMetaverse.Tests/EnvironmentManagerTests.cs:158` | `Environment` | `` | `pending source translation` | `pending` | `bade6e06765506ad7e500ac3e5c9f168605ce25fef86647819d285a68b39f109` | @@ -258,7 +258,7 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case` | `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.Load_AutoDetectsGlbVsJson::test` | `GltfDocumentTests.Load_AutoDetectsGlbVsJson` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:252` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:463 (`gltf_load_auto_detects_glb_and_json`)` | `translated` | `6d07930be2302e504ef9ece3fef10f47b855d33ae6c8bff152e82df0beb2a474` | | `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ParseNode_TrsDefaults::test` | `GltfDocumentTests.ParseNode_TrsDefaults` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:268` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:475 (`gltf_node_trs_defaults`)` | `translated` | `0f0fbe116d20276c2aee917b940bded9de277ed0b3e3b659844c5b3532755259` | | `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ParseNode_ExplicitMatrix::test` | `GltfDocumentTests.ParseNode_ExplicitMatrix` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:280` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:495 (`gltf_node_explicit_matrix`)` | `translated` | `197ba2ee3a66cbb7d927acea13ce9dc84e62af8a500d939957749039118755c8` | -| `LibreMetaverse.Tests/GridClientTests.cs::GridClientTests.GetGridRegion::test` | `GridClientTests.GetGridRegion` | `` | `LibreMetaverse.Tests/GridClientTests.cs:90` | `GridClient, RequiresLiveServer` | `` | `tests/compat/tests/network_semantics.rs:372 (`get_grid_region_live`)` | `ignored-live` | `b0b72fc63fe829984167a479b763784c7daae8691399f3f3d2feb824090ad59f` | +| `LibreMetaverse.Tests/GridClientTests.cs::GridClientTests.GetGridRegion::test` | `GridClientTests.GetGridRegion` | `` | `LibreMetaverse.Tests/GridClientTests.cs:90` | `GridClient, RequiresLiveServer` | `` | `tests/compat/tests/network_semantics.rs:345 (`get_grid_region_live`)` | `ignored-live` | `b0b72fc63fe829984167a479b763784c7daae8691399f3f3d2feb824090ad59f` | | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs::HelpersZeroCodingTests.ZeroDecode_ValidInput_DecodesCorrectly::test` | `HelpersZeroCodingTests.ZeroDecode_ValidInput_DecodesCorrectly` | `` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs:36` | `Helpers` | `` | `tests/compat/tests/wire_semantics.rs:79 (`zero_decode_valid_input_decodes_correctly`)` | `translated` | `62353da2b1afb7bfdf5142706d15d22086a5e1e8c55f39af3e64686dda4ea071` | | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs::HelpersZeroCodingTests.ZeroDecode_NullSource_ThrowsArgumentNullException::test` | `HelpersZeroCodingTests.ZeroDecode_NullSource_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs:64` | `Helpers` | `` | `tests/compat/tests/wire_semantics.rs:97 (`zero_decode_null_source_throws_argument_null`)` | `translated` | `50ebbd8ea35b87df18cccdea9a26534d5c142228e5b1698cf191b9fd2e9a9957` | | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs::HelpersZeroCodingTests.ZeroDecode_NullDestination_ThrowsArgumentNullException::test` | `HelpersZeroCodingTests.ZeroDecode_NullDestination_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs:73` | `Helpers` | `` | `tests/compat/tests/wire_semantics.rs:108 (`zero_decode_null_destination_throws_argument_null`)` | `translated` | `97197cffb02908653d831f3a62cdce2c1ddd52818343e9aacebc9b4c5ac1ee3e` | @@ -273,7 +273,7 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs::HelpersZeroCodingTests.ZeroEncode_DestinationTooSmall_ThrowsIndexOutOfRangeException::test` | `HelpersZeroCodingTests.ZeroEncode_DestinationTooSmall_ThrowsIndexOutOfRangeException` | `` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs:218` | `Helpers` | `` | `tests/compat/tests/wire_semantics.rs:222 (`zero_encode_destination_too_small_throws_index_out_of_range`)` | `translated` | `3870f0680f25e8df8de54f27c153feae9d8398e38531d67d6e0255cc34d50966` | | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs::HelpersZeroCodingTests.ZeroEncode_WithAppendedAcks_HandlesCorrectly::test` | `HelpersZeroCodingTests.ZeroEncode_WithAppendedAcks_HandlesCorrectly` | `` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs:231` | `Helpers` | `` | `tests/compat/tests/wire_semantics.rs:235 (`zero_encode_with_appended_acks_preserves_count`)` | `translated` | `9803ec7bad46a1fd0f32c58d3ee08cf6a98b03a40a336ae231d1faf8211b273a` | | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs::HelpersZeroCodingTests.ZeroEncodeAndDecode_RoundTrip_PreservesData::test` | `HelpersZeroCodingTests.ZeroEncodeAndDecode_RoundTrip_PreservesData` | `` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs:254` | `Helpers` | `` | `tests/compat/tests/wire_semantics.rs:248 (`zero_encode_decode_round_trip_preserves_patterns`)` | `translated` | `7847520873f87d798ea94fd1b6543db9d3606829a4bc3f4ec873e629fb6687eb` | -| `LibreMetaverse.Tests/HttpCapsClientNonHttpLocationTests.cs::HttpCapsClientNonHttpLocationTests.PutAsync_ResponseWithNonHttpLocationHeader_DoesNotThrow::test` | `HttpCapsClientNonHttpLocationTests.PutAsync_ResponseWithNonHttpLocationHeader_DoesNotThrow` | `` | `LibreMetaverse.Tests/HttpCapsClientNonHttpLocationTests.cs:47` | `Http` | `` | `tests/compat/tests/network_semantics.rs:306 (`put_response_with_non_http_location_does_not_throw`)` | `translated` | `9dbcf4023212af6f2294fa048068fe2f4d9e7e3f976d8eefb1dacbc9f6899aa8` | +| `LibreMetaverse.Tests/HttpCapsClientNonHttpLocationTests.cs::HttpCapsClientNonHttpLocationTests.PutAsync_ResponseWithNonHttpLocationHeader_DoesNotThrow::test` | `HttpCapsClientNonHttpLocationTests.PutAsync_ResponseWithNonHttpLocationHeader_DoesNotThrow` | `` | `LibreMetaverse.Tests/HttpCapsClientNonHttpLocationTests.cs:47` | `Http` | `` | `tests/compat/tests/network_semantics.rs:279 (`put_response_with_non_http_location_does_not_throw`)` | `translated` | `9dbcf4023212af6f2294fa048068fe2f4d9e7e3f976d8eefb1dacbc9f6899aa8` | | `LibreMetaverse.Tests/InventoryAISClientTests.cs::InventoryAISClientTests.ParseLinksFromEmbedded_ObjectAsset_ResultsInAttachmentInventoryTypeAndParsesFields::test` | `InventoryAISClientTests.ParseLinksFromEmbedded_ObjectAsset_ResultsInAttachmentInventoryTypeAndParsesFields` | `` | `LibreMetaverse.Tests/InventoryAISClientTests.cs:37` | `` | `` | `pending source translation` | `pending` | `3ae365ed34f12d036dcd44c94f8568d163cfeec2a58b4975975b77b418770131` | | `LibreMetaverse.Tests/InventoryAISClientTests.cs::InventoryAISClientTests.ParseItemsFromEmbedded_ItemsKey_ParsesConcreteItems::test` | `InventoryAISClientTests.ParseItemsFromEmbedded_ItemsKey_ParsesConcreteItems` | `` | `LibreMetaverse.Tests/InventoryAISClientTests.cs:82` | `` | `` | `pending source translation` | `pending` | `d9e7c64106639071e1ec6ada7346bfa050a31183becaac79efefcd4755fe2855` | | `LibreMetaverse.Tests/InventoryAISClientTests.cs::InventoryAISClientTests.ParseLinksFromEmbedded_MeshAsset_TreatedAsAttachment::test` | `InventoryAISClientTests.ParseLinksFromEmbedded_MeshAsset_TreatedAsAttachment` | `` | `LibreMetaverse.Tests/InventoryAISClientTests.cs:122` | `` | `` | `pending source translation` | `pending` | `f807110d577c654128dd8d42e618c610c260c4f3367cf2795776564409f876a2` | @@ -425,16 +425,16 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case` | `LibreMetaverse.Tests/MessageTests.cs::MessageTests.ReflectionPerformanceDirLandReply::test` | `MessageTests.ReflectionPerformanceDirLandReply` | `` | `LibreMetaverse.Tests/MessageTests.cs:1291` | `Benchmark` | `` | `tests/compat/tests/wire_semantics.rs:1515 (`reflection_performance_dir_land_reply`)` | `benchmark` | `d4a40f5d6a5f3e66d69591429bea0cfc95d313afc9a7a9ee5e9289c69be069d6` | | `LibreMetaverse.Tests/MessageTests.cs::MessageTests.ReflectionPerformanceDirLandReply2::test` | `MessageTests.ReflectionPerformanceDirLandReply2` | `` | `LibreMetaverse.Tests/MessageTests.cs:1354` | `Benchmark` | `` | `tests/compat/tests/wire_semantics.rs:1573 (`reflection_performance_dir_land_reply_two`)` | `benchmark` | `e52dacbdf3f4540553fe9f751334631a2d8440bdffcf6822d2629585176626cc` | | `LibreMetaverse.Tests/MessageTests.cs::MessageTests.ReflectionPerformanceParcelProperties::test` | `MessageTests.ReflectionPerformanceParcelProperties` | `` | `LibreMetaverse.Tests/MessageTests.cs:1420` | `Benchmark` | `` | `tests/compat/tests/wire_semantics.rs:1732 (`reflection_performance_parcel_properties`)` | `benchmark` | `914e6015a8abc1b5c1b58a219ef4f67258f793cac02c903e518758deaaddf8a4` | -| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.IsLink_TextureItemWithLinkAssetType_ReturnsTrue::test` | `MisclassifiedLinkRegressionTests.IsLink_TextureItemWithLinkAssetType_ReturnsTrue` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:75` | `Inventory` | `` | `pending source translation` | `pending` | `b85452466c0fdc47a44cc08166f93a660bbf466b0e2205910c1ea84fee22896c` | -| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.IsLink_NormalTexture_ReturnsFalse::test` | `MisclassifiedLinkRegressionTests.IsLink_NormalTexture_ReturnsFalse` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:90` | `Inventory` | `` | `pending source translation` | `pending` | `8c08505d6e89c4395115dbb060529419755aa1a81ca8889804ea00e6f94bf534` | -| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.ResolvedItemID_OnMisclassifiedTextureLink_ReturnsAssetUUID::test` | `MisclassifiedLinkRegressionTests.ResolvedItemID_OnMisclassifiedTextureLink_ReturnsAssetUUID` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:103` | `Inventory` | `` | `pending source translation` | `pending` | `cad5b5fb10523254ff19b7842b0e48984bc75182a26bc897f165a43770bb47f4` | -| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Contains_FindsTargetByResolvedItemID::test` | `MisclassifiedLinkRegressionTests.InventoryStore_Contains_FindsTargetByResolvedItemID` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:120` | `Inventory` | `` | `pending source translation` | `pending` | `3c1f8596462c3a9e229c84ea44e44728bf175e1a0e8213ae92d1b02b08320b0b` | -| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsWearable_WhenTargetIsWearable::test` | `MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsWearable_WhenTargetIsWearable` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:142` | `Inventory` | `` | `pending source translation` | `pending` | `c7ce0b860743cfa5225de4322c8d7bf95094296b1dd2d07fd273bbd4e81a9fcf` | -| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsAttachment_WhenTargetIsAttachment::test` | `MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsAttachment_WhenTargetIsAttachment` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:168` | `Inventory` | `` | `pending source translation` | `pending` | `f58debff8f66b7b417215eb6879f96935647b66cc619fdb00e6815c9ce5e7c67` | -| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsObject_WhenTargetIsObject::test` | `MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsObject_WhenTargetIsObject` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:192` | `Inventory` | `` | `pending source translation` | `pending` | `b8137c994019103977b0b85d8c148e12ae8f9051334ca487db7c88bcbe707d40` | -| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_NotContains_WhenTargetAbsent::test` | `MisclassifiedLinkRegressionTests.InventoryStore_NotContains_WhenTargetAbsent` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:216` | `Inventory` | `` | `pending source translation` | `pending` | `6900e220c33ec135d02c55e047c7052a095d5dd9d71da4a857ae70bc151c472b` | -| `LibreMetaverse.Tests/NetworkTests.cs::NetworkTests.DetectObjects::test` | `NetworkTests.DetectObjects` | `` | `LibreMetaverse.Tests/NetworkTests.cs:121` | `Network, RequiresLiveServer` | `` | `tests/compat/tests/network_semantics.rs:436 (`detect_objects_live`)` | `ignored-live` | `8b72f1ca30feda2fad0812faf3a2f83d691d3cca9268054b3cc3bf89ad786e87` | -| `LibreMetaverse.Tests/NetworkTests.cs::NetworkTests.CapsQueue::test` | `NetworkTests.CapsQueue` | `` | `LibreMetaverse.Tests/NetworkTests.cs:188` | `Network, RequiresLiveServer` | `` | `tests/compat/tests/network_semantics.rs:515 (`caps_queue_live`)` | `ignored-live` | `cd5af4e7d69df3e938540711877d167fe28efb9af8af7518a62b8f406e46cc18` | +| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.IsLink_TextureItemWithLinkAssetType_ReturnsTrue::test` | `MisclassifiedLinkRegressionTests.IsLink_TextureItemWithLinkAssetType_ReturnsTrue` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:75` | `Inventory` | `` | `tests/compat/tests/misclassified_link_semantics.rs:22 (`is_link_texture_item_with_link_asset_type_returns_true`)` | `translated` | `b85452466c0fdc47a44cc08166f93a660bbf466b0e2205910c1ea84fee22896c` | +| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.IsLink_NormalTexture_ReturnsFalse::test` | `MisclassifiedLinkRegressionTests.IsLink_NormalTexture_ReturnsFalse` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:90` | `Inventory` | `` | `tests/compat/tests/misclassified_link_semantics.rs:29 (`is_link_normal_texture_returns_false`)` | `translated` | `8c08505d6e89c4395115dbb060529419755aa1a81ca8889804ea00e6f94bf534` | +| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.ResolvedItemID_OnMisclassifiedTextureLink_ReturnsAssetUUID::test` | `MisclassifiedLinkRegressionTests.ResolvedItemID_OnMisclassifiedTextureLink_ReturnsAssetUUID` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:103` | `Inventory` | `` | `tests/compat/tests/misclassified_link_semantics.rs:38 (`resolved_item_id_on_misclassified_texture_link_returns_asset_uuid`)` | `translated` | `cad5b5fb10523254ff19b7842b0e48984bc75182a26bc897f165a43770bb47f4` | +| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Contains_FindsTargetByResolvedItemID::test` | `MisclassifiedLinkRegressionTests.InventoryStore_Contains_FindsTargetByResolvedItemID` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:120` | `Inventory` | `` | `tests/compat/tests/misclassified_link_semantics.rs:46 (`inventory_store_contains_finds_target_by_resolved_item_id`)` | `translated` | `3c1f8596462c3a9e229c84ea44e44728bf175e1a0e8213ae92d1b02b08320b0b` | +| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsWearable_WhenTargetIsWearable::test` | `MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsWearable_WhenTargetIsWearable` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:142` | `Inventory` | `` | `tests/compat/tests/misclassified_link_semantics.rs:64 (`inventory_store_indexer_returns_wearable_when_target_is_wearable`)` | `translated` | `c7ce0b860743cfa5225de4322c8d7bf95094296b1dd2d07fd273bbd4e81a9fcf` | +| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsAttachment_WhenTargetIsAttachment::test` | `MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsAttachment_WhenTargetIsAttachment` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:168` | `Inventory` | `` | `tests/compat/tests/misclassified_link_semantics.rs:86 (`inventory_store_indexer_returns_attachment_when_target_is_attachment`)` | `translated` | `f58debff8f66b7b417215eb6879f96935647b66cc619fdb00e6815c9ce5e7c67` | +| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsObject_WhenTargetIsObject::test` | `MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsObject_WhenTargetIsObject` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:192` | `Inventory` | `` | `tests/compat/tests/misclassified_link_semantics.rs:110 (`inventory_store_indexer_returns_object_when_target_is_object`)` | `translated` | `b8137c994019103977b0b85d8c148e12ae8f9051334ca487db7c88bcbe707d40` | +| `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_NotContains_WhenTargetAbsent::test` | `MisclassifiedLinkRegressionTests.InventoryStore_NotContains_WhenTargetAbsent` | `` | `LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs:216` | `Inventory` | `` | `tests/compat/tests/misclassified_link_semantics.rs:132 (`inventory_store_not_contains_when_target_absent`)` | `translated` | `6900e220c33ec135d02c55e047c7052a095d5dd9d71da4a857ae70bc151c472b` | +| `LibreMetaverse.Tests/NetworkTests.cs::NetworkTests.DetectObjects::test` | `NetworkTests.DetectObjects` | `` | `LibreMetaverse.Tests/NetworkTests.cs:121` | `Network, RequiresLiveServer` | `` | `tests/compat/tests/network_semantics.rs:409 (`detect_objects_live`)` | `ignored-live` | `8b72f1ca30feda2fad0812faf3a2f83d691d3cca9268054b3cc3bf89ad786e87` | +| `LibreMetaverse.Tests/NetworkTests.cs::NetworkTests.CapsQueue::test` | `NetworkTests.CapsQueue` | `` | `LibreMetaverse.Tests/NetworkTests.cs:188` | `Network, RequiresLiveServer` | `` | `tests/compat/tests/network_semantics.rs:488 (`caps_queue_live`)` | `ignored-live` | `cd5af4e7d69df3e938540711877d167fe28efb9af8af7518a62b8f406e46cc18` | | `LibreMetaverse.Tests/NotationLLSDTests.cs::NotationSDTests.HelperFunctions::test` | `NotationSDTests.HelperFunctions` | `` | `LibreMetaverse.Tests/NotationLLSDTests.cs:53` | `` | `` | `tests/compat/tests/structured_data.rs:622 (`notation_helper_functions`)` | `translated` | `a521ca5407ed3afd1d59f5b65a283bcebe9d34b4c384d68c5fc674b3a1eeb9df` | | `LibreMetaverse.Tests/NotationLLSDTests.cs::NotationSDTests.DeserializeUndef::test` | `NotationSDTests.DeserializeUndef` | `` | `LibreMetaverse.Tests/NotationLLSDTests.cs:80` | `` | `` | `tests/compat/tests/structured_data.rs:644 (`notation_deserialize_undef`)` | `translated` | `8c802fb14244cb423223c7c25702e4120da261f5dd1b378d2eca597277371406` | | `LibreMetaverse.Tests/NotationLLSDTests.cs::NotationSDTests.SerializeUndef::test` | `NotationSDTests.SerializeUndef` | `` | `LibreMetaverse.Tests/NotationLLSDTests.cs:88` | `` | `` | `tests/compat/tests/structured_data.rs:652 (`notation_serialize_undef`)` | `translated` | `2ceee97b1826a3ba88a50798dba184b48998196192e31527171a9980f06c3281` | diff --git a/tests/compat/src/lib.rs b/tests/compat/src/lib.rs index d8cf029..1b675ec 100644 --- a/tests/compat/src/lib.rs +++ b/tests/compat/src/lib.rs @@ -29,6 +29,43 @@ pub fn block_on(future: F) -> F::Output { } } +/// Loads the live-grid identity from the process environment or workspace `.env`. +/// +/// # Panics +/// +/// Panics when one of `GRID_USER`, `GRID_PASSWORD`, or `GRID_LOGIN_URL` is absent. +#[must_use] +pub fn live_grid_credentials() -> (String, String, String, String) { + fn credential(name: &str) -> String { + if let Ok(value) = std::env::var(name) + && !value.trim().is_empty() + { + return value; + } + let dotenv = Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../..") + .join(".env"); + let contents = std::fs::read_to_string(dotenv).expect("read workspace .env"); + contents + .lines() + .find_map(|line| { + let line = line.trim().strip_prefix("export ").unwrap_or(line.trim()); + let (key, value) = line.split_once('=')?; + (key.trim() == name).then(|| value.trim().trim_matches(['\'', '"']).to_owned()) + }) + .filter(|value| !value.is_empty()) + .unwrap_or_else(|| panic!("live test requires {name}")) + } + + let full_name = credential("GRID_USER"); + let password = credential("GRID_PASSWORD"); + let login_url = credential("GRID_LOGIN_URL"); + let mut names = full_name.split_whitespace(); + let first = names.next().expect("live first name").to_owned(); + let last = names.next().expect("live last name").to_owned(); + (first, last, password, login_url) +} + /// Asserts equality within the exact absolute tolerance carried by an upstream test. /// /// # Panics diff --git a/tests/compat/tests/appearance_live_semantics.rs b/tests/compat/tests/appearance_live_semantics.rs new file mode 100644 index 0000000..3e240e3 --- /dev/null +++ b/tests/compat/tests/appearance_live_semantics.rs @@ -0,0 +1,187 @@ +// Exact Rust translations of LibreMetaverse.Tests/AppearanceLiveTests.cs. +// Source SHA-256: 9f4ec256d11290cbad70e209d2f9043d4c6afb18255796c09c4cb26415f971a6 + +use libremetaverse::appearance::CurrentOutfitFolder; +use libremetaverse::{GridClient, NetworkManager}; +use libremetaverse_compat_tests::{block_on, live_grid_credentials}; +use libremetaverse_types::{UUID, WearableType}; +use std::sync::Arc; +use std::time::{Duration, Instant}; + +struct LiveAppearance { + client: Arc, + cof: CurrentOutfitFolder, +} + +impl LiveAppearance { + 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 client = Arc::new(client); + let cof = CurrentOutfitFolder::new(Some(Arc::clone(&client))) + .expect("CurrentOutfitFolder constructor"); + Self { client, cof } + } +} + +impl Drop for LiveAppearance { + fn drop(&mut self) { + let _ = self.cof.dispose(); + let _ = self.client.network().logout_with_method(); + let _ = self.client.dispose_with_method(); + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_IsInitializedAfterLogin::test 7029854dc6f4e03016e2ea274140cd9adbbad6b8c11b58cf9e728d9a4cf37f81 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" +)] +fn cof_is_initialized_after_login() { + let live = LiveAppearance::login(); + block_on(live.cof.get_current_outfit_links(None)).unwrap(); + let folder = live.cof.cof().expect("COF folder is null"); + assert_ne!(folder.base.uuid(), UUID::zero()); +} + +// parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_HasExpectedFolderName::test 9a8cee3c3958b8631921aaa6b43f69dc430eee9bd3544c8f667aa8f5e858b8ac 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" +)] +fn cof_has_expected_folder_name() { + let live = LiveAppearance::login(); + block_on(live.cof.get_current_outfit_links(None)).unwrap(); + let folder = live.cof.cof().expect("COF folder is null"); + assert!(folder.base.name().eq_ignore_ascii_case("Current Outfit")); +} + +// parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetCurrentOutfitLinksAsync_ReturnsLinks::test a1a1c9f926a8b9f4cc4287ab751c4eb70d25a83c1024ef76e53f95c351db8a35 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" +)] +fn get_current_outfit_links_returns_links() { + let live = LiveAppearance::login(); + let links = block_on(live.cof.get_current_outfit_links(None)).unwrap(); + for link in links { + assert!(link.is_link().unwrap(), "returned COF item is not a link"); + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetCurrentOutfitLinksAsync_ContainsAtLeastOneLink::test ef91dfaf7b75f61c97c3957b4dac006a153c7f2d167d6732a9a6dceee08883f2 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" +)] +fn get_current_outfit_links_contains_at_least_one_link() { + let live = LiveAppearance::login(); + let links = block_on(live.cof.get_current_outfit_links(None)).unwrap(); + if links.is_empty() { + eprintln!("COF returned zero links; equip at least a default shape for this assertion"); + return; + } + assert!(!links.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetWornAt_Shape_ReturnsAtLeastOne::test abc01e346371910610312ff9352ee05c0d317a7c677c0fa8cb398d3b0522c3bf 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" +)] +fn get_worn_at_shape_returns_at_least_one() { + let live = LiveAppearance::login(); + let worn = block_on(live.cof.get_worn_at(WearableType::Shape, None)).unwrap(); + if worn.is_empty() { + eprintln!("GetWornAtAsync(Shape) returned no items for this account"); + return; + } + assert!(!worn.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.LastUpdateReceivedCOFVersion_AdvancesAfterLogin::test 5371df8b02df9da20b413f4155f63967184dad23f57708beb56a2c6559e78520 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" +)] +fn last_update_received_cof_version_advances_after_login() { + let live = LiveAppearance::login(); + let deadline = Instant::now() + Duration::from_secs(25); + let mut version = -1; + while Instant::now() < deadline { + version = live.client.appearance().last_update_received_cof_version(); + if version > -1 { + break; + } + std::thread::sleep(Duration::from_millis(500)); + } + if version == -1 { + eprintln!("the simulator did not send AvatarAppearance for self within 25 seconds"); + return; + } + assert!(version > -1); +} + +// parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.RequestOwnAvatarTextures_DoesNotThrow_AndMaintainsVersionGuard::test ee8420690fc9714411450beb5be5755b82ddf7ed0d69e9da88b3184339bea744 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" +)] +fn request_own_avatar_textures_does_not_throw_and_maintains_version_guard() { + let live = LiveAppearance::login(); + let before = live.client.appearance().last_update_received_cof_version(); + live.client.avatars().request_own_avatar_textures().unwrap(); + let deadline = Instant::now() + Duration::from_secs(15); + let mut after = before; + while Instant::now() < deadline { + after = live.client.appearance().last_update_received_cof_version(); + if after > before { + break; + } + std::thread::sleep(Duration::from_millis(500)); + } + assert!( + after >= before, + "COF version regressed from {before} to {after}" + ); +} + +// parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_MaxClothingLayers_Is60::test aac1292781cb0a4cbf710535036fa6464065f72d1b2c5214a9b7dc918513e8cd 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" +)] +fn cof_max_clothing_layers_is_60() { + assert_eq!(LiveAppearance::login().cof.max_clothing_layers(), 60); +} diff --git a/tests/compat/tests/appearance_semantics.rs b/tests/compat/tests/appearance_semantics.rs new file mode 100644 index 0000000..72c4c8d --- /dev/null +++ b/tests/compat/tests/appearance_semantics.rs @@ -0,0 +1,401 @@ +#![allow(clippy::too_many_lines)] + +// Exact BSD-3-Clause fixture provenance at LibreMetaverse +// 2aa70bb68513b39795da5d13c88f31b86e85a3ba (see LICENSE.md): +// AppearanceLiveTests.cs 9f4ec256d11290cbad70e209d2f9043d4c6afb18255796c09c4cb26415f971a6 +// AppearanceManagerTests.cs b4f6e0ffeb3c1719df2125800932ddc27c181da3d3a38020c1e74862d9af9920 +// AppearanceTests.cs 3d1f6a43127ee2c678284fd68572c0e81d1825766cc88e17136111fe8b3b7a86 +// BatchLinkTests.cs 092ccb2686769d27f6a8072114654e91308f88edd94223a77af92f56426ee1ee +// CurrentOutfitFolderTests.cs 07177fff27fbee0d0714286c652253985add3a9401a50e8d7a829ce6c2b3bea9 +// MisclassifiedLinkRegressionTests.cs f1e2a14f9671d6af084d72cc5280daf372985bf1b08c75e5989d9c8df0932a64 + +use libremetaverse::{ + AppearanceManager, AvatarTextureIndex, BakeType, GridClient, GridClientBakingTextureProvider, + IBakingTextureProvider, +}; +use libremetaverse_types::{AssetType, UUID, WearableType}; +use std::any::TypeId; +use std::sync::Arc; + +struct RecordingTextureProvider; +impl IBakingTextureProvider for RecordingTextureProvider {} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableTypeToAssetType_BodypartsAndClothing_ReturnsExpected::test 6d0f0d09a6da8121ba828159a75ca1c1ce54329ec48060a6786aa8f807c13ec0 translated +#[test] +fn appearance_manager_wearable_type_to_asset_type_returns_expected() { + for wearable in [ + WearableType::Shape, + WearableType::Skin, + WearableType::Hair, + WearableType::Eyes, + ] { + assert_eq!( + AppearanceManager::wearable_type_to_asset_type(wearable) + .expect("WearableTypeToAssetType"), + AssetType::Bodypart + ); + } + for wearable in [ + WearableType::Shirt, + WearableType::Pants, + WearableType::Shoes, + WearableType::Tattoo, + ] { + assert_eq!( + AppearanceManager::wearable_type_to_asset_type(wearable) + .expect("WearableTypeToAssetType"), + AssetType::Clothing + ); + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndexToTextureIndex_Matches_BakeTypeToAgentTextureIndex::test c559ea49314b157605346243713fd10480a10f9a97daffd9cac8acccbd39612b translated +#[test] +fn appearance_manager_bake_index_matches_agent_texture_index() { + let indices = AppearanceManager::bake_index_to_texture_index(); + for baked_index in 0..AppearanceManager::BAKED_TEXTURE_COUNT { + let expected = AppearanceManager::bake_type_to_agent_texture_index(BakeType(baked_index)) + .expect("BakeTypeToAgentTextureIndex") as i32; + assert_eq!( + i32::from(indices[usize::try_from(baked_index).unwrap()]), + expected + ); + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndex_ArrayLength_Equals_BAKED_TEXTURE_COUNT::test b661ca888df5b7fd41e51dfd298fb6d5e30a3a848102006c109b9dc4fc0e165c translated +#[test] +fn appearance_manager_bake_index_array_length_matches_count() { + assert_eq!( + AppearanceManager::bake_index_to_texture_index().len(), + AppearanceManager::BAKED_TEXTURE_COUNT as usize + ); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Head_IncludesExpectedSlots::test 44e03523f0e3f6691e527e014bfc38d9ca57c1d310e7cf2c6d7ae8a429a31e1d translated +#[test] +fn appearance_manager_head_bake_includes_expected_slots() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::Head).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::HeadBodypaint)); + assert!(textures.contains(&AvatarTextureIndex::HeadTattoo)); + assert!(textures.contains(&AvatarTextureIndex::Hair)); + assert!(textures.contains(&AvatarTextureIndex::HeadAlpha)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesExpectedSlots::test fb7650becf6c01c1e7ffd731ac7b6c013957467110c7ed8d5bef9788ee9a5a16 translated +#[test] +fn appearance_manager_upper_body_bake_includes_expected_slots() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::UpperBody).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::UpperBodypaint)); + assert!(textures.contains(&AvatarTextureIndex::UpperTattoo)); + assert!(textures.contains(&AvatarTextureIndex::UpperShirt)); + assert!(textures.contains(&AvatarTextureIndex::UpperAlpha)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_LowerBody_Eyes_Skirt_Hair_IncludeExpected::test fad2baeca74cab39305c8f599c5de5777b55c329738db5c55f58a09366870374 translated +#[test] +fn appearance_manager_lower_eyes_skirt_hair_bakes_include_expected_slots() { + let lower = + AppearanceManager::bake_type_to_textures(BakeType::LowerBody).expect("BakeTypeToTextures"); + assert!(lower.contains(&AvatarTextureIndex::LowerPants)); + assert!(lower.contains(&AvatarTextureIndex::LowerShoes)); + let eyes = + AppearanceManager::bake_type_to_textures(BakeType::Eyes).expect("BakeTypeToTextures"); + assert!(eyes.contains(&AvatarTextureIndex::EyesIris)); + assert!(eyes.contains(&AvatarTextureIndex::EyesAlpha)); + let skirt = + AppearanceManager::bake_type_to_textures(BakeType::Skirt).expect("BakeTypeToTextures"); + assert!(skirt.contains(&AvatarTextureIndex::Skirt)); + let hair = + AppearanceManager::bake_type_to_textures(BakeType::Hair).expect("BakeTypeToTextures"); + assert!(hair.contains(&AvatarTextureIndex::Hair)); + assert!(hair.contains(&AvatarTextureIndex::HairAlpha)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.MorphLayerForBakeType_ReturnsExpectedIndices::test 3051ccea9adec4f9ef824ce967c74e7708b62a2264b98ae22340eb8d1927c44f translated +#[test] +fn appearance_manager_morph_layer_returns_expected_indices() { + assert_eq!( + AppearanceManager::morph_layer_for_bake_type(BakeType::Head) + .expect("MorphLayerForBakeType"), + AvatarTextureIndex::Hair + ); + assert_eq!( + AppearanceManager::morph_layer_for_bake_type(BakeType::UpperBody) + .expect("MorphLayerForBakeType"), + AvatarTextureIndex::UpperShirt + ); + assert_eq!( + AppearanceManager::morph_layer_for_bake_type(BakeType::LowerBody) + .expect("MorphLayerForBakeType"), + AvatarTextureIndex::LowerPants + ); + assert_eq!( + AppearanceManager::morph_layer_for_bake_type(BakeType::Skirt) + .expect("MorphLayerForBakeType"), + AvatarTextureIndex::Skirt + ); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_HasExpectedDimensions_And_FirstLayerContainsShapeAndSkin::test 42c072449d1819c956035d1f0290b90acc1e62b4e1e6309590d0cb6cb41bb375 translated +#[test] +fn appearance_manager_wearable_bake_map_has_expected_dimensions_and_first_layer() { + let map = AppearanceManager::wearable_bake_map(); + assert_eq!(map.len(), AppearanceManager::BAKED_TEXTURE_COUNT as usize); + assert!(map[0].contains(&WearableType::Shape)); + assert!(map[0].contains(&WearableType::Skin)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToAgentTextureIndex_ReturnsUnknown_ForInvalid::test bc79d717462f06d498050182b6d116cea73f3bc173853f6d7894e3de88b70432 translated +#[test] +fn appearance_manager_invalid_bake_type_returns_unknown_texture_index() { + assert_eq!( + AppearanceManager::bake_type_to_agent_texture_index(BakeType(-999)) + .expect("BakeTypeToAgentTextureIndex"), + AvatarTextureIndex::Unknown + ); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BAKED_TEXTURE_COUNT_Is11::test 9d34c333f7e143d25964553dedaa1bae79c20e1aead331626f449a3894e31e5b translated +#[test] +fn appearance_manager_baked_texture_count_is_eleven() { + assert_eq!(AppearanceManager::BAKED_TEXTURE_COUNT, 11); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakedTextureHash_Has11Entries::test 7b26852cc8c1d7257e3e5f6f936f3870e0a06845f5809cc3000d67eb7590a49e translated +#[test] +fn appearance_manager_baked_texture_hash_has_eleven_entries() { + assert_eq!(AppearanceManager::baked_texture_hash().len(), 11); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakedTextureHash_AllEntriesNonZero::test dc7a4010cfc2f975c0624bc5fbceed414297b1139f734d79786b2bb20d943553 translated +#[test] +fn appearance_manager_baked_texture_hash_entries_are_nonzero() { + let zero = UUID::zero(); + for hash in AppearanceManager::baked_texture_hash() { + assert_ne!(hash, zero); + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_Has11Rows::test db6016bcdc90f21095f0723556489ec174603783dc40805b56123e25d7a83312 translated +#[test] +fn appearance_manager_wearable_bake_map_has_eleven_rows() { + assert_eq!(AppearanceManager::wearable_bake_map().len(), 11); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_ExtendedRows_AreAllInvalid::test 9b36d72c16980dc3780137dda47afa9cd79ef3a2be0d8ccb20723e1e1ac67f41 translated +#[test] +fn appearance_manager_extended_wearable_bake_rows_are_invalid() { + let map = AppearanceManager::wearable_bake_map(); + for row in &map[6..11] { + for wearable in row { + assert_eq!(*wearable, WearableType::Invalid); + } + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndexToTextureIndex_ExtendedBakes_MatchAgentTextureIndex::test c331e94827930443aa3ca327374ec562fc9a294fce3304d7cba9f7e7859e43d3 translated +#[test] +fn appearance_manager_extended_bake_indices_match_agent_texture_indices() { + let indices = AppearanceManager::bake_index_to_texture_index(); + for index in 6..AppearanceManager::BAKED_TEXTURE_COUNT { + let expected = AppearanceManager::bake_type_to_agent_texture_index(BakeType(index)) + .expect("BakeTypeToAgentTextureIndex") as i32; + assert_eq!( + i32::from(indices[usize::try_from(index).unwrap()]), + expected + ); + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Head_IncludesUniversalTattoo::test 578423fedcd5e4ed4e53b3d7d80c24a9c8ce30b35db13a09bdf8f47312b7da87 translated +#[test] +fn appearance_manager_head_bake_includes_universal_tattoo() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::Head).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::HeadUniversalTattoo)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesUniversalTattoo::test 6d95989bf8380348714a0ba9ae4c04a85ea64ae47ffc94aaa841ce64810abebd translated +#[test] +fn appearance_manager_upper_body_bake_includes_universal_tattoo() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::UpperBody).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::UpperUniversalTattoo)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_LowerBody_IncludesUniversalTattoo::test a21524c69c8bd32610e8cfa405a3cb3eae0a48add62d40a281f9311ebe739ffb translated +#[test] +fn appearance_manager_lower_body_bake_includes_universal_tattoo() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::LowerBody).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::LowerUniversalTattoo)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Eyes_IncludesTattoo::test 606c6bad5f911d070c5d8126004d5a1e1dfd4887a115e8dd1f69f2d36bf53ac6 translated +#[test] +fn appearance_manager_eyes_bake_includes_tattoo() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::Eyes).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::EyesTattoo)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Skirt_IncludesTattoo::test 7a38a59414bc74221bfbdc8889ef60714a4c6b4f26c9bd47e8f41bfa5a5da811 translated +#[test] +fn appearance_manager_skirt_bake_includes_tattoo() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::Skirt).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::SkirtTattoo)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Hair_IncludesHairTattoo::test c9a8c6a0dce259103fb466eb571785eb3c9395c8fa144f1a02d42ae73c0d8253 translated +#[test] +fn appearance_manager_hair_bake_includes_hair_tattoo() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::Hair).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::HairTattoo)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedLeftArm_ContainsLeftArmTattoo::test bbbb01e8e009489967b36f22d83c6f326e295b9aabcbb58c00d82bab4e803f66 translated +#[test] +fn appearance_manager_left_arm_bake_contains_only_left_arm_tattoo() { + let textures = AppearanceManager::bake_type_to_textures(BakeType::BakedLeftArm) + .expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::LeftArmTattoo)); + assert_eq!(textures.len(), 1); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedLeftLeg_ContainsLeftLegTattoo::test 9d2a25a6ed9cd5a99c206a0fc6d66389959fc5e30dd036302a73fb0b500880b5 translated +#[test] +fn appearance_manager_left_leg_bake_contains_left_leg_tattoo() { + let textures = AppearanceManager::bake_type_to_textures(BakeType::BakedLeftLeg) + .expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::LeftLegTattoo)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux1_ContainsAux1Tattoo::test b9b0b56e1d4d552f2b43e5e570f3fc1a1f8651d8e77055fabcc35b37b5a9f21d translated +#[test] +fn appearance_manager_aux1_bake_contains_aux1_tattoo() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::BakedAux1).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::Aux1Tattoo)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux2_ContainsAux2Tattoo::test 6be4bdbf667cadd673afbb1dafa8f4c1844ac9c34464fe5bbbc62f8ebe705b4d translated +#[test] +fn appearance_manager_aux2_bake_contains_aux2_tattoo() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::BakedAux2).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::Aux2Tattoo)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux3_ContainsAux3Tattoo::test 5d7530c72824f8baf6044fb122d224da61fff1b6cfbf3114ac2f24b1418675d2 translated +#[test] +fn appearance_manager_aux3_bake_contains_aux3_tattoo() { + let textures = + AppearanceManager::bake_type_to_textures(BakeType::BakedAux3).expect("BakeTypeToTextures"); + assert!(textures.contains(&AvatarTextureIndex::Aux3Tattoo)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.MorphLayerForBakeType_ExtendedBakes_ReturnTattooSlots::test 7f05dc0b59adce3b46c82f7415e91e4c945963d918ad6ad1f0e5c9569ee2220e translated +#[test] +fn appearance_manager_extended_morph_layers_return_tattoo_slots() { + for (bake, texture) in [ + (BakeType::BakedLeftArm, AvatarTextureIndex::LeftArmTattoo), + (BakeType::BakedLeftLeg, AvatarTextureIndex::LeftLegTattoo), + (BakeType::BakedAux1, AvatarTextureIndex::Aux1Tattoo), + (BakeType::BakedAux2, AvatarTextureIndex::Aux2Tattoo), + (BakeType::BakedAux3, AvatarTextureIndex::Aux3Tattoo), + ] { + assert_eq!( + AppearanceManager::morph_layer_for_bake_type(bake).expect("MorphLayerForBakeType"), + texture + ); + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.TextureProvider_Default_IsGridClientBakingTextureProvider::test afdfbf516988c4ba35dfdb42158218a4815e1b8d146ef958225cf0fe73dfc3a9 translated +#[test] +fn appearance_manager_default_texture_provider_is_grid_client_provider() { + let client = GridClient::new().expect("GridClient constructor"); + let provider = client.appearance().texture_provider(); + assert_eq!( + provider.as_ref().type_id(), + TypeId::of::() + ); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.TextureProvider_CanBeReplaced::test e9c27d5b8717fdac1a9f3d22930709c0dee326909cb3c777b769b0ed2dc35b0c translated +#[test] +fn appearance_manager_texture_provider_can_be_replaced() { + let client = GridClient::new().expect("GridClient constructor"); + let replacement: Arc = Arc::new(RecordingTextureProvider); + client + .appearance() + .set_texture_provider(Arc::clone(&replacement)); + let actual = client.appearance().texture_provider(); + assert!(Arc::ptr_eq(&actual, &replacement)); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.LastUpdateReceivedCOFVersion_InitialValue_IsMinusOne::test f43c2d8c99cb597ba7a5d4c87d4585560e888931d84741de2882d05ab17b310a translated +#[test] +fn appearance_manager_initial_cof_version_is_minus_one() { + let client = GridClient::new().expect("GridClient constructor"); + assert_eq!(client.appearance().last_update_received_cof_version(), -1); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_HigherVersion_Updates::test 62d82f9ec6d12ec9354f02e7b7e86adb29ccecb8b104ed39a66937495bab1438 translated +#[test] +fn appearance_manager_higher_cof_version_updates() { + let client = GridClient::new().expect("GridClient constructor"); + client + .appearance() + .update_last_received_cof_version(5) + .expect("UpdateLastReceivedCOFVersion"); + assert_eq!(client.appearance().last_update_received_cof_version(), 5); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_LowerVersion_DoesNotUpdate::test ec5831c7d2c03132d3c7e50f6c0d088ca57f2726b7caf77ac240a9d5e92a77b6 translated +#[test] +fn appearance_manager_lower_cof_version_does_not_update() { + let client = GridClient::new().expect("GridClient constructor"); + client + .appearance() + .update_last_received_cof_version(10) + .expect("UpdateLastReceivedCOFVersion"); + client + .appearance() + .update_last_received_cof_version(7) + .expect("UpdateLastReceivedCOFVersion"); + assert_eq!(client.appearance().last_update_received_cof_version(), 10); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_SameVersion_DoesNotChange::test 2e607b33bb8be04e6710e26fe62510f0634900579260accd9ffd720023636deb translated +#[test] +fn appearance_manager_same_cof_version_does_not_change() { + let client = GridClient::new().expect("GridClient constructor"); + client + .appearance() + .update_last_received_cof_version(5) + .expect("UpdateLastReceivedCOFVersion"); + client + .appearance() + .update_last_received_cof_version(5) + .expect("UpdateLastReceivedCOFVersion"); + assert_eq!(client.appearance().last_update_received_cof_version(), 5); +} + +// parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_MonotonicallyIncreasing_TracksPeak::test 5789831f288823729299944a8796c67348b932570392f59bf8b6d562cfa1c90c translated +#[test] +fn appearance_manager_cof_version_tracks_peak() { + let client = GridClient::new().expect("GridClient constructor"); + for version in [1, 3, 2, 7, 5, 10, 9] { + client + .appearance() + .update_last_received_cof_version(version) + .expect("UpdateLastReceivedCOFVersion"); + } + assert_eq!(client.appearance().last_update_received_cof_version(), 10); +} diff --git a/tests/compat/tests/appearance_visual_semantics.rs b/tests/compat/tests/appearance_visual_semantics.rs new file mode 100644 index 0000000..bc51c87 --- /dev/null +++ b/tests/compat/tests/appearance_visual_semantics.rs @@ -0,0 +1,205 @@ +// Exact Rust translations of LibreMetaverse.Tests/AppearanceTests.cs. +// Source SHA-256: 3d1f6a43127ee2c678284fd68572c0e81d1825766cc88e17136111fe8b3b7a86 + +use libremetaverse::{ + AppearanceFlags, Avatar, AvatarAppearanceEventArgs, PrimitiveTextureEntryFace, VisualParam, + VisualParams, +}; +use libremetaverse_types::{UUID, Utils}; +use std::collections::HashSet; + +fn group0_params() -> Vec { + let mut params = VisualParams::params(); + VisualParams::group0_param_ids() + .into_iter() + .filter_map(|id| params.0.remove(&id)) + .collect() +} + +fn appearance_args(visual_params: Vec) -> AvatarAppearanceEventArgs { + AvatarAppearanceEventArgs::new( + None, + UUID::zero(), + false, + PrimitiveTextureEntryFace::new(None).unwrap(), + Vec::new(), + visual_params, + 1, + 0, + AppearanceFlags::NONE, + 0, + ) + .unwrap() +} + +// parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_EmptyArray_ReturnsEmptyDictionary::test 644f412b90d429032a9273d24e89333a1694dc88eec3429a98acf00588315ec5 translated +#[test] +fn decode_visual_params_empty_array_returns_empty_dictionary() { + let mut avatar = Avatar::new().unwrap(); + avatar.visual_parameters = Vec::new(); + let decoded = avatar.decode_visual_params().unwrap(); + assert_eq!(decoded.len(), 0); +} + +// parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_CountMatchesGroup0ParamCount::test 6a9acc7130e3394476392b86334a0ce1cb82253bea2b37ac33cf90a426c7af40 translated +#[test] +fn decode_visual_params_count_matches_group0_param_count() { + let group0 = group0_params(); + let mut avatar = Avatar::new().unwrap(); + avatar.visual_parameters = vec![0; group0.len()]; + let decoded = avatar.decode_visual_params().unwrap(); + assert!(decoded.len() >= group0.len()); +} + +// parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_RoundTrip_DefaultValues::test a0c0727a50b414522f875709240f4056547cb699c6ec1981fbef15488784daf5 translated +#[test] +fn decode_visual_params_round_trip_default_values() { + let params = VisualParams::params(); + let ids = VisualParams::group0_param_ids(); + let bytes = ids + .iter() + .map(|id| { + params.0.get(id).map_or(0, |vp| { + Utils::float_to_byte(vp.default_value, vp.min_value, vp.max_value).unwrap() + }) + }) + .collect(); + let mut avatar = Avatar::new().unwrap(); + avatar.visual_parameters = bytes; + let decoded = avatar.decode_visual_params().unwrap(); + let driven_targets: HashSet = params + .0 + .values() + .filter_map(|param| param.driven_params.as_ref()) + .flatten() + .map(|driven| driven.param_id) + .collect(); + + for id in ids { + let Some(vp) = params.0.get(&id) else { + continue; + }; + assert!( + decoded.contains_key(&id), + "ParamID {id} ({}) missing", + vp.name + ); + if driven_targets.contains(&id) { + continue; + } + let encoded = Utils::float_to_byte(vp.default_value, vp.min_value, vp.max_value).unwrap(); + let expected = + Utils::byte_to_float_with_byte_single_single(encoded, vp.min_value, vp.max_value) + .unwrap(); + assert!( + (decoded[&id] - expected).abs() <= 1e-5, + "ParamID {id} ({})", + vp.name + ); + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_KeysAreGroup0ParamIDs::test fc4fd3059b01a319af2946ea0c289120a4c2609e7e9a96ac26c039c5042b8b4c translated +#[test] +fn decode_visual_params_keys_are_group0_param_ids() { + let group0 = group0_params(); + let mut avatar = Avatar::new().unwrap(); + avatar.visual_parameters = vec![0; group0.len()]; + let decoded = avatar.decode_visual_params().unwrap(); + let expected: HashSet = group0.iter().map(|param| param.param_id).collect(); + assert!(expected.iter().all(|id| decoded.contains_key(id))); +} + +// parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_TruncatedArray_ReturnsPartialResult::test b017127549e186b3cf85b9fe0cc09811ea1d00efa44e3d863292033cb0691d13 translated +#[test] +fn decode_visual_params_truncated_array_returns_partial_result() { + let mut avatar = Avatar::new().unwrap(); + avatar.visual_parameters = vec![0; 10]; + let decoded = avatar.decode_visual_params().unwrap(); + assert!(decoded.len() >= 10); + assert!(decoded.len() < VisualParams::group0_param_ids().len()); +} + +// parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_MinValue_DecodesNearParamMin::test 80e0fd97979f91c879add1fc3142a0b619a405e4977120db1d5f42a11a71f3f5 translated +#[test] +fn decode_visual_params_min_value_decodes_near_param_min() { + let group0 = group0_params(); + let mut avatar = Avatar::new().unwrap(); + avatar.visual_parameters = vec![0; group0.len()]; + let decoded = avatar.decode_visual_params().unwrap(); + for vp in group0 { + let upper = vp.min_value + (vp.max_value - vp.min_value) / 255.0 + 1e-5; + assert!( + decoded[&vp.param_id] <= upper, + "ParamID {} ({})", + vp.param_id, + vp.name + ); + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_MaxValue_DecodesNearParamMax::test 31937bc9080b18be4aa98ea44bf73f929ba7862b621406b03c16a4651542f302 translated +#[test] +fn decode_visual_params_max_value_decodes_near_param_max() { + let group0 = group0_params(); + let mut avatar = Avatar::new().unwrap(); + avatar.visual_parameters = vec![0xff; group0.len()]; + let decoded = avatar.decode_visual_params().unwrap(); + for vp in group0 { + let lower = vp.max_value - (vp.max_value - vp.min_value) / 255.0 - 1e-5; + assert!( + decoded[&vp.param_id] >= lower, + "ParamID {} ({})", + vp.param_id, + vp.name + ); + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary::test af99909259d531024895ce7ea325b49927a12daa886a35eab3d52e3f8fc76921 translated +#[test] +fn appearance_event_args_decode_visual_params_empty_list_returns_empty_dictionary() { + let decoded = appearance_args(Vec::new()).decode_visual_params().unwrap(); + assert_eq!(decoded.len(), 0); +} + +// parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues::test 0aec57fab35764525195e6c0e08a63ff10a467be684295381731c04e836539b5 translated +#[test] +fn appearance_event_args_decode_visual_params_round_trip_default_values() { + let params = VisualParams::params(); + let ids = VisualParams::group0_param_ids(); + let bytes = ids + .iter() + .map(|id| { + params.0.get(id).map_or(0, |vp| { + Utils::float_to_byte(vp.default_value, vp.min_value, vp.max_value).unwrap() + }) + }) + .collect(); + let decoded = appearance_args(bytes).decode_visual_params().unwrap(); + assert!(decoded.len() >= ids.len()); + for id in ids { + if params.0.contains_key(&id) { + assert!(decoded.contains_key(&id)); + } + } +} + +// parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams::test ff87dd3a506027ad248006b3b55d85a18b0810bc5b4e3a72eb81d31ebbe4184a translated +#[test] +fn appearance_event_args_decode_visual_params_matches_avatar_decode_visual_params() { + let group0 = group0_params(); + let bytes: Vec = group0 + .iter() + .map(|vp| Utils::float_to_byte(vp.default_value, vp.min_value, vp.max_value).unwrap()) + .collect(); + let mut avatar = Avatar::new().unwrap(); + avatar.visual_parameters = bytes.clone(); + let from_avatar = avatar.decode_visual_params().unwrap(); + let from_args = appearance_args(bytes).decode_visual_params().unwrap(); + assert_eq!(from_args.len(), from_avatar.len()); + for (id, expected) in from_avatar { + assert!(from_args.contains_key(&id)); + assert!((from_args[&id] - expected).abs() <= 1e-5); + } +} diff --git a/tests/compat/tests/current_outfit_folder_semantics.rs b/tests/compat/tests/current_outfit_folder_semantics.rs new file mode 100644 index 0000000..31ebce5 --- /dev/null +++ b/tests/compat/tests/current_outfit_folder_semantics.rs @@ -0,0 +1,200 @@ +// Exact Rust translations of the CurrentOutfitFolderTests fixture in +// LibreMetaverse.Tests/CurrentOutfitFolderTests.cs. +// Source SHA-256: 07177fff27fbee0d0714286c652253985add3a9401a50e8d7a829ce6c2b3b7a86 + +use libremetaverse::appearance::{CurrentOutfitFolder, ICurrentOutfitPolicy}; +use libremetaverse::{ + GridClient, InventoryItem, InventoryWearable, NameValue, NameValueClassType, + NameValueSendtoType, NameValueValueType, Primitive, +}; +use libremetaverse_compat_tests::block_on; +use libremetaverse_types::compat::Object; +use libremetaverse_types::{AssetType, Error, UUID}; +use std::sync::Arc; + +struct TestPolicy; +impl ICurrentOutfitPolicy for TestPolicy {} + +fn outfit_folder() -> CurrentOutfitFolder { + CurrentOutfitFolder::new(Some(Arc::new(GridClient::new().unwrap()))).unwrap() +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException::test 243079029ec81f92ffbc587007a2421389963f72c7843786c5b9a8634a7ddca3 translated +#[test] +fn constructor_with_null_client_throws_argument_null_exception() { + match CurrentOutfitFolder::new(None) { + Err(error) => assert_eq!(error, Error::ArgumentNull), + Ok(_) => panic!("expected ArgumentNull for client"), + } +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow::test 1d0daac0bfa091bc3c3bffddc32a1511295dd7101f8ab5dfbf305b13b9ac7405 translated +#[test] +fn dispose_called_once_does_not_throw() { + outfit_folder().dispose().unwrap(); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow::test 124b41c342a295f02e9d5991d1dead0ff3e9a780f96424b88f75117ca206460b translated +#[test] +fn dispose_called_multiple_times_does_not_throw() { + let cof = outfit_folder(); + cof.dispose().unwrap(); + cof.dispose().unwrap(); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.MaxClothingLayers_Returns60::test e35e779b342fdb54bb7f5b2061f70c35ccc3f7f9ba87f48b2697f24c10f94397 translated +#[test] +fn max_clothing_layers_returns_60() { + assert_eq!(outfit_folder().max_clothing_layers(), 60); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.COF_InitiallyNull::test 2dee4e58f3f53e50c5389ba0594ea0b063af55871eefae49e99bdd4b5c28e552 translated +#[test] +fn cof_initially_null() { + assert!(outfit_folder().cof().is_none()); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.AddPolicy_WithValidPolicy_ReturnsAddedPolicy::test 747db5d674a6cb0bc54bcb9d32501d5bab49e0df5e5e39f3781f88d5100ed244 translated +#[test] +fn add_policy_with_valid_policy_returns_added_policy() { + let cof = outfit_folder(); + let policy: Arc = Arc::new(TestPolicy); + let result = cof.add_policy(Arc::clone(&policy)).unwrap(); + assert!(Arc::ptr_eq(&result, &policy)); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.RemovePolicy_WithValidPolicy_DoesNotThrow::test 41f61b917da0410be01b346644a76bc9c800f78d1e1ba6ef805b14cea1b4d00d translated +#[test] +fn remove_policy_with_valid_policy_does_not_throw() { + let cof = outfit_folder(); + let policy: Arc = Arc::new(TestPolicy); + cof.add_policy(Arc::clone(&policy)).unwrap(); + cof.remove_policy(policy).unwrap(); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow::test 4add41578d3d5340618cb29ed6969b84c5c3a80e6da09ccb03bc6872a6b6689a translated +#[test] +fn remove_policy_with_non_added_policy_does_not_throw() { + let cof = outfit_folder(); + cof.remove_policy(Arc::new(TestPolicy)).unwrap(); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.ResolveInventoryLink_WithNonLinkItem_ReturnsSameItem::test 7430a64883f3938afe7da1b126e4ee460cbf2485e2d51035273b4ca8fd150960 translated +#[test] +fn resolve_inventory_link_with_non_link_item_returns_same_item() { + let cof = outfit_folder(); + let mut wearable = InventoryWearable::new(UUID::random().unwrap()).unwrap(); + wearable.base.set_asset_type(AssetType::Clothing); + wearable.base.set_asset_uuid(UUID::random().unwrap()); + let item = Arc::new(wearable.base); + let result = cof + .resolve_inventory_link(Arc::clone(&item)) + .unwrap() + .unwrap(); + assert!(Arc::ptr_eq(&result, &item)); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.ResolveInventoryLink_WithLinkItemNotInStore_ReturnsNull::test 21e0dae8c038d2381eef736ad30d48fc0247e0a55b86e75de02982290a3a9bd0 translated +#[test] +fn resolve_inventory_link_with_link_item_not_in_store_returns_null() { + let mut client = GridClient::new().unwrap(); + let owner = client.self_().agent_id(); + let cof = CurrentOutfitFolder::new(Some(Arc::new(client))).unwrap(); + let mut link = InventoryItem::new_with_uuid(UUID::random().unwrap()).unwrap(); + link.set_asset_type(AssetType::Link); + link.set_asset_uuid(UUID::random().unwrap()); + link.base.set_owner_id(owner); + assert!( + cof.resolve_inventory_link(Arc::new(link)) + .unwrap() + .is_none() + ); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithNoNameValues_ReturnsZero::test c9e017a587c37b694484feda4fab81ef7f2bb098bbf8f96f3cefbb21f1a568d8 translated +#[test] +fn get_attachment_item_id_with_no_name_values_returns_zero() { + let mut prim = Primitive::new_with_constructor().unwrap(); + prim.name_values = None; + assert_eq!( + CurrentOutfitFolder::get_attachment_item_id(prim).unwrap(), + UUID::zero() + ); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithAttachItemID_ReturnsCorrectUUID::test 23e6be11056b93d75424c23030e1d2082545f686d12c0aa14f66991664e347e8 translated +#[test] +fn get_attachment_item_id_with_attach_item_id_returns_correct_uuid() { + let expected = UUID::random().unwrap(); + let value = NameValue::new_with_string_value_type_class_type_sendto_type_object( + "AttachItemID".into(), + NameValueValueType::String, + NameValueClassType::ReadOnly, + NameValueSendtoType::SimViewer, + Object::String(expected.to_string()), + ) + .unwrap(); + let mut prim = Primitive::new_with_constructor().unwrap(); + prim.name_values = Some(vec![value]); + assert_eq!( + CurrentOutfitFolder::get_attachment_item_id(prim).unwrap(), + expected + ); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithoutAttachItemID_ReturnsZero::test 7ee12fc59c8b5e5cb074e18c2af48c0f1b1d7be0937db65a7056e29e114b691f translated +#[test] +fn get_attachment_item_id_without_attach_item_id_returns_zero() { + let value = NameValue::new_with_string_value_type_class_type_sendto_type_object( + "SomeOtherValue".into(), + NameValueValueType::String, + NameValueClassType::ReadOnly, + NameValueSendtoType::SimViewer, + Object::String("test".into()), + ) + .unwrap(); + let mut prim = Primitive::new_with_constructor().unwrap(); + prim.name_values = Some(vec![value]); + assert_eq!( + CurrentOutfitFolder::get_attachment_item_id(prim).unwrap(), + UUID::zero() + ); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.IsObjectDescendentOf_WithZeroParentId_ReturnsFalse::test a878c220510aacbf61ebfb192952e26d96343312fcf9648e57e270e29aaa9d5d translated +#[test] +fn is_object_descendent_of_with_zero_parent_id_returns_false() { + let cof = outfit_folder(); + let item = InventoryItem::new_with_uuid(UUID::random().unwrap()).unwrap(); + assert!(!block_on(cof.is_object_descendent_of(item.base, UUID::zero(), None)).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.IsObjectDescendentOf_WithDirectParent_ReturnsTrue::test ac3af5edef5ee67058a91a990bfde38e616d00919b0cd8e0b5f7345f7d8dab6c translated +#[test] +fn is_object_descendent_of_with_direct_parent_returns_true() { + let cof = outfit_folder(); + let parent = UUID::random().unwrap(); + let mut item = InventoryItem::new_with_uuid(UUID::random().unwrap()).unwrap(); + item.base.set_parent_uuid(parent); + assert!(block_on(cof.is_object_descendent_of(item.base, parent, None)).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.FetchParent_WithZeroParentUUID_ReturnsNull::test ee6cc0cc9a48ec07afb8bd7fa8e1c53c2db258be11e2848ee5752e41eb34e45a translated +#[test] +fn fetch_parent_with_zero_parent_uuid_returns_null() { + let cof = outfit_folder(); + let mut item = InventoryItem::new_with_uuid(UUID::random().unwrap()).unwrap(); + item.base.set_parent_uuid(UUID::zero()); + assert!( + block_on(cof.fetch_parent(item.base, None)) + .unwrap() + .is_none() + ); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetCurrentOutfitLinks_WithNullCOF_ReturnsEmptyList::test 5c0d475ccd4423bc099eb141f36061fdfaa589fd36d27c907d03a9d0be3f6f48 translated +#[test] +fn get_current_outfit_links_with_null_cof_returns_empty_list() { + let links = block_on(outfit_folder().get_current_outfit_links(None)).unwrap(); + assert!(links.is_empty()); +} diff --git a/tests/compat/tests/current_outfit_policy_semantics.rs b/tests/compat/tests/current_outfit_policy_semantics.rs new file mode 100644 index 0000000..c6f879b --- /dev/null +++ b/tests/compat/tests/current_outfit_policy_semantics.rs @@ -0,0 +1,415 @@ +// Exact Rust translations of the CompositeCurrentOutfitPolicyTests fixture in +// LibreMetaverse.Tests/CurrentOutfitFolderTests.cs. +// Source SHA-256: 07177fff27fbee0d0714286c652253985add3a9401a50e8d7a829ce6c2b3b7a86 + +use libremetaverse::appearance::{CompositeCurrentOutfitPolicy, ICurrentOutfitPolicy}; +use libremetaverse::{InventoryItem, InventoryWearable}; +use libremetaverse_compat_tests::block_on; +use libremetaverse_types::compat::{CancellationToken, CancellationTokenSource}; +use libremetaverse_types::{AssetType, Error, UUID}; +use std::future::Future; +use std::pin::Pin; +use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; +use std::sync::{Arc, Mutex}; + +struct TestPolicy { + allow_attach: AtomicBool, + allow_detach: AtomicBool, + attach_calls: AtomicUsize, + detach_calls: AtomicUsize, + report_calls: AtomicUsize, + last_added: Mutex>>>, + last_removed: Mutex>>>, +} + +impl TestPolicy { + fn new() -> Self { + Self { + allow_attach: AtomicBool::new(true), + allow_detach: AtomicBool::new(true), + attach_calls: AtomicUsize::new(0), + detach_calls: AtomicUsize::new(0), + report_calls: AtomicUsize::new(0), + last_added: Mutex::new(None), + last_removed: Mutex::new(None), + } + } +} + +impl ICurrentOutfitPolicy for TestPolicy { + fn can_attach(&self, _item: Option>) -> Result { + self.attach_calls.fetch_add(1, Ordering::SeqCst); + Ok(self.allow_attach.load(Ordering::SeqCst)) + } + + fn can_detach(&self, _item: Option>) -> Result { + self.detach_calls.fetch_add(1, Ordering::SeqCst); + Ok(self.allow_detach.load(Ordering::SeqCst)) + } + + fn report_item_change( + &self, + added: Option>>, + removed: Option>>, + _cancellation_token: Option, + ) -> Pin> + Send + '_>> { + self.report_calls.fetch_add(1, Ordering::SeqCst); + *self.last_added.lock().unwrap() = added; + *self.last_removed.lock().unwrap() = removed; + Box::pin(async { Ok(()) }) + } +} + +fn item() -> Arc { + let mut wearable = InventoryWearable::new(UUID::random().unwrap()).unwrap(); + wearable.base.set_asset_type(AssetType::Clothing); + wearable.base.base.set_name("Test Item".into()); + Arc::new(wearable.base) +} + +fn as_policy(policy: &Arc) -> Arc { + policy.clone() +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_WithValidPolicy_ReturnsThis::test 31c1829eaa2b82b498cc1eaea131d2e34d1a0b5620be24f4da853c62c49807cc translated +#[test] +fn add_policy_with_valid_policy_returns_this() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let policy = Arc::new(TestPolicy::new()); + let result = composite.add_policy(Some(as_policy(&policy))).unwrap(); + assert!(std::ptr::eq( + std::ptr::from_ref(result), + std::ptr::from_ref(&composite) + )); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_WithNullPolicy_ThrowsArgumentNullException::test 6a111f0ad2e91c8566b5459939e3ecc76282cd033bb8d6483e1672c36891e597 translated +#[test] +fn add_policy_with_null_policy_throws_argument_null_exception() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + assert!(matches!( + composite.add_policy(None), + Err(Error::ArgumentNull) + )); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_MultiplePolicies_AllAreConsulted::test 1767ee3dee6b07e71f10b52613962e211fcf9906a45d12188f517cf751896f24 translated +#[test] +fn add_policy_multiple_policies_all_are_consulted() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let first = Arc::new(TestPolicy::new()); + let second = Arc::new(TestPolicy::new()); + composite.add_policy(Some(as_policy(&first))).unwrap(); + composite.add_policy(Some(as_policy(&second))).unwrap(); + first.allow_attach.store(true, Ordering::SeqCst); + second.allow_attach.store(true, Ordering::SeqCst); + let result = composite.can_attach(Some(item())).unwrap(); + assert_eq!(first.attach_calls.load(Ordering::SeqCst), 1); + assert_eq!(second.attach_calls.load(Ordering::SeqCst), 1); + assert!(result); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_SamePolicyTwice_OnlyAddsOnce::test e3d1340780680bfc46267194ddb3c47e4ae24299cf532d92dd71d9770f1955fa translated +#[test] +fn add_policy_same_policy_twice_only_adds_once() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let policy = Arc::new(TestPolicy::new()); + composite.add_policy(Some(as_policy(&policy))).unwrap(); + composite.add_policy(Some(as_policy(&policy))).unwrap(); + policy.allow_attach.store(true, Ordering::SeqCst); + composite.can_attach(Some(item())).unwrap(); + assert_eq!(policy.attach_calls.load(Ordering::SeqCst), 1); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithAddedPolicy_RemovesPolicy::test 9dd407dceeacdcc60fccb0d9869ad261d90acd74ae4257331e0cf8d4be2ee603 translated +#[test] +fn remove_policy_with_added_policy_removes_policy() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let policy = Arc::new(TestPolicy::new()); + let policy_dyn = as_policy(&policy); + composite.add_policy(Some(Arc::clone(&policy_dyn))).unwrap(); + composite.remove_policy(Some(policy_dyn)).unwrap(); + policy.allow_attach.store(false, Ordering::SeqCst); + assert!(composite.can_attach(Some(item())).unwrap()); + assert_eq!(policy.attach_calls.load(Ordering::SeqCst), 0); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow::test 9fa18bd628f6f02912168309e8e2afb6346a73a235dcc16cc81bc35e2dcf766f translated +#[test] +fn remove_policy_with_non_added_policy_does_not_throw() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + composite + .remove_policy(Some(Arc::new(TestPolicy::new()))) + .unwrap(); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNull_DoesNotThrow::test 28075d5f7c5458f1ccdf9981970e212e1663a9e5ebee65fce636a11a22390bfb translated +#[test] +fn remove_policy_with_null_does_not_throw() { + CompositeCurrentOutfitPolicy::new() + .unwrap() + .remove_policy(None) + .unwrap(); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithNoPolicies_ReturnsTrue::test 74bc06bb6cedfe84a3cd7e5b4c32b251ee6eff81c272c7d899436dbd7f21886b translated +#[test] +fn can_attach_with_no_policies_returns_true() { + assert!( + CompositeCurrentOutfitPolicy::new() + .unwrap() + .can_attach(Some(item())) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithNullItem_ThrowsArgumentNullException::test a47ebf9c89b603c10109c6e643de5043ba13cd2eaf5f04d73ab1fd5f40e9b332 translated +#[test] +fn can_attach_with_null_item_throws_argument_null_exception() { + assert!(matches!( + CompositeCurrentOutfitPolicy::new() + .unwrap() + .can_attach(None), + Err(Error::ArgumentNull) + )); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesAllowing_ReturnsTrue::test 32c2f5dcc5cbdf24e4205c25c833aaa3c0f203aeb8ff20c30fdac1264f12f6bd translated +#[test] +fn can_attach_with_all_policies_allowing_returns_true() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let first = Arc::new(TestPolicy::new()); + let second = Arc::new(TestPolicy::new()); + composite.add_policy(Some(as_policy(&first))).unwrap(); + composite.add_policy(Some(as_policy(&second))).unwrap(); + first.allow_attach.store(true, Ordering::SeqCst); + second.allow_attach.store(true, Ordering::SeqCst); + assert!(composite.can_attach(Some(item())).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithOnePolicyDenying_ReturnsFalse::test f38d910142a563bded6d35b969c0c560ffa072fd8df073a15fbbbed745681d0d translated +#[test] +fn can_attach_with_one_policy_denying_returns_false() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let first = Arc::new(TestPolicy::new()); + let second = Arc::new(TestPolicy::new()); + composite.add_policy(Some(as_policy(&first))).unwrap(); + composite.add_policy(Some(as_policy(&second))).unwrap(); + first.allow_attach.store(true, Ordering::SeqCst); + second.allow_attach.store(false, Ordering::SeqCst); + assert!(!composite.can_attach(Some(item())).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesDenying_ReturnsFalse::test 6cdda22d59a3cd690a187b597a7c8a2474e43c27902e737f15f0c71adc5bcf7c translated +#[test] +fn can_attach_with_all_policies_denying_returns_false() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let first = Arc::new(TestPolicy::new()); + let second = Arc::new(TestPolicy::new()); + composite.add_policy(Some(as_policy(&first))).unwrap(); + composite.add_policy(Some(as_policy(&second))).unwrap(); + first.allow_attach.store(false, Ordering::SeqCst); + second.allow_attach.store(false, Ordering::SeqCst); + assert!(!composite.can_attach(Some(item())).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithNoPolicies_ReturnsTrue::test fe53b90f59fd9a73c4af1b7071f04cae0a7b623d6a50a3d8eb2fcae82e6872e9 translated +#[test] +fn can_detach_with_no_policies_returns_true() { + assert!( + CompositeCurrentOutfitPolicy::new() + .unwrap() + .can_detach(Some(item())) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithNullItem_ThrowsArgumentNullException::test 8a39f9c6e26f3a136de641f38507db144f731aed0861edbeafcfdb70306ecffb translated +#[test] +fn can_detach_with_null_item_throws_argument_null_exception() { + assert!(matches!( + CompositeCurrentOutfitPolicy::new() + .unwrap() + .can_detach(None), + Err(Error::ArgumentNull) + )); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesAllowing_ReturnsTrue::test 2cbe1f0a5907c1dfa01af4329fa64177463798ec6caa357c8da8f5d3291901bf translated +#[test] +fn can_detach_with_all_policies_allowing_returns_true() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let first = Arc::new(TestPolicy::new()); + let second = Arc::new(TestPolicy::new()); + composite.add_policy(Some(as_policy(&first))).unwrap(); + composite.add_policy(Some(as_policy(&second))).unwrap(); + first.allow_detach.store(true, Ordering::SeqCst); + second.allow_detach.store(true, Ordering::SeqCst); + assert!(composite.can_detach(Some(item())).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithOnePolicyDenying_ReturnsFalse::test 11896040dd8e4b5bbd7d85a1da126c648ad77eb349a73edf1e18fa5710cde1c9 translated +#[test] +fn can_detach_with_one_policy_denying_returns_false() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let first = Arc::new(TestPolicy::new()); + let second = Arc::new(TestPolicy::new()); + composite.add_policy(Some(as_policy(&first))).unwrap(); + composite.add_policy(Some(as_policy(&second))).unwrap(); + first.allow_detach.store(true, Ordering::SeqCst); + second.allow_detach.store(false, Ordering::SeqCst); + assert!(!composite.can_detach(Some(item())).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesDenying_ReturnsFalse::test 62b8478f593f2bf16b44267d80668e327a245d0b5c0386e7229a5857d669ae6c translated +#[test] +fn can_detach_with_all_policies_denying_returns_false() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let first = Arc::new(TestPolicy::new()); + let second = Arc::new(TestPolicy::new()); + composite.add_policy(Some(as_policy(&first))).unwrap(); + composite.add_policy(Some(as_policy(&second))).unwrap(); + first.allow_detach.store(false, Ordering::SeqCst); + second.allow_detach.store(false, Ordering::SeqCst); + assert!(!composite.can_detach(Some(item())).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNoPolicies_CompletesSuccessfully::test e3f6824512503bea532826b9a9e4f7bb5abdea53f962fbbc6fdae299a6fe44a0 translated +#[test] +fn report_item_change_with_no_policies_completes_successfully() { + let added = Arc::new(vec![Arc::try_unwrap(item()).ok().unwrap()]); + let removed = Arc::new(Vec::new()); + block_on( + CompositeCurrentOutfitPolicy::new() + .unwrap() + .report_item_change(Some(added), Some(removed), None), + ) + .unwrap(); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithMultiplePolicies_CallsAllPolicies::test 4797cc1851d78364553dac59a6f9a894107fa04fb3fddfb52ed0e4fb5b4bcd1a translated +#[test] +fn report_item_change_with_multiple_policies_calls_all_policies() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let first = Arc::new(TestPolicy::new()); + let second = Arc::new(TestPolicy::new()); + composite.add_policy(Some(as_policy(&first))).unwrap(); + composite.add_policy(Some(as_policy(&second))).unwrap(); + let added = Arc::new(vec![Arc::try_unwrap(item()).ok().unwrap()]); + let removed = Arc::new(Vec::new()); + block_on(composite.report_item_change( + Some(Arc::clone(&added)), + Some(Arc::clone(&removed)), + None, + )) + .unwrap(); + assert_eq!(first.report_calls.load(Ordering::SeqCst), 1); + assert_eq!(second.report_calls.load(Ordering::SeqCst), 1); + assert!(Arc::ptr_eq( + first.last_added.lock().unwrap().as_ref().unwrap(), + &added + )); + assert!(Arc::ptr_eq( + second.last_added.lock().unwrap().as_ref().unwrap(), + &added + )); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithCancelledToken_ThrowsOperationCanceledException::test e4eaf9c1ee2d55a3e6c7bca634ff1af2a0e19b7560ea616984d258df46ec89fd translated +#[test] +fn report_item_change_with_cancelled_token_throws_operation_cancelled_exception() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + composite + .add_policy(Some(Arc::new(TestPolicy::new()))) + .unwrap(); + let source = CancellationTokenSource::new(); + source.cancel(); + let added = Arc::new(vec![Arc::try_unwrap(item()).ok().unwrap()]); + let error = block_on(composite.report_item_change( + Some(added), + Some(Arc::new(Vec::new())), + Some(source.token()), + )) + .unwrap_err(); + assert_eq!(error, Error::Cancelled); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithEmptyLists_DoesNotThrow::test 6ba7e22fb7425e523f301612f7d7f6aed88e7d422050a70137d93b4a8004ae50 translated +#[test] +fn report_item_change_with_empty_lists_does_not_throw() { + let composite = CompositeCurrentOutfitPolicy::new().unwrap(); + let policy = Arc::new(TestPolicy::new()); + composite.add_policy(Some(as_policy(&policy))).unwrap(); + block_on(composite.report_item_change( + Some(Arc::new(Vec::new())), + Some(Arc::new(Vec::new())), + None, + )) + .unwrap(); + assert_eq!(policy.report_calls.load(Ordering::SeqCst), 1); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNullLists_DoesNotThrowFromComposite::test c512c54f78c46fb4774d9b5c9c1057627592e1c25267811cddf3d687d3d1ec4d translated +#[test] +fn report_item_change_with_null_lists_does_not_throw_from_composite() { + block_on( + CompositeCurrentOutfitPolicy::new() + .unwrap() + .report_item_change(None, None, None), + ) + .unwrap(); +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddRemovePolicy_ConcurrentAccess_DoesNotThrow::test a73a01065867d90305f491e41d9ea61bc27b80c026672ed920368877bfb0fe14 translated +#[test] +fn add_remove_policy_concurrent_access_does_not_throw() { + let composite = Arc::new(CompositeCurrentOutfitPolicy::new().unwrap()); + let policies: Vec> = (0..10) + .map(|_| Arc::new(TestPolicy::new()) as Arc) + .collect(); + let mut threads = Vec::new(); + for policy in &policies { + let composite = Arc::clone(&composite); + let policy = Arc::clone(policy); + threads.push(std::thread::spawn(move || { + composite.add_policy(Some(policy)).map(|_| ()) + })); + } + for policy in policies { + let composite = Arc::clone(&composite); + threads.push(std::thread::spawn(move || { + composite.remove_policy(Some(policy)) + })); + } + for thread in threads { + thread.join().unwrap().unwrap(); + } +} + +// parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WhileModifyingPolicies_DoesNotThrow::test 697999feeb776fae9a47cb9678c0ae0234d3b3831ce40c0e6f50fe622a5cc2b7 translated +#[test] +fn can_attach_while_modifying_policies_does_not_throw() { + let composite = Arc::new(CompositeCurrentOutfitPolicy::new().unwrap()); + let stop = Arc::new(AtomicBool::new(false)); + let read_composite = Arc::clone(&composite); + let read_stop = Arc::clone(&stop); + let test_item = item(); + let reader = std::thread::spawn(move || { + while !read_stop.load(Ordering::SeqCst) { + let _ = read_composite.can_attach(Some(Arc::clone(&test_item))); + } + }); + let write_composite = Arc::clone(&composite); + let writer = std::thread::spawn(move || { + for _ in 0..100 { + let policy: Arc = Arc::new(TestPolicy::new()); + write_composite + .add_policy(Some(Arc::clone(&policy))) + .unwrap(); + write_composite.remove_policy(Some(policy)).unwrap(); + } + }); + writer.join().unwrap(); + stop.store(true, Ordering::SeqCst); + reader.join().unwrap(); +} diff --git a/tests/compat/tests/generated_parity.rs b/tests/compat/tests/generated_parity.rs index c9a3456..cbacead 100644 --- a/tests/compat/tests/generated_parity.rs +++ b/tests/compat/tests/generated_parity.rs @@ -2,77 +2,6 @@ // Source: LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba // Pending cases are catalog entries, not fake executable Rust tests. -// pending-parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_IsInitializedAfterLogin::test 7029854dc6f4e03016e2ea274140cd9adbbad6b8c11b58cf9e728d9a4cf37f81 -// pending-parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_HasExpectedFolderName::test 9a8cee3c3958b8631921aaa6b43f69dc430eee9bd3544c8f667aa8f5e858b8ac -// pending-parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetCurrentOutfitLinksAsync_ReturnsLinks::test a1a1c9f926a8b9f4cc4287ab751c4eb70d25a83c1024ef76e53f95c351db8a35 -// pending-parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetCurrentOutfitLinksAsync_ContainsAtLeastOneLink::test ef91dfaf7b75f61c97c3957b4dac006a153c7f2d167d6732a9a6dceee08883f2 -// pending-parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetWornAt_Shape_ReturnsAtLeastOne::test abc01e346371910610312ff9352ee05c0d317a7c677c0fa8cb398d3b0522c3bf -// pending-parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.LastUpdateReceivedCOFVersion_AdvancesAfterLogin::test 5371df8b02df9da20b413f4155f63967184dad23f57708beb56a2c6559e78520 -// pending-parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.RequestOwnAvatarTextures_DoesNotThrow_AndMaintainsVersionGuard::test ee8420690fc9714411450beb5be5755b82ddf7ed0d69e9da88b3184339bea744 -// pending-parity-case: LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_MaxClothingLayers_Is60::test aac1292781cb0a4cbf710535036fa6464065f72d1b2c5214a9b7dc918513e8cd -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableTypeToAssetType_BodypartsAndClothing_ReturnsExpected::test 6d0f0d09a6da8121ba828159a75ca1c1ce54329ec48060a6786aa8f807c13ec0 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndexToTextureIndex_Matches_BakeTypeToAgentTextureIndex::test c559ea49314b157605346243713fd10480a10f9a97daffd9cac8acccbd39612b -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndex_ArrayLength_Equals_BAKED_TEXTURE_COUNT::test b661ca888df5b7fd41e51dfd298fb6d5e30a3a848102006c109b9dc4fc0e165c -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Head_IncludesExpectedSlots::test 44e03523f0e3f6691e527e014bfc38d9ca57c1d310e7cf2c6d7ae8a429a31e1d -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesExpectedSlots::test fb7650becf6c01c1e7ffd731ac7b6c013957467110c7ed8d5bef9788ee9a5a16 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_LowerBody_Eyes_Skirt_Hair_IncludeExpected::test fad2baeca74cab39305c8f599c5de5777b55c329738db5c55f58a09366870374 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.MorphLayerForBakeType_ReturnsExpectedIndices::test 3051ccea9adec4f9ef824ce967c74e7708b62a2264b98ae22340eb8d1927c44f -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_HasExpectedDimensions_And_FirstLayerContainsShapeAndSkin::test 42c072449d1819c956035d1f0290b90acc1e62b4e1e6309590d0cb6cb41bb375 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToAgentTextureIndex_ReturnsUnknown_ForInvalid::test bc79d717462f06d498050182b6d116cea73f3bc173853f6d7894e3de88b70432 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BAKED_TEXTURE_COUNT_Is11::test 9d34c333f7e143d25964553dedaa1bae79c20e1aead331626f449a3894e31e5b -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakedTextureHash_Has11Entries::test 7b26852cc8c1d7257e3e5f6f936f3870e0a06845f5809cc3000d67eb7590a49e -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakedTextureHash_AllEntriesNonZero::test dc7a4010cfc2f975c0624bc5fbceed414297b1139f734d79786b2bb20d943553 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_Has11Rows::test db6016bcdc90f21095f0723556489ec174603783dc40805b56123e25d7a83312 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_ExtendedRows_AreAllInvalid::test 9b36d72c16980dc3780137dda47afa9cd79ef3a2be0d8ccb20723e1e1ac67f41 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndexToTextureIndex_ExtendedBakes_MatchAgentTextureIndex::test c331e94827930443aa3ca327374ec562fc9a294fce3304d7cba9f7e7859e43d3 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Head_IncludesUniversalTattoo::test 578423fedcd5e4ed4e53b3d7d80c24a9c8ce30b35db13a09bdf8f47312b7da87 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesUniversalTattoo::test 6d95989bf8380348714a0ba9ae4c04a85ea64ae47ffc94aaa841ce64810abebd -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_LowerBody_IncludesUniversalTattoo::test a21524c69c8bd32610e8cfa405a3cb3eae0a48add62d40a281f9311ebe739ffb -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Eyes_IncludesTattoo::test 606c6bad5f911d070c5d8126004d5a1e1dfd4887a115e8dd1f69f2d36bf53ac6 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Skirt_IncludesTattoo::test 7a38a59414bc74221bfbdc8889ef60714a4c6b4f26c9bd47e8f41bfa5a5da811 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Hair_IncludesHairTattoo::test c9a8c6a0dce259103fb466eb571785eb3c9395c8fa144f1a02d42ae73c0d8253 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedLeftArm_ContainsLeftArmTattoo::test bbbb01e8e009489967b36f22d83c6f326e295b9aabcbb58c00d82bab4e803f66 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedLeftLeg_ContainsLeftLegTattoo::test 9d2a25a6ed9cd5a99c206a0fc6d66389959fc5e30dd036302a73fb0b500880b5 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux1_ContainsAux1Tattoo::test b9b0b56e1d4d552f2b43e5e570f3fc1a1f8651d8e77055fabcc35b37b5a9f21d -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux2_ContainsAux2Tattoo::test 6be4bdbf667cadd673afbb1dafa8f4c1844ac9c34464fe5bbbc62f8ebe705b4d -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux3_ContainsAux3Tattoo::test 5d7530c72824f8baf6044fb122d224da61fff1b6cfbf3114ac2f24b1418675d2 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.MorphLayerForBakeType_ExtendedBakes_ReturnTattooSlots::test 7f05dc0b59adce3b46c82f7415e91e4c945963d918ad6ad1f0e5c9569ee2220e -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.TextureProvider_Default_IsGridClientBakingTextureProvider::test afdfbf516988c4ba35dfdb42158218a4815e1b8d146ef958225cf0fe73dfc3a9 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.TextureProvider_CanBeReplaced::test e9c27d5b8717fdac1a9f3d22930709c0dee326909cb3c777b769b0ed2dc35b0c -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.LastUpdateReceivedCOFVersion_InitialValue_IsMinusOne::test f43c2d8c99cb597ba7a5d4c87d4585560e888931d84741de2882d05ab17b310a -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_HigherVersion_Updates::test 62d82f9ec6d12ec9354f02e7b7e86adb29ccecb8b104ed39a66937495bab1438 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_LowerVersion_DoesNotUpdate::test ec5831c7d2c03132d3c7e50f6c0d088ca57f2726b7caf77ac240a9d5e92a77b6 -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_SameVersion_DoesNotChange::test 2e607b33bb8be04e6710e26fe62510f0634900579260accd9ffd720023636deb -// pending-parity-case: LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_MonotonicallyIncreasing_TracksPeak::test 5789831f288823729299944a8796c67348b932570392f59bf8b6d562cfa1c90c -// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_EmptyArray_ReturnsEmptyDictionary::test 644f412b90d429032a9273d24e89333a1694dc88eec3429a98acf00588315ec5 -// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_CountMatchesGroup0ParamCount::test 6a9acc7130e3394476392b86334a0ce1cb82253bea2b37ac33cf90a426c7af40 -// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_RoundTrip_DefaultValues::test a0c0727a50b414522f875709240f4056547cb699c6ec1981fbef15488784daf5 -// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_KeysAreGroup0ParamIDs::test fc4fd3059b01a319af2946ea0c289120a4c2609e7e9a96ac26c039c5042b8b4c -// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_TruncatedArray_ReturnsPartialResult::test b017127549e186b3cf85b9fe0cc09811ea1d00efa44e3d863292033cb0691d13 -// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_MinValue_DecodesNearParamMin::test 80e0fd97979f91c879add1fc3142a0b619a405e4977120db1d5f42a11a71f3f5 -// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_MaxValue_DecodesNearParamMax::test 31937bc9080b18be4aa98ea44bf73f929ba7862b621406b03c16a4651542f302 -// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary::test af99909259d531024895ce7ea325b49927a12daa886a35eab3d52e3f8fc76921 -// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues::test 0aec57fab35764525195e6c0e08a63ff10a467be684295381731c04e836539b5 -// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams::test ff87dd3a506027ad248006b3b55d85a18b0810bc5b4e3a72eb81d31ebbe4184a -// pending-parity-case: LibreMetaverse.Tests/BakerTests.cs::BakerTests.Bake_GrayscaleLayerTexture_DoesNotThrow::test c3fc1d2c16b5f8d69678a6cf05a3a275e0b657f3a6e7f6788f350f2a107200b3 -// pending-parity-case: LibreMetaverse.Tests/BakerTests.cs::BakerTests.Bake_GrayscaleHairTextureNoSkin_DoesNotThrow::test e48b737d9138e63cda98b5e80bf561a80d1dab5de78901ac9e1bb320ca281eb6 -// pending-parity-case: LibreMetaverse.Tests/BakerTests.cs::BakerTests.LoadResourceLayer_HeadColorTga_LoadsFromCharacterDirectory::test 5a9b80005a51f04a227ca392218725d50704d038783e04fc49bb955997c22e76 -// pending-parity-case: LibreMetaverse.Tests/BakerTests.cs::BakerTests.LoadResourceLayer_CachedResourceNotCorruptedByCallerMutation::test 18b458bbd7bb13d2b68711f7d3495193f1b4edac9c1f776930ad2c172f97cd49 -// pending-parity-case: LibreMetaverse.Tests/BakerTests.cs::BakerTests.ResizeToBakeDimensions_SourceSmallerInOneAxisOnly_ScalesRatherThanTiles::test ce5bd346b48cb19dbc0248403eafefb07309d4e05e675e9a02db5a46d7cd65ff -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_ClothingWearable_ReturnsWearableTypeAndZeroLayer::test 898a14ff28d953a58a01c3a0e5d9d9fcbbe61376a33fdc5caf20268aaac76242 -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_BodyPartShape_ReturnsEmpty::test 4f009136d265da91afb9eafd060faf459f6c510ca0502a33ce9e128d241f9bd1 -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_AttachmentObject_ReturnsEmpty::test a838329a7a23081a4022671bc794e7e706c9ab7da51598280a8befbb824d336d -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_AllBodyPartTypes_ReturnEmpty::test aa057d55a3b34846567efe382b6e090b5d91935a4ffa6166093b34870ee5da23 -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_SuccessResponse_ReturnsAllParsedLinks::test 416a1f023a2ae3b883c4c49f0a774c84a2f1a3562abb3ec848f86fe53d929f63 -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_ServerError_ThrowsHttpRequestException::test 53e3956676e546ab8d69bb63a071028b29151013b6362c39f37516a36cad6641 -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_NoCapability_ReturnsEmptyList::test d9cd50e620f69e40daab52d175886f3052d3741c5d39ef42549283ff6b2b7b44 -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_EmptyList_InvokesCallbackWithTrueWithoutHttpCall::test e7ba88352761ca9fd3e956233e3743689b41f47bba09bfbb463c66f132273c70 -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_SendsSingleBatchPost::test 369d99d37dca818991aca94d6ff9d7881874d74797c7a8b705c5925723e383db -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_PayloadContainsCorrectFieldsForEachLink::test b7629c3d061fe297e1c1c4f41ca4f8ce9cdeb2764525421be7bdc553a5f83063 -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_CallbackTrueOnSuccess::test 22dc685f896ec0415e56c1c01846ad90a9757cf5d9a0ed0d3706a76ee325d92d -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_ServerError_CallbackFalse::test 5fd9b2967bc61933cea80e01c55ee809f6ade246f10fb4048ec2668e0cc71dbf -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCategoryLinks_UsesGetWithNoTidParameter::test 3079c03ab4b14d4ac10a410b3685f1593ea267c52de7b6323f9e8e8387314f29 -// pending-parity-case: LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCategory_UsesGetWithNoTidParameter::test 98cd0aa58ce9640263d07aecd45337113b07acfc76640d17c5812abe05d35c73 // pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.InventoryAISClient_Null_Throws::test ac92e375efc45c50b37e6c82aea372d605fceb470ce053a025e05ff47a5c7121 // pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.GridManager_Null_Throws::test e972a95f334b0f46948cda34c27124c28c44faf4372d0e598d7dc60050b49be4 // pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.InventoryManager_Null_Throws::test 5e7498066c944800354abbc71eea825fe90d0c40a25a6065967a3ebcc9efea74 @@ -80,47 +9,6 @@ // 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/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException::test 243079029ec81f92ffbc587007a2421389963f72c7843786c5b9a8634a7ddca3 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow::test 1d0daac0bfa091bc3c3bffddc32a1511295dd7101f8ab5dfbf305b13b9ac7405 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow::test 124b41c342a295f02e9d5991d1dead0ff3e9a780f96424b88f75117ca206460b -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.MaxClothingLayers_Returns60::test e35e779b342fdb54bb7f5b2061f70c35ccc3f7f9ba87f48b2697f24c10f94397 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.COF_InitiallyNull::test 2dee4e58f3f53e50c5389ba0594ea0b063af55871eefae49e99bdd4b5c28e552 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.AddPolicy_WithValidPolicy_ReturnsAddedPolicy::test 747db5d674a6cb0bc54bcb9d32501d5bab49e0df5e5e39f3781f88d5100ed244 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.RemovePolicy_WithValidPolicy_DoesNotThrow::test 41f61b917da0410be01b346644a76bc9c800f78d1e1ba6ef805b14cea1b4d00d -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow::test 4add41578d3d5340618cb29ed6969b84c5c3a80e6da09ccb03bc6872a6b6689a -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.ResolveInventoryLink_WithNonLinkItem_ReturnsSameItem::test 7430a64883f3938afe7da1b126e4ee460cbf2485e2d51035273b4ca8fd150960 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.ResolveInventoryLink_WithLinkItemNotInStore_ReturnsNull::test 21e0dae8c038d2381eef736ad30d48fc0247e0a55b86e75de02982290a3a9bd0 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithNoNameValues_ReturnsZero::test c9e017a587c37b694484feda4fab81ef7f2bb098bbf8f96f3cefbb21f1a568d8 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithAttachItemID_ReturnsCorrectUUID::test 23e6be11056b93d75424c23030e1d2082545f686d12c0aa14f66991664e347e8 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithoutAttachItemID_ReturnsZero::test 7ee12fc59c8b5e5cb074e18c2af48c0f1b1d7be0937db65a7056e29e114b691f -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.IsObjectDescendentOf_WithZeroParentId_ReturnsFalse::test a878c220510aacbf61ebfb192952e26d96343312fcf9648e57e270e29aaa9d5d -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.IsObjectDescendentOf_WithDirectParent_ReturnsTrue::test ac3af5edef5ee67058a91a990bfde38e616d00919b0cd8e0b5f7345f7d8dab6c -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.FetchParent_WithZeroParentUUID_ReturnsNull::test ee6cc0cc9a48ec07afb8bd7fa8e1c53c2db258be11e2848ee5752e41eb34e45a -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetCurrentOutfitLinks_WithNullCOF_ReturnsEmptyList::test 5c0d475ccd4423bc099eb141f36061fdfaa589fd36d27c907d03a9d0be3f6f48 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_WithValidPolicy_ReturnsThis::test 31c1829eaa2b82b498cc1eaea131d2e34d1a0b5620be24f4da853c62c49807cc -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_WithNullPolicy_ThrowsArgumentNullException::test 6a111f0ad2e91c8566b5459939e3ecc76282cd033bb8d6483e1672c36891e597 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_MultiplePolicies_AllAreConsulted::test 1767ee3dee6b07e71f10b52613962e211fcf9906a45d12188f517cf751896f24 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_SamePolicyTwice_OnlyAddsOnce::test e3d1340780680bfc46267194ddb3c47e4ae24299cf532d92dd71d9770f1955fa -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithAddedPolicy_RemovesPolicy::test 9dd407dceeacdcc60fccb0d9869ad261d90acd74ae4257331e0cf8d4be2ee603 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow::test 9fa18bd628f6f02912168309e8e2afb6346a73a235dcc16cc81bc35e2dcf766f -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNull_DoesNotThrow::test 28075d5f7c5458f1ccdf9981970e212e1663a9e5ebee65fce636a11a22390bfb -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithNoPolicies_ReturnsTrue::test 74bc06bb6cedfe84a3cd7e5b4c32b251ee6eff81c272c7d899436dbd7f21886b -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithNullItem_ThrowsArgumentNullException::test a47ebf9c89b603c10109c6e643de5043ba13cd2eaf5f04d73ab1fd5f40e9b332 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesAllowing_ReturnsTrue::test 32c2f5dcc5cbdf24e4205c25c833aaa3c0f203aeb8ff20c30fdac1264f12f6bd -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithOnePolicyDenying_ReturnsFalse::test f38d910142a563bded6d35b969c0c560ffa072fd8df073a15fbbbed745681d0d -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesDenying_ReturnsFalse::test 6cdda22d59a3cd690a187b597a7c8a2474e43c27902e737f15f0c71adc5bcf7c -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithNoPolicies_ReturnsTrue::test fe53b90f59fd9a73c4af1b7071f04cae0a7b623d6a50a3d8eb2fcae82e6872e9 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithNullItem_ThrowsArgumentNullException::test 8a39f9c6e26f3a136de641f38507db144f731aed0861edbeafcfdb70306ecffb -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesAllowing_ReturnsTrue::test 2cbe1f0a5907c1dfa01af4329fa64177463798ec6caa357c8da8f5d3291901bf -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithOnePolicyDenying_ReturnsFalse::test 11896040dd8e4b5bbd7d85a1da126c648ad77eb349a73edf1e18fa5710cde1c9 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesDenying_ReturnsFalse::test 62b8478f593f2bf16b44267d80668e327a245d0b5c0386e7229a5857d669ae6c -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNoPolicies_CompletesSuccessfully::test e3f6824512503bea532826b9a9e4f7bb5abdea53f962fbbc6fdae299a6fe44a0 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithMultiplePolicies_CallsAllPolicies::test 4797cc1851d78364553dac59a6f9a894107fa04fb3fddfb52ed0e4fb5b4bcd1a -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithCancelledToken_ThrowsOperationCanceledException::test e4eaf9c1ee2d55a3e6c7bca634ff1af2a0e19b7560ea616984d258df46ec89fd -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithEmptyLists_DoesNotThrow::test 6ba7e22fb7425e523f301612f7d7f6aed88e7d422050a70137d93b4a8004ae50 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNullLists_DoesNotThrowFromComposite::test c512c54f78c46fb4774d9b5c9c1057627592e1c25267811cddf3d687d3d1ec4d -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddRemovePolicy_ConcurrentAccess_DoesNotThrow::test a73a01065867d90305f491e41d9ea61bc27b80c026672ed920368877bfb0fe14 -// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WhileModifyingPolicies_DoesNotThrow::test 697999feeb776fae9a47cb9678c0ae0234d3b3831ce40c0e6f50fe622a5cc2b7 // 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 @@ -232,14 +120,6 @@ // pending-parity-case: LibreMetaverse.Tests/MarketplaceManagerTests.cs::MarketplaceManagerTests.MarketplaceErrorEventArgs_StoresMessageAndException::test cb0213208ab6b63f32a950f1771354fae4b6904c72720b1705ddf5b8355ffc7d // pending-parity-case: LibreMetaverse.Tests/MarketplaceManagerTests.cs::MarketplaceManagerTests.MarketplaceErrorEventArgs_WithoutException_HasNullException::test de7c8addfb291cba5dee890a98ac8b5f27b192d0b75894c4102303a49785de47 // pending-parity-case: LibreMetaverse.Tests/MarketplaceManagerTests.cs::MarketplaceManagerTests.MarketplaceListing_DefaultValues_AreCorrect::test 70a29163581702fdc32c54a398ad4cefa608da8b1bc9d54a4e9e191e95398fb7 -// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.IsLink_TextureItemWithLinkAssetType_ReturnsTrue::test b85452466c0fdc47a44cc08166f93a660bbf466b0e2205910c1ea84fee22896c -// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.IsLink_NormalTexture_ReturnsFalse::test 8c08505d6e89c4395115dbb060529419755aa1a81ca8889804ea00e6f94bf534 -// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.ResolvedItemID_OnMisclassifiedTextureLink_ReturnsAssetUUID::test cad5b5fb10523254ff19b7842b0e48984bc75182a26bc897f165a43770bb47f4 -// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Contains_FindsTargetByResolvedItemID::test 3c1f8596462c3a9e229c84ea44e44728bf175e1a0e8213ae92d1b02b08320b0b -// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsWearable_WhenTargetIsWearable::test c7ce0b860743cfa5225de4322c8d7bf95094296b1dd2d07fd273bbd4e81a9fcf -// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsAttachment_WhenTargetIsAttachment::test f58debff8f66b7b417215eb6879f96935647b66cc619fdb00e6815c9ce5e7c67 -// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsObject_WhenTargetIsObject::test b8137c994019103977b0b85d8c148e12ae8f9051334ca487db7c88bcbe707d40 -// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_NotContains_WhenTargetAbsent::test 6900e220c33ec135d02c55e047c7052a095d5dd9d71da4a857ae70bc151c472b // 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/PrimObjectTests.cs::PrimObjectTests.PathBegin::test 5c8e14e1d08a91a4e7c3e252c932b8fe15cf6b5231cc9fe5bb7ef2ae6e2c8299 diff --git a/tests/compat/tests/misclassified_link_semantics.rs b/tests/compat/tests/misclassified_link_semantics.rs new file mode 100644 index 0000000..c69e5fa --- /dev/null +++ b/tests/compat/tests/misclassified_link_semantics.rs @@ -0,0 +1,142 @@ +// Exact Rust translations of LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs. +// Source SHA-256: f1e2a14f9671d6af084d72cc5280daf372985bf1b08c75e5989d9c8df0932a64 + +use libremetaverse::{ + GridClient, Inventory, InventoryAttachment, InventoryObject, InventoryTexture, + InventoryWearable, +}; +use libremetaverse_types::{AssetType, AttachmentPoint, UUID, WearableType}; + +fn store() -> Inventory { + Inventory::new_with_grid_client_uuid(GridClient::new().unwrap(), UUID::random().unwrap()) + .unwrap() +} + +fn texture_link(target: UUID) -> InventoryTexture { + let mut item = InventoryTexture::new(UUID::random().unwrap()).unwrap(); + item.base.set_asset_type(AssetType::Link); + item.base.set_asset_uuid(target); + item +} + +// parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.IsLink_TextureItemWithLinkAssetType_ReturnsTrue::test b85452466c0fdc47a44cc08166f93a660bbf466b0e2205910c1ea84fee22896c translated +#[test] +fn is_link_texture_item_with_link_asset_type_returns_true() { + let item = texture_link(UUID::random().unwrap()); + assert!(item.base.is_link().unwrap()); +} + +// parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.IsLink_NormalTexture_ReturnsFalse::test 8c08505d6e89c4395115dbb060529419755aa1a81ca8889804ea00e6f94bf534 translated +#[test] +fn is_link_normal_texture_returns_false() { + let mut item = InventoryTexture::new(UUID::random().unwrap()).unwrap(); + item.base.set_asset_type(AssetType::Texture); + item.base.set_asset_uuid(UUID::random().unwrap()); + assert!(!item.base.is_link().unwrap()); +} + +// parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.ResolvedItemID_OnMisclassifiedTextureLink_ReturnsAssetUUID::test cad5b5fb10523254ff19b7842b0e48984bc75182a26bc897f165a43770bb47f4 translated +#[test] +fn resolved_item_id_on_misclassified_texture_link_returns_asset_uuid() { + let target = UUID::random().unwrap(); + let item = texture_link(target); + assert_eq!(item.base.resolved_item_id(), target); +} + +// parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Contains_FindsTargetByResolvedItemID::test 3c1f8596462c3a9e229c84ea44e44728bf175e1a0e8213ae92d1b02b08320b0b translated +#[test] +fn inventory_store_contains_finds_target_by_resolved_item_id() { + let store = store(); + let target_id = UUID::random().unwrap(); + let mut target = InventoryWearable::new(target_id).unwrap(); + target.set_wearable_type(WearableType::Shirt); + target.base.set_asset_type(AssetType::Clothing); + target.base.set_asset_uuid(UUID::random().unwrap()); + store.update_node_for(target.base.base).unwrap(); + let link = texture_link(target_id); + assert!( + store + .contains_with_uuid(link.base.resolved_item_id()) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsWearable_WhenTargetIsWearable::test c7ce0b860743cfa5225de4322c8d7bf95094296b1dd2d07fd273bbd4e81a9fcf translated +#[test] +fn inventory_store_indexer_returns_wearable_when_target_is_wearable() { + let store = store(); + let target_id = UUID::random().unwrap(); + let mut target = InventoryWearable::new(target_id).unwrap(); + target.set_wearable_type(WearableType::Shirt); + target.base.set_asset_type(AssetType::Clothing); + target.base.set_asset_uuid(UUID::random().unwrap()); + target.base.base.set_name("Test Shirt".into()); + store.update_node_for(target.base.base).unwrap(); + let link = texture_link(target_id); + let resolved = store + .get_value_or_default_with_uuid_a7c63fbe::(link.base.resolved_item_id()) + .unwrap(); + assert!( + resolved.is_some(), + "target must retain its InventoryWearable type" + ); + assert_eq!(resolved.unwrap().wearable_type(), WearableType::Shirt); +} + +// parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsAttachment_WhenTargetIsAttachment::test f58debff8f66b7b417215eb6879f96935647b66cc619fdb00e6815c9ce5e7c67 translated +#[test] +fn inventory_store_indexer_returns_attachment_when_target_is_attachment() { + let store = store(); + let target_id = UUID::random().unwrap(); + let mut target = InventoryAttachment::new(target_id).unwrap(); + target.set_attachment_point(AttachmentPoint::Chest); + target.base.set_asset_type(AssetType::Object); + target.base.set_asset_uuid(UUID::random().unwrap()); + target.base.base.set_name("Test Attachment".into()); + store.update_node_for(target.base.base).unwrap(); + let link = texture_link(target_id); + let resolved = store + .get_value_or_default_with_uuid_a7c63fbe::( + link.base.resolved_item_id(), + ) + .unwrap(); + assert!( + resolved.is_some(), + "target must retain its InventoryAttachment type" + ); + assert_eq!(resolved.unwrap().attachment_point(), AttachmentPoint::Chest); +} + +// parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsObject_WhenTargetIsObject::test b8137c994019103977b0b85d8c148e12ae8f9051334ca487db7c88bcbe707d40 translated +#[test] +fn inventory_store_indexer_returns_object_when_target_is_object() { + let store = store(); + let target_id = UUID::random().unwrap(); + let mut target = InventoryObject::new(target_id).unwrap(); + target.set_attach_point(AttachmentPoint::RightHand); + target.base.set_asset_type(AssetType::Object); + target.base.set_asset_uuid(UUID::random().unwrap()); + target.base.base.set_name("Test Object".into()); + store.update_node_for(target.base.base).unwrap(); + let link = texture_link(target_id); + let resolved = store + .get_value_or_default_with_uuid_a7c63fbe::(link.base.resolved_item_id()) + .unwrap(); + assert!( + resolved.is_some(), + "target must retain its InventoryObject type" + ); + assert_eq!(resolved.unwrap().attach_point(), AttachmentPoint::RightHand); +} + +// parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_NotContains_WhenTargetAbsent::test 6900e220c33ec135d02c55e047c7052a095d5dd9d71da4a857ae70bc151c472b translated +#[test] +fn inventory_store_not_contains_when_target_absent() { + let store = store(); + let link = texture_link(UUID::random().unwrap()); + assert!( + !store + .contains_with_uuid(link.base.resolved_item_id()) + .unwrap() + ); +} diff --git a/tests/compat/tests/network_semantics.rs b/tests/compat/tests/network_semantics.rs index 276c31c..3a12255 100644 --- a/tests/compat/tests/network_semantics.rs +++ b/tests/compat/tests/network_semantics.rs @@ -9,7 +9,7 @@ use libremetaverse::http::DownloadManager; use libremetaverse::packets::PacketType; use libremetaverse::{GridClient, GridLayerType, HttpCapsClient, NetworkManager}; -use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::{block_on, live_grid_credentials}; use libremetaverse_types::compat::{ CancellationToken, CancellationTokenSource, HttpMessageHandler, HttpRequest, HttpResponse, Uri, }; @@ -158,35 +158,8 @@ where .await } -fn credential(name: &str) -> String { - if let Ok(value) = std::env::var(name) - && !value.trim().is_empty() - { - return value; - } - let dotenv = std::path::Path::new(env!("CARGO_MANIFEST_DIR")) - .join("../..") - .join(".env"); - let contents = std::fs::read_to_string(dotenv).expect("read workspace .env"); - contents - .lines() - .find_map(|line| { - let line = line.trim().strip_prefix("export ").unwrap_or(line.trim()); - let (key, value) = line.split_once('=')?; - (key.trim() == name).then(|| value.trim().trim_matches(['\'', '"']).to_owned()) - }) - .filter(|value| !value.is_empty()) - .unwrap_or_else(|| panic!("live test requires {name}")) -} - fn live_credentials() -> (String, String, String, String) { - let full_name = credential("GRID_USER"); - let password = credential("GRID_PASSWORD"); - let login_url = credential("GRID_LOGIN_URL"); - let mut names = full_name.split(' '); - let first = names.next().expect("live first name").to_owned(); - let last = names.next().expect("live last name").to_owned(); - (first, last, password, login_url) + live_grid_credentials() } // parity-case: LibreMetaverse.Tests/DownloadManagerTests.cs::DownloadManagerTests.QueueDownloadAsync_SingleDownload_CompletesSuccessfully::test f8feb54d38f79624ddf1d368e0599259ff9d474c08ea0249a8f244460a1f533f translated diff --git a/tests/upstream-tests.json b/tests/upstream-tests.json index f43a98f..a07d7af 100644 --- a/tests/upstream-tests.json +++ b/tests/upstream-tests.json @@ -3,12 +3,12 @@ "upstream_commit": "2aa70bb68513b39795da5d13c88f31b86e85a3ba", "expected_cases": 1289, "report": { - "pending": 939, - "translated": 343, - "ignored_live": 3, + "pending": 819, + "translated": 455, + "ignored_live": 11, "benchmark": 4, "drifted": 0, - "unreviewed": 939 + "unreviewed": 819 }, "tests": [ { @@ -782,12 +782,12 @@ "RequiresLiveServer" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 5, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e74577c13d0d21b38f22e670d7500f25bc92d133ab80b7aad41042f1fe7c9053", + "status": "ignored-live", + "rust_file": "tests/compat/tests/appearance_live_semantics.rs", + "rust_line": 58, + "rust_test": "cof_is_initialized_after_login", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_HasExpectedFolderName::test", @@ -804,12 +804,12 @@ "RequiresLiveServer" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 6, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b8570ae2db2bf18bcd6f7c074fe3d86bedee4d58474e79ffb09dfd8cbaf72e7e", + "status": "ignored-live", + "rust_file": "tests/compat/tests/appearance_live_semantics.rs", + "rust_line": 71, + "rust_test": "cof_has_expected_folder_name", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetCurrentOutfitLinksAsync_ReturnsLinks::test", @@ -826,12 +826,12 @@ "RequiresLiveServer" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 7, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6714539b855d197ba8dd6a5f6f4ca7360a4e6e9bca6b1a4faa54fb8fa239d8af", + "status": "ignored-live", + "rust_file": "tests/compat/tests/appearance_live_semantics.rs", + "rust_line": 84, + "rust_test": "get_current_outfit_links_returns_links", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetCurrentOutfitLinksAsync_ContainsAtLeastOneLink::test", @@ -848,12 +848,12 @@ "RequiresLiveServer" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 8, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e9b5c5aa53b914a9e7e2caf33e35d4a50be5fcee85c8944ffcb7490810331c8a", + "status": "ignored-live", + "rust_file": "tests/compat/tests/appearance_live_semantics.rs", + "rust_line": 98, + "rust_test": "get_current_outfit_links_contains_at_least_one_link", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.GetWornAt_Shape_ReturnsAtLeastOne::test", @@ -870,12 +870,12 @@ "RequiresLiveServer" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 9, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6a6340e19b3e48d001149899877a53864d3f49cc686d7a78f6d964c845861e0a", + "status": "ignored-live", + "rust_file": "tests/compat/tests/appearance_live_semantics.rs", + "rust_line": 114, + "rust_test": "get_worn_at_shape_returns_at_least_one", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.LastUpdateReceivedCOFVersion_AdvancesAfterLogin::test", @@ -892,12 +892,12 @@ "RequiresLiveServer" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 10, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f7b1018886e3281f4c5ee15af93e621d1a3d519fba6200bb8fd5dace26ee5533", + "status": "ignored-live", + "rust_file": "tests/compat/tests/appearance_live_semantics.rs", + "rust_line": 130, + "rust_test": "last_update_received_cof_version_advances_after_login", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.RequestOwnAvatarTextures_DoesNotThrow_AndMaintainsVersionGuard::test", @@ -914,12 +914,12 @@ "RequiresLiveServer" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 11, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0daa333b5468ca8b0cd15505acd6a46538509de81a40888da8292ac40844ffe1", + "status": "ignored-live", + "rust_file": "tests/compat/tests/appearance_live_semantics.rs", + "rust_line": 154, + "rust_test": "request_own_avatar_textures_does_not_throw_and_maintains_version_guard", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceLiveTests.cs::AppearanceLiveTests.COF_MaxClothingLayers_Is60::test", @@ -936,12 +936,12 @@ "RequiresLiveServer" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 12, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "12273d9b8aca249245b68dbf00ff267639f65e2b91f37f7728a53070a1785308", + "status": "ignored-live", + "rust_file": "tests/compat/tests/appearance_live_semantics.rs", + "rust_line": 179, + "rust_test": "cof_max_clothing_layers_is_60", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableTypeToAssetType_BodypartsAndClothing_ReturnsExpected::test", @@ -955,12 +955,12 @@ "body_sha256": "6d0f0d09a6da8121ba828159a75ca1c1ce54329ec48060a6786aa8f807c13ec0", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 13, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1f4818d882fd041fa25424a84bd27f984c09810186bf8fd054848e884c123015", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 23, + "rust_test": "appearance_manager_wearable_type_to_asset_type_returns_expected", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndexToTextureIndex_Matches_BakeTypeToAgentTextureIndex::test", @@ -974,12 +974,12 @@ "body_sha256": "c559ea49314b157605346243713fd10480a10f9a97daffd9cac8acccbd39612b", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 14, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c85f494eba81d654070ad4b6bbf2de9e8c0495f37dc31f0c85302531077a45c3", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 52, + "rust_test": "appearance_manager_bake_index_matches_agent_texture_index", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndex_ArrayLength_Equals_BAKED_TEXTURE_COUNT::test", @@ -993,12 +993,12 @@ "body_sha256": "b661ca888df5b7fd41e51dfd298fb6d5e30a3a848102006c109b9dc4fc0e165c", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 15, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "cbd5b108bce02f6b0bb1f903fc36420c54ca41374811822270bf162203071028", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 66, + "rust_test": "appearance_manager_bake_index_array_length_matches_count", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Head_IncludesExpectedSlots::test", @@ -1012,12 +1012,12 @@ "body_sha256": "44e03523f0e3f6691e527e014bfc38d9ca57c1d310e7cf2c6d7ae8a429a31e1d", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 16, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c9db86b04299d714a5472ef30ed0488639cac3059169043e5aa3458349faa2e4", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 75, + "rust_test": "appearance_manager_head_bake_includes_expected_slots", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesExpectedSlots::test", @@ -1031,12 +1031,12 @@ "body_sha256": "fb7650becf6c01c1e7ffd731ac7b6c013957467110c7ed8d5bef9788ee9a5a16", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 17, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7e4e97e525a9830d98f2bf2818d3f57615afec0c8d24a03b95eb658ce7cdc581", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 86, + "rust_test": "appearance_manager_upper_body_bake_includes_expected_slots", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_LowerBody_Eyes_Skirt_Hair_IncludeExpected::test", @@ -1050,12 +1050,12 @@ "body_sha256": "fad2baeca74cab39305c8f599c5de5777b55c329738db5c55f58a09366870374", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 18, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "9375110dda7bcef2c1a1c8b07c074d9b0ae4fffb3796140ac14f91fd01ba3315", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 97, + "rust_test": "appearance_manager_lower_eyes_skirt_hair_bakes_include_expected_slots", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.MorphLayerForBakeType_ReturnsExpectedIndices::test", @@ -1069,12 +1069,12 @@ "body_sha256": "3051ccea9adec4f9ef824ce967c74e7708b62a2264b98ae22340eb8d1927c44f", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 19, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "689fd6fc8f333ec52129a80d00fb91aaefdce7393945d052fa785c7377e6dbf0", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 117, + "rust_test": "appearance_manager_morph_layer_returns_expected_indices", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_HasExpectedDimensions_And_FirstLayerContainsShapeAndSkin::test", @@ -1088,12 +1088,12 @@ "body_sha256": "42c072449d1819c956035d1f0290b90acc1e62b4e1e6309590d0cb6cb41bb375", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 20, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "68bc072bb352f895a3b070b72b9296bcc787fba686f148b1be26209e8d2d28bc", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 142, + "rust_test": "appearance_manager_wearable_bake_map_has_expected_dimensions_and_first_layer", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToAgentTextureIndex_ReturnsUnknown_ForInvalid::test", @@ -1107,12 +1107,12 @@ "body_sha256": "bc79d717462f06d498050182b6d116cea73f3bc173853f6d7894e3de88b70432", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 21, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e19981b4b096b4698051b4f95a0e9669abd3506057f510a23f319961c02497a7", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 151, + "rust_test": "appearance_manager_invalid_bake_type_returns_unknown_texture_index", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BAKED_TEXTURE_COUNT_Is11::test", @@ -1126,12 +1126,12 @@ "body_sha256": "9d34c333f7e143d25964553dedaa1bae79c20e1aead331626f449a3894e31e5b", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 22, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "47ca2bcbefb972381e3ac3ee6ff29158876dd28fae485d6f263b6e50f587615d", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 161, + "rust_test": "appearance_manager_baked_texture_count_is_eleven", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakedTextureHash_Has11Entries::test", @@ -1145,12 +1145,12 @@ "body_sha256": "7b26852cc8c1d7257e3e5f6f936f3870e0a06845f5809cc3000d67eb7590a49e", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 23, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "01541d296d27a45a70f481b946637119d2f7b6388c37d0c52e5a313fc90bb7c6", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 167, + "rust_test": "appearance_manager_baked_texture_hash_has_eleven_entries", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakedTextureHash_AllEntriesNonZero::test", @@ -1164,12 +1164,12 @@ "body_sha256": "dc7a4010cfc2f975c0624bc5fbceed414297b1139f734d79786b2bb20d943553", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 24, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c421e079e4e6f5d2d5c090a2a894f02c3058d19b5bbb057b73551e65b7c91e52", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 173, + "rust_test": "appearance_manager_baked_texture_hash_entries_are_nonzero", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_Has11Rows::test", @@ -1183,12 +1183,12 @@ "body_sha256": "db6016bcdc90f21095f0723556489ec174603783dc40805b56123e25d7a83312", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 25, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "393aedd9c13c7ec1b500cc365f40c0f84bab2cc94b6ad9d4839cb22457c227b1", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 182, + "rust_test": "appearance_manager_wearable_bake_map_has_eleven_rows", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.WearableBakeMap_ExtendedRows_AreAllInvalid::test", @@ -1202,12 +1202,12 @@ "body_sha256": "9b36d72c16980dc3780137dda47afa9cd79ef3a2be0d8ccb20723e1e1ac67f41", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 26, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2942bd4792a32e014d2d09de8d952a89f482db57f32f6bd56947a190269de433", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 188, + "rust_test": "appearance_manager_extended_wearable_bake_rows_are_invalid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeIndexToTextureIndex_ExtendedBakes_MatchAgentTextureIndex::test", @@ -1221,12 +1221,12 @@ "body_sha256": "c331e94827930443aa3ca327374ec562fc9a294fce3304d7cba9f7e7859e43d3", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 27, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "861c95ce860bdbb908666a8111b117f793afa4630bf053852bac1e60b6c79f07", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 199, + "rust_test": "appearance_manager_extended_bake_indices_match_agent_texture_indices", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Head_IncludesUniversalTattoo::test", @@ -1240,12 +1240,12 @@ "body_sha256": "578423fedcd5e4ed4e53b3d7d80c24a9c8ce30b35db13a09bdf8f47312b7da87", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 28, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "354d344fee19fc5633af8314d76dab08ed4800bf836e673dd92974dd2ce25d54", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 213, + "rust_test": "appearance_manager_head_bake_includes_universal_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_UpperBody_IncludesUniversalTattoo::test", @@ -1259,12 +1259,12 @@ "body_sha256": "6d95989bf8380348714a0ba9ae4c04a85ea64ae47ffc94aaa841ce64810abebd", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 29, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "77175e817d21ec8bf78c224492b7b1e15e77a7fbcef9a330f1a72f6834f830fc", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 221, + "rust_test": "appearance_manager_upper_body_bake_includes_universal_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_LowerBody_IncludesUniversalTattoo::test", @@ -1278,12 +1278,12 @@ "body_sha256": "a21524c69c8bd32610e8cfa405a3cb3eae0a48add62d40a281f9311ebe739ffb", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 30, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "153be03a536018f3222c47ab77fdc93527c8256ab84865659649a70c3cf93e1a", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 229, + "rust_test": "appearance_manager_lower_body_bake_includes_universal_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Eyes_IncludesTattoo::test", @@ -1297,12 +1297,12 @@ "body_sha256": "606c6bad5f911d070c5d8126004d5a1e1dfd4887a115e8dd1f69f2d36bf53ac6", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 31, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7acc39506c38715925438431fda3c09c3ebf127d06bc990a9bb7be191fcb24c1", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 237, + "rust_test": "appearance_manager_eyes_bake_includes_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Skirt_IncludesTattoo::test", @@ -1316,12 +1316,12 @@ "body_sha256": "7a38a59414bc74221bfbdc8889ef60714a4c6b4f26c9bd47e8f41bfa5a5da811", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 32, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "00e422d37a403c4bb4b2ba8e524aefc28a72f39daeb5868ad44cb47cc45fdc85", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 245, + "rust_test": "appearance_manager_skirt_bake_includes_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_Hair_IncludesHairTattoo::test", @@ -1335,12 +1335,12 @@ "body_sha256": "c9a8c6a0dce259103fb466eb571785eb3c9395c8fa144f1a02d42ae73c0d8253", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 33, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3c81bc40c8cf4706c47441955a53e7463e39c7c9455ee430bb15752caac354ff", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 253, + "rust_test": "appearance_manager_hair_bake_includes_hair_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedLeftArm_ContainsLeftArmTattoo::test", @@ -1354,12 +1354,12 @@ "body_sha256": "bbbb01e8e009489967b36f22d83c6f326e295b9aabcbb58c00d82bab4e803f66", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 34, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a4150377fc4039e0d189023cb75aa761a310cbdf25a4d34fca511fa3eaeaa7e2", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 261, + "rust_test": "appearance_manager_left_arm_bake_contains_only_left_arm_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedLeftLeg_ContainsLeftLegTattoo::test", @@ -1373,12 +1373,12 @@ "body_sha256": "9d2a25a6ed9cd5a99c206a0fc6d66389959fc5e30dd036302a73fb0b500880b5", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 35, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "804caf05d203ddc82be817ee30f3c48e9ac8ba881ca6fce07f414b0aec29b0e6", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 270, + "rust_test": "appearance_manager_left_leg_bake_contains_left_leg_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux1_ContainsAux1Tattoo::test", @@ -1392,12 +1392,12 @@ "body_sha256": "b9b0b56e1d4d552f2b43e5e570f3fc1a1f8651d8e77055fabcc35b37b5a9f21d", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 36, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "406c207c284c3ef120c9d6c1c38d0372b2cb435d1eb73a5ff643c99e253d00e5", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 278, + "rust_test": "appearance_manager_aux1_bake_contains_aux1_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux2_ContainsAux2Tattoo::test", @@ -1411,12 +1411,12 @@ "body_sha256": "6be4bdbf667cadd673afbb1dafa8f4c1844ac9c34464fe5bbbc62f8ebe705b4d", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 37, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "73d7d00cfe7635dec196b3cf6f7af57d53266d25fb9e41135cfb08e2f14c38d6", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 286, + "rust_test": "appearance_manager_aux2_bake_contains_aux2_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BakeTypeToTextures_BakedAux3_ContainsAux3Tattoo::test", @@ -1430,12 +1430,12 @@ "body_sha256": "5d7530c72824f8baf6044fb122d224da61fff1b6cfbf3114ac2f24b1418675d2", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 38, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "445fe1065c5fd8273cc3832d6851a91cc344f1a07d93889b75b564b9ed5ca390", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 294, + "rust_test": "appearance_manager_aux3_bake_contains_aux3_tattoo", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.MorphLayerForBakeType_ExtendedBakes_ReturnTattooSlots::test", @@ -1449,12 +1449,12 @@ "body_sha256": "7f05dc0b59adce3b46c82f7415e91e4c945963d918ad6ad1f0e5c9569ee2220e", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 39, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "26f0d5ffff3f07e3570bc06a1824ee76d54abf75aa993ff08f27ca22af157e48", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 302, + "rust_test": "appearance_manager_extended_morph_layers_return_tattoo_slots", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.TextureProvider_Default_IsGridClientBakingTextureProvider::test", @@ -1468,12 +1468,12 @@ "body_sha256": "afdfbf516988c4ba35dfdb42158218a4815e1b8d146ef958225cf0fe73dfc3a9", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 40, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5728bc791c046bef864ef42dac3f7ea83a65b6009238a3010f8906b6b8ea1abf", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 319, + "rust_test": "appearance_manager_default_texture_provider_is_grid_client_provider", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.TextureProvider_CanBeReplaced::test", @@ -1487,12 +1487,12 @@ "body_sha256": "e9c27d5b8717fdac1a9f3d22930709c0dee326909cb3c777b769b0ed2dc35b0c", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 41, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a0c8596f6cd67759835610e38723cc72665b307393177552cbb9c63424e24b37", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 330, + "rust_test": "appearance_manager_texture_provider_can_be_replaced", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.LastUpdateReceivedCOFVersion_InitialValue_IsMinusOne::test", @@ -1506,12 +1506,12 @@ "body_sha256": "f43c2d8c99cb597ba7a5d4c87d4585560e888931d84741de2882d05ab17b310a", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 42, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ec711614215b24d5221ee328b99149ab31a76e2dd4a36199d682179547434e03", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 342, + "rust_test": "appearance_manager_initial_cof_version_is_minus_one", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_HigherVersion_Updates::test", @@ -1525,12 +1525,12 @@ "body_sha256": "62d82f9ec6d12ec9354f02e7b7e86adb29ccecb8b104ed39a66937495bab1438", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 43, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "241ddbf5d7c11469608d89dd444bf578c4062b35a5ac45f1c01ba23e3785de0d", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 349, + "rust_test": "appearance_manager_higher_cof_version_updates", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_LowerVersion_DoesNotUpdate::test", @@ -1544,12 +1544,12 @@ "body_sha256": "ec5831c7d2c03132d3c7e50f6c0d088ca57f2726b7caf77ac240a9d5e92a77b6", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 44, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "38746f20a3f2ac1de28d194c7845a8e91a516f28d40ff2ec7bf7f971352bebbc", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 360, + "rust_test": "appearance_manager_lower_cof_version_does_not_update", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_SameVersion_DoesNotChange::test", @@ -1563,12 +1563,12 @@ "body_sha256": "2e607b33bb8be04e6710e26fe62510f0634900579260accd9ffd720023636deb", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 45, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ef4b5e6fd6689322fd1a59a6bd63a9a7abc1cbc7d54f14f9a3ce074ec4c4dc18", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 375, + "rust_test": "appearance_manager_same_cof_version_does_not_change", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.UpdateLastReceivedCOFVersion_MonotonicallyIncreasing_TracksPeak::test", @@ -1582,12 +1582,12 @@ "body_sha256": "5789831f288823729299944a8796c67348b932570392f59bf8b6d562cfa1c90c", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 46, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a363217556f1d89cd28c24edc464925c4eeed239c72bf45a40481d8e15c951b8", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_semantics.rs", + "rust_line": 390, + "rust_test": "appearance_manager_cof_version_tracks_peak", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_EmptyArray_ReturnsEmptyDictionary::test", @@ -1603,12 +1603,12 @@ "Appearance" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 47, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "890f0ea0a61e48dbef4629c6b3c7994bdc3ad23dac7799b274e169dc8b36d634", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_visual_semantics.rs", + "rust_line": 35, + "rust_test": "decode_visual_params_empty_array_returns_empty_dictionary", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_CountMatchesGroup0ParamCount::test", @@ -1624,12 +1624,12 @@ "Appearance" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 48, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b8e41a2e9388845e2b58460b76226d360f412108dee6be3e8a6b0879a9fc6fb2", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_visual_semantics.rs", + "rust_line": 44, + "rust_test": "decode_visual_params_count_matches_group0_param_count", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_RoundTrip_DefaultValues::test", @@ -1645,12 +1645,12 @@ "Appearance" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 49, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8d4c96332d239b5dd7671ce49995cac52423230f2816f330a65f1aba9fbee04c", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_visual_semantics.rs", + "rust_line": 54, + "rust_test": "decode_visual_params_round_trip_default_values", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_KeysAreGroup0ParamIDs::test", @@ -1666,12 +1666,12 @@ "Appearance" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 50, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "db66adcf9d886b68b160551a4ac9a67c9039d9eae2ba8b78f3c67ac2a17f5778", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_visual_semantics.rs", + "rust_line": 102, + "rust_test": "decode_visual_params_keys_are_group0_param_ids", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_TruncatedArray_ReturnsPartialResult::test", @@ -1687,12 +1687,12 @@ "Appearance" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 51, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6ef91400572b29d997399d0d1e3716969873b0ed91e722bf27d6b8637390312c", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_visual_semantics.rs", + "rust_line": 113, + "rust_test": "decode_visual_params_truncated_array_returns_partial_result", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_MinValue_DecodesNearParamMin::test", @@ -1708,12 +1708,12 @@ "Appearance" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 52, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3331d41df0f11af4e23b9189b61c79fa83a8cbe6d2a8a0bf4cc8825cb86b3b3d", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_visual_semantics.rs", + "rust_line": 123, + "rust_test": "decode_visual_params_min_value_decodes_near_param_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.DecodeVisualParams_MaxValue_DecodesNearParamMax::test", @@ -1729,12 +1729,12 @@ "Appearance" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 53, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "19710e23d83f92c7166306d9c8a0ab8e3d6a0b9079889689504776d2ba657162", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_visual_semantics.rs", + "rust_line": 141, + "rust_test": "decode_visual_params_max_value_decodes_near_param_max", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary::test", @@ -1750,12 +1750,12 @@ "Appearance" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 54, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e189ddaaeab9092ef1511a0f3cc3b49fef9d7f70128f0c76b68e9fb71318bcbe", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_visual_semantics.rs", + "rust_line": 159, + "rust_test": "appearance_event_args_decode_visual_params_empty_list_returns_empty_dictionary", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues::test", @@ -1771,12 +1771,12 @@ "Appearance" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 55, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f0dd19e89345feac9e4b5afa784f0a042c66d7133f7d5209449387374fccbf32", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_visual_semantics.rs", + "rust_line": 166, + "rust_test": "appearance_event_args_decode_visual_params_round_trip_default_values", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams::test", @@ -1792,12 +1792,12 @@ "Appearance" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 56, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8491a32c1d09672932a0a7912b18bc0a72b13323192371f0d8bc303a560b7ded", + "status": "translated", + "rust_file": "tests/compat/tests/appearance_visual_semantics.rs", + "rust_line": 188, + "rust_test": "appearance_event_args_decode_visual_params_matches_avatar_decode_visual_params", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_OverrideToDefault_IsNudgedOffDefault::test", @@ -2144,12 +2144,12 @@ "Imaging" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 57, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "095b472ba775ae13542328da1b5e709d630699d092778132b3c1f164168c5dd8", + "status": "translated", + "rust_file": "crates/libremetaverse/src/appearance_baker_semantics.rs", + "rust_line": 30, + "rust_test": "bake_grayscale_layer_texture_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BakerTests.cs::BakerTests.Bake_GrayscaleHairTextureNoSkin_DoesNotThrow::test", @@ -2165,12 +2165,12 @@ "Imaging" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 58, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e490a240143cf358cedc6562baa63dd9ee2274958744e7df00d13d9981f7597f", + "status": "translated", + "rust_file": "crates/libremetaverse/src/appearance_baker_semantics.rs", + "rust_line": 41, + "rust_test": "bake_grayscale_hair_texture_no_skin_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BakerTests.cs::BakerTests.LoadResourceLayer_HeadColorTga_LoadsFromCharacterDirectory::test", @@ -2186,12 +2186,12 @@ "Imaging" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 59, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8c7043c839d0a52cc72050120aaf3f726b962ee674e9169c33d8b1137b23d919", + "status": "translated", + "rust_file": "crates/libremetaverse/src/appearance_baker_semantics.rs", + "rust_line": 55, + "rust_test": "load_resource_layer_head_color_tga_loads_from_character_directory", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BakerTests.cs::BakerTests.LoadResourceLayer_CachedResourceNotCorruptedByCallerMutation::test", @@ -2207,12 +2207,12 @@ "Imaging" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 60, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "54a79b572fdf3e22a3a00380cb98f180a2eda94f71ed035db312310b8f15a9bb", + "status": "translated", + "rust_file": "crates/libremetaverse/src/appearance_baker_semantics.rs", + "rust_line": 65, + "rust_test": "load_resource_layer_cached_resource_not_corrupted_by_caller_mutation", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BakerTests.cs::BakerTests.ResizeToBakeDimensions_SourceSmallerInOneAxisOnly_ScalesRatherThanTiles::test", @@ -2228,12 +2228,12 @@ "Imaging" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 61, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "16a16384fe8cfa5c8a8a4b8de9bf9428de61756882d83883a7215ef708fa202d", + "status": "translated", + "rust_file": "crates/libremetaverse/src/appearance_baker_semantics.rs", + "rust_line": 84, + "rust_test": "resize_to_bake_dimensions_source_smaller_in_one_axis_only_scales_rather_than_tiles", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_ClothingWearable_ReturnsWearableTypeAndZeroLayer::test", @@ -2249,12 +2249,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 62, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b37b53cc98926819412ac06c38ad91b3aae10189dbadd8e7ffc39d6b7ad5d12b", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 151, + "rust_test": "get_cof_link_description_clothing_wearable_returns_wearable_type_and_zero_layer", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_BodyPartShape_ReturnsEmpty::test", @@ -2270,12 +2270,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 63, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "9ff8d64994f6803b3a246c2985e1158bed75c2d74979b1e50cbd1c80029b3d44", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 160, + "rust_test": "get_cof_link_description_body_part_shape_returns_empty", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_AttachmentObject_ReturnsEmpty::test", @@ -2291,12 +2291,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 64, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8b29393942c69e7ac0e2916b1187af100b6f3f0e9551957d65e294bf03eb09f8", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 169, + "rust_test": "get_cof_link_description_attachment_object_returns_empty", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCofLinkDescription_AllBodyPartTypes_ReturnEmpty::test", @@ -2312,12 +2312,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 65, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c7a6b1efc6979bdc0a3eb9de9560bad28c84ddea5e287a943c41e983c0f087f2", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 181, + "rust_test": "get_cof_link_description_all_body_part_types_return_empty", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_SuccessResponse_ReturnsAllParsedLinks::test", @@ -2333,12 +2333,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 66, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3347dde88dd39d7bf1636ff40fb13c060f3ba943c30279ec089d9b17b1ca28fc", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 201, + "rust_test": "create_inventory_links_success_response_returns_all_parsed_links", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_ServerError_ThrowsHttpRequestException::test", @@ -2354,12 +2354,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 67, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c9703e429312dfedb0943811d037598e0e3a548f285ac6ebf18324f1ea563455", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 234, + "rust_test": "create_inventory_links_server_error_throws_http_request_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateInventoryLinksAsync_NoCapability_ReturnsEmptyList::test", @@ -2375,12 +2375,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 68, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "873f0a1013697a7a678aeee0a4214a6fdeaca41f77b7b2abd5a20d2eb56657e3", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 253, + "rust_test": "create_inventory_links_no_capability_returns_empty_list", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_EmptyList_InvokesCallbackWithTrueWithoutHttpCall::test", @@ -2396,12 +2396,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 69, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d6e566ec28b05a9b2c35675d322974fbb52e6c807693bfb8567d2b703a7fbe60", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 266, + "rust_test": "create_links_empty_list_invokes_callback_with_true_without_http_call", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_SendsSingleBatchPost::test", @@ -2417,12 +2417,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 70, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "fa4ece3677f87ca579336a85e7f6cbc266ee7e8a6e75ddadcc9d89e335e3dec9", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 285, + "rust_test": "create_links_ais_available_sends_single_batch_post", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_PayloadContainsCorrectFieldsForEachLink::test", @@ -2438,12 +2438,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 71, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "db7bf58de66cfe039a6061076cff728cdbe192037fb869e152d9492c1a8c9266", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 327, + "rust_test": "create_links_ais_available_payload_contains_correct_fields_for_each_link", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_AisAvailable_CallbackTrueOnSuccess::test", @@ -2459,12 +2459,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 72, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2f2c48855b63ffeae23d94159d67194848c5414e56b2badbd9b88bdfc1c25226", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 373, + "rust_test": "create_links_ais_available_callback_true_on_success", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.CreateLinksAsync_ServerError_CallbackFalse::test", @@ -2480,12 +2480,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 73, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e57586dc49bdff19b1e3b2cde62d6318384986fd0d0ed7b461bd3aa014abface", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 401, + "rust_test": "create_links_server_error_callback_false", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCategoryLinks_UsesGetWithNoTidParameter::test", @@ -2501,12 +2501,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 74, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3ad6c36394bd6ccb85d1820554def97c4c9d0234eebeab42250d60d580033189", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 423, + "rust_test": "get_category_links_uses_get_with_no_tid_parameter", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BatchLinkTests.cs::BatchLinkTests.GetCategory_UsesGetWithNoTidParameter::test", @@ -2522,12 +2522,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 75, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d9a0123af1154f8acd7a366ef2bc1e856df52a3fed17cde9de1f0c0d2c440fd9", + "status": "translated", + "rust_file": "crates/libremetaverse/src/batch_link_internal_semantics.rs", + "rust_line": 444, + "rust_test": "get_category_uses_get_with_no_tid_parameter", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.HelperFunctions::test", @@ -3036,7 +3036,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 76, + "rust_line": 5, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -3055,7 +3055,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 77, + "rust_line": 6, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -3074,7 +3074,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 78, + "rust_line": 7, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -3093,7 +3093,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 79, + "rust_line": 8, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -3112,7 +3112,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 80, + "rust_line": 9, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -3131,7 +3131,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 81, + "rust_line": 10, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -3150,7 +3150,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 82, + "rust_line": 11, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -3187,12 +3187,12 @@ "body_sha256": "243079029ec81f92ffbc587007a2421389963f72c7843786c5b9a8634a7ddca3", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 83, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f3b6f741b7edfb59713dece9ff62cd9dd2bd46930d41aa4cca148b5e13c9d2b4", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 22, + "rust_test": "constructor_with_null_client_throws_argument_null_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow::test", @@ -3206,12 +3206,12 @@ "body_sha256": "1d0daac0bfa091bc3c3bffddc32a1511295dd7101f8ab5dfbf305b13b9ac7405", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 84, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4a878cda9bbdf42d65e9cd8397679a1df45db676537fd77b02150ba64b518b44", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 31, + "rust_test": "dispose_called_once_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow::test", @@ -3225,12 +3225,12 @@ "body_sha256": "124b41c342a295f02e9d5991d1dead0ff3e9a780f96424b88f75117ca206460b", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 85, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "892023bc8285dbc7a44c8ab2c26d4410aa1d2fe554d84d611db361e1697f5667", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 37, + "rust_test": "dispose_called_multiple_times_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.MaxClothingLayers_Returns60::test", @@ -3244,12 +3244,12 @@ "body_sha256": "e35e779b342fdb54bb7f5b2061f70c35ccc3f7f9ba87f48b2697f24c10f94397", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 86, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e7828357bee7a4cddc21ff25bf1a3ce8c70c667d8289786523509ba678a3903d", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 45, + "rust_test": "max_clothing_layers_returns_60", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.COF_InitiallyNull::test", @@ -3263,12 +3263,12 @@ "body_sha256": "2dee4e58f3f53e50c5389ba0594ea0b063af55871eefae49e99bdd4b5c28e552", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 87, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "555b41f7499e10f9a17b4c56d6c9ff98270efaf4e984ab0828db59557ce4b952", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 51, + "rust_test": "cof_initially_null", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.AddPolicy_WithValidPolicy_ReturnsAddedPolicy::test", @@ -3282,12 +3282,12 @@ "body_sha256": "747db5d674a6cb0bc54bcb9d32501d5bab49e0df5e5e39f3781f88d5100ed244", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 88, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4220e4e628e3612ca6b9006bad74139ab27e3b090d793e55b43b5c92ced321b4", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 57, + "rust_test": "add_policy_with_valid_policy_returns_added_policy", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.RemovePolicy_WithValidPolicy_DoesNotThrow::test", @@ -3301,12 +3301,12 @@ "body_sha256": "41f61b917da0410be01b346644a76bc9c800f78d1e1ba6ef805b14cea1b4d00d", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 89, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "97e82d30ac8df46076047646967cb5f192f9a07f36534074642b44b4721d031a", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 66, + "rust_test": "remove_policy_with_valid_policy_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow::test", @@ -3320,12 +3320,12 @@ "body_sha256": "4add41578d3d5340618cb29ed6969b84c5c3a80e6da09ccb03bc6872a6b6689a", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 90, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5fac8cbc6e7c2c530ddd3f6e71b300614878798b29134231ec548f1b33af4095", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 75, + "rust_test": "remove_policy_with_non_added_policy_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.ResolveInventoryLink_WithNonLinkItem_ReturnsSameItem::test", @@ -3339,12 +3339,12 @@ "body_sha256": "7430a64883f3938afe7da1b126e4ee460cbf2485e2d51035273b4ca8fd150960", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 91, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f2d86a19421fde9e1c1c6cd2e1408e15a0768ece9ed22e3167ba3eff486c0d46", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 82, + "rust_test": "resolve_inventory_link_with_non_link_item_returns_same_item", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.ResolveInventoryLink_WithLinkItemNotInStore_ReturnsNull::test", @@ -3358,12 +3358,12 @@ "body_sha256": "21e0dae8c038d2381eef736ad30d48fc0247e0a55b86e75de02982290a3a9bd0", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 92, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5d3829bc8432b6439ea5096e23f6eb9a752868797b385bb0147808476a5e33d8", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 97, + "rust_test": "resolve_inventory_link_with_link_item_not_in_store_returns_null", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithNoNameValues_ReturnsZero::test", @@ -3377,12 +3377,12 @@ "body_sha256": "c9e017a587c37b694484feda4fab81ef7f2bb098bbf8f96f3cefbb21f1a568d8", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 93, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3a2b7161815de1b3d3b271871f7289b277956d9360abb4693b467704464512bb", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 114, + "rust_test": "get_attachment_item_id_with_no_name_values_returns_zero", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithAttachItemID_ReturnsCorrectUUID::test", @@ -3396,12 +3396,12 @@ "body_sha256": "23e6be11056b93d75424c23030e1d2082545f686d12c0aa14f66991664e347e8", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 94, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f701a287c26e04cec80233b501aaf90bed8b2952b1e59ec9a889998d3e6ec587", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 125, + "rust_test": "get_attachment_item_id_with_attach_item_id_returns_correct_uuid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetAttachmentItemID_WithoutAttachItemID_ReturnsZero::test", @@ -3415,12 +3415,12 @@ "body_sha256": "7ee12fc59c8b5e5cb074e18c2af48c0f1b1d7be0937db65a7056e29e114b691f", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 95, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4c99a852c927b51146ee0b2d3fa8da83e9df27171b7d708ccfdbcff9b7ff05f4", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 145, + "rust_test": "get_attachment_item_id_without_attach_item_id_returns_zero", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.IsObjectDescendentOf_WithZeroParentId_ReturnsFalse::test", @@ -3434,12 +3434,12 @@ "body_sha256": "a878c220510aacbf61ebfb192952e26d96343312fcf9648e57e270e29aaa9d5d", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 96, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1ce82c37a67d36b91876537ce01963736a1cd08f8da5509b10b4d94242bca2a5", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 164, + "rust_test": "is_object_descendent_of_with_zero_parent_id_returns_false", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.IsObjectDescendentOf_WithDirectParent_ReturnsTrue::test", @@ -3453,12 +3453,12 @@ "body_sha256": "ac3af5edef5ee67058a91a990bfde38e616d00919b0cd8e0b5f7345f7d8dab6c", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 97, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ca25a930e763760e98edd9e06880a575268f690953efcaf67a6d80548647f623", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 172, + "rust_test": "is_object_descendent_of_with_direct_parent_returns_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.FetchParent_WithZeroParentUUID_ReturnsNull::test", @@ -3472,12 +3472,12 @@ "body_sha256": "ee6cc0cc9a48ec07afb8bd7fa8e1c53c2db258be11e2848ee5752e41eb34e45a", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 98, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f6d459800d46e97027507b05c0daaf80d18c66a1e1fc2ae1217f767635fc489a", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 182, + "rust_test": "fetch_parent_with_zero_parent_uuid_returns_null", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.GetCurrentOutfitLinks_WithNullCOF_ReturnsEmptyList::test", @@ -3491,12 +3491,12 @@ "body_sha256": "5c0d475ccd4423bc099eb141f36061fdfaa589fd36d27c907d03a9d0be3f6f48", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 99, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "987332674861c03f610de2826620bc9e9efea9ecd731a8a05a7317ee7b91c8bb", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_folder_semantics.rs", + "rust_line": 195, + "rust_test": "get_current_outfit_links_with_null_cof_returns_empty_list", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_WithValidPolicy_ReturnsThis::test", @@ -3510,12 +3510,12 @@ "body_sha256": "31c1829eaa2b82b498cc1eaea131d2e34d1a0b5620be24f4da853c62c49807cc", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 100, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3e5291c51879c6235926a582bfcd04d64622ee0b0e3d78f8ebd3e983089c2539", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 74, + "rust_test": "add_policy_with_valid_policy_returns_this", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_WithNullPolicy_ThrowsArgumentNullException::test", @@ -3529,12 +3529,12 @@ "body_sha256": "6a111f0ad2e91c8566b5459939e3ecc76282cd033bb8d6483e1672c36891e597", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 101, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d76a1adb2401e12e398160e3f69b630cbbb7d852fc1f1a1841c81ffab15eee0c", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 86, + "rust_test": "add_policy_with_null_policy_throws_argument_null_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_MultiplePolicies_AllAreConsulted::test", @@ -3548,12 +3548,12 @@ "body_sha256": "1767ee3dee6b07e71f10b52613962e211fcf9906a45d12188f517cf751896f24", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 102, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "39c836711d7148b2efe93082044ddac131c356fbdc2348d36b26d52878672f5e", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 96, + "rust_test": "add_policy_multiple_policies_all_are_consulted", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddPolicy_SamePolicyTwice_OnlyAddsOnce::test", @@ -3567,12 +3567,12 @@ "body_sha256": "e3d1340780680bfc46267194ddb3c47e4ae24299cf532d92dd71d9770f1955fa", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 103, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "aa6df76f65a14694ee732ea4cb0c6eb58d7185ca7bff7c3e3c3804fdf9a8b4fb", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 112, + "rust_test": "add_policy_same_policy_twice_only_adds_once", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithAddedPolicy_RemovesPolicy::test", @@ -3586,12 +3586,12 @@ "body_sha256": "9dd407dceeacdcc60fccb0d9869ad261d90acd74ae4257331e0cf8d4be2ee603", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 104, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "bdb5fcb4ff8d387c72291d8defe4d92394a15006309f85b48eefb2234270e397", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 124, + "rust_test": "remove_policy_with_added_policy_removes_policy", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNonAddedPolicy_DoesNotThrow::test", @@ -3605,12 +3605,12 @@ "body_sha256": "9fa18bd628f6f02912168309e8e2afb6346a73a235dcc16cc81bc35e2dcf766f", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 105, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "14bf4149476f37e7bca62265d516950384b69e0dab9c459bd2c28acb455c1ff6", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 137, + "rust_test": "remove_policy_with_non_added_policy_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.RemovePolicy_WithNull_DoesNotThrow::test", @@ -3624,12 +3624,12 @@ "body_sha256": "28075d5f7c5458f1ccdf9981970e212e1663a9e5ebee65fce636a11a22390bfb", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 106, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "539b1e25e71b395234ec9f9146b72378b87a9fe8da2e84dd41272d94ee786c0b", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 146, + "rust_test": "remove_policy_with_null_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithNoPolicies_ReturnsTrue::test", @@ -3643,12 +3643,12 @@ "body_sha256": "74bc06bb6cedfe84a3cd7e5b4c32b251ee6eff81c272c7d899436dbd7f21886b", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 107, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c532b2cf4103ae3de4ee4e821b57eef39ba1a39461a45a69900eb6535658bfc2", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 155, + "rust_test": "can_attach_with_no_policies_returns_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithNullItem_ThrowsArgumentNullException::test", @@ -3662,12 +3662,12 @@ "body_sha256": "a47ebf9c89b603c10109c6e643de5043ba13cd2eaf5f04d73ab1fd5f40e9b332", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 108, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "bc3b93d32f92bb7e94b9e77c06ab5e9395f38a756431530cf185741bc0678964", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 166, + "rust_test": "can_attach_with_null_item_throws_argument_null_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesAllowing_ReturnsTrue::test", @@ -3681,12 +3681,12 @@ "body_sha256": "32c2f5dcc5cbdf24e4205c25c833aaa3c0f203aeb8ff20c30fdac1264f12f6bd", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 109, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b57eb96aa074d7474b2993b3f715bd482fa576465c62df070d2a468d34cf6ed1", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 177, + "rust_test": "can_attach_with_all_policies_allowing_returns_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithOnePolicyDenying_ReturnsFalse::test", @@ -3700,12 +3700,12 @@ "body_sha256": "f38d910142a563bded6d35b969c0c560ffa072fd8df073a15fbbbed745681d0d", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 110, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e1d1fbb660e8a8f78c656fe8f461bf3523b54cda750c0199d5e62282333c9017", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 190, + "rust_test": "can_attach_with_one_policy_denying_returns_false", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WithAllPoliciesDenying_ReturnsFalse::test", @@ -3719,12 +3719,12 @@ "body_sha256": "6cdda22d59a3cd690a187b597a7c8a2474e43c27902e737f15f0c71adc5bcf7c", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 111, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "56c9d650735d603bb7e2b2688a0015ca47d793c03548e6f7ae35f76a28f32310", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 203, + "rust_test": "can_attach_with_all_policies_denying_returns_false", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithNoPolicies_ReturnsTrue::test", @@ -3738,12 +3738,12 @@ "body_sha256": "fe53b90f59fd9a73c4af1b7071f04cae0a7b623d6a50a3d8eb2fcae82e6872e9", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 112, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "9027e38fdaf49e8a412b8c03a190bdf3fbbd04b68033a4fcacbbd0b367e787c9", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 216, + "rust_test": "can_detach_with_no_policies_returns_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithNullItem_ThrowsArgumentNullException::test", @@ -3757,12 +3757,12 @@ "body_sha256": "8a39f9c6e26f3a136de641f38507db144f731aed0861edbeafcfdb70306ecffb", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 113, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7d03dfdcf7bb8528b17a15fa397d01d47737fe4693490d18699af54a72482050", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 227, + "rust_test": "can_detach_with_null_item_throws_argument_null_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesAllowing_ReturnsTrue::test", @@ -3776,12 +3776,12 @@ "body_sha256": "2cbe1f0a5907c1dfa01af4329fa64177463798ec6caa357c8da8f5d3291901bf", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 114, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0605633bba9f2bc398a7e7a0d891b04c035bfc3ed90e60b9d86eccd4fc8eaf32", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 238, + "rust_test": "can_detach_with_all_policies_allowing_returns_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithOnePolicyDenying_ReturnsFalse::test", @@ -3795,12 +3795,12 @@ "body_sha256": "11896040dd8e4b5bbd7d85a1da126c648ad77eb349a73edf1e18fa5710cde1c9", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 115, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "84e6ca22707de6a28fc3787816003b190ab787939861a9c9c1ad23616786142c", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 251, + "rust_test": "can_detach_with_one_policy_denying_returns_false", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanDetach_WithAllPoliciesDenying_ReturnsFalse::test", @@ -3814,12 +3814,12 @@ "body_sha256": "62b8478f593f2bf16b44267d80668e327a245d0b5c0386e7229a5857d669ae6c", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 116, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "656d975ccbcc1e216aa698cbbbfa5e63ec8f9236a69a2757e7b55babafcfa23a", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 264, + "rust_test": "can_detach_with_all_policies_denying_returns_false", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNoPolicies_CompletesSuccessfully::test", @@ -3833,12 +3833,12 @@ "body_sha256": "e3f6824512503bea532826b9a9e4f7bb5abdea53f962fbbc6fdae299a6fe44a0", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 117, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "423c12ec68cd920c49d8411b6b756eabb914c19ba411a08167bd97ccab93e7d5", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 277, + "rust_test": "report_item_change_with_no_policies_completes_successfully", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithMultiplePolicies_CallsAllPolicies::test", @@ -3852,12 +3852,12 @@ "body_sha256": "4797cc1851d78364553dac59a6f9a894107fa04fb3fddfb52ed0e4fb5b4bcd1a", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 118, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4e2af537f48a96bbcd235be2d61cf0942d82efcaa52da6cc92f6708f6103d453", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 290, + "rust_test": "report_item_change_with_multiple_policies_calls_all_policies", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithCancelledToken_ThrowsOperationCanceledException::test", @@ -3871,12 +3871,12 @@ "body_sha256": "e4eaf9c1ee2d55a3e6c7bca634ff1af2a0e19b7560ea616984d258df46ec89fd", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 119, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6609c5940c1ce2cac241099f27ebae6a660bd1c601163d899f2fffb09e7d78a2", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 318, + "rust_test": "report_item_change_with_cancelled_token_throws_operation_cancelled_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithEmptyLists_DoesNotThrow::test", @@ -3890,12 +3890,12 @@ "body_sha256": "6ba7e22fb7425e523f301612f7d7f6aed88e7d422050a70137d93b4a8004ae50", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 120, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "761160686b31ba0a816fc041b4031c6d728e5e980cd43de28df72f295f6b59ff", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 337, + "rust_test": "report_item_change_with_empty_lists_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.ReportItemChangeAsync_WithNullLists_DoesNotThrowFromComposite::test", @@ -3909,12 +3909,12 @@ "body_sha256": "c512c54f78c46fb4774d9b5c9c1057627592e1c25267811cddf3d687d3d1ec4d", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 121, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7a2605062baf3db1951c7d1d6cf86f758dd12fb32e277b58cd2d4e48bac29c04", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 352, + "rust_test": "report_item_change_with_null_lists_does_not_throw_from_composite", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.AddRemovePolicy_ConcurrentAccess_DoesNotThrow::test", @@ -3928,12 +3928,12 @@ "body_sha256": "a73a01065867d90305f491e41d9ea61bc27b80c026672ed920368877bfb0fe14", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 122, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "52cf1db8eb634d830a9bf006711cb410ebee1d575af080f54df0904b5f2a32e1", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 363, + "rust_test": "add_remove_policy_concurrent_access_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CompositeCurrentOutfitPolicyTests.CanAttach_WhileModifyingPolicies_DoesNotThrow::test", @@ -3947,12 +3947,12 @@ "body_sha256": "697999feeb776fae9a47cb9678c0ae0234d3b3831ce40c0e6f50fe622a5cc2b7", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 123, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "561fb2493f76759b4841cd2a7e1aa2599a9146dbee7a390cfd3af26310bf291d", + "status": "translated", + "rust_file": "tests/compat/tests/current_outfit_policy_semantics.rs", + "rust_line": 389, + "rust_test": "can_attach_while_modifying_policies_does_not_throw", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/DownloadManagerTests.cs::DownloadManagerTests.QueueDownloadAsync_SingleDownload_CompletesSuccessfully::test", @@ -3969,7 +3969,7 @@ "rust_body_sha256": "d9d2c4c3687e603f33d254f866ed5ef631d6f615ddc784cb6b634a8019f16806", "status": "translated", "rust_file": "tests/compat/tests/network_semantics.rs", - "rust_line": 192, + "rust_line": 165, "rust_test": "queue_download_single_completes_successfully", "semantic_review": "reviewed" }, @@ -3988,7 +3988,7 @@ "rust_body_sha256": "b5fa7f1b968fb50c89e87b4bc7b985006e80791a13333848eba04474f527a7f8", "status": "translated", "rust_file": "tests/compat/tests/network_semantics.rs", - "rust_line": 229, + "rust_line": 202, "rust_test": "queue_download_deduplicates_same_uri", "semantic_review": "reviewed" }, @@ -4007,7 +4007,7 @@ "rust_body_sha256": "aa16329057cf59d3228e4a0fb0f2e3c613dc8bab46b9cf25aeeb5d5a2c6f3486", "status": "translated", "rust_file": "tests/compat/tests/network_semantics.rs", - "rust_line": 275, + "rust_line": 248, "rust_test": "queue_download_cancellation_propagates", "semantic_review": "reviewed" }, @@ -4026,7 +4026,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 124, + "rust_line": 12, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4047,7 +4047,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 125, + "rust_line": 13, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4068,7 +4068,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 126, + "rust_line": 14, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4089,7 +4089,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 127, + "rust_line": 15, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4110,7 +4110,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 128, + "rust_line": 16, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4131,7 +4131,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 129, + "rust_line": 17, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4153,7 +4153,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 130, + "rust_line": 18, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4174,7 +4174,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 131, + "rust_line": 19, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4195,7 +4195,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 132, + "rust_line": 20, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4216,7 +4216,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 133, + "rust_line": 21, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4237,7 +4237,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 134, + "rust_line": 22, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4258,7 +4258,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 135, + "rust_line": 23, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4279,7 +4279,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 136, + "rust_line": 24, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4300,7 +4300,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 137, + "rust_line": 25, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4321,7 +4321,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 138, + "rust_line": 26, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4342,7 +4342,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 139, + "rust_line": 27, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4363,7 +4363,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 140, + "rust_line": 28, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4384,7 +4384,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 141, + "rust_line": 29, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4405,7 +4405,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 142, + "rust_line": 30, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -4867,7 +4867,7 @@ "rust_body_sha256": "51896e9c47fe786cb29653b21e5dc50de30bccaa2f3548feb20646d6baee19f7", "status": "ignored-live", "rust_file": "tests/compat/tests/network_semantics.rs", - "rust_line": 372, + "rust_line": 345, "rust_test": "get_grid_region_live", "semantic_review": "reviewed" }, @@ -5182,7 +5182,7 @@ "rust_body_sha256": "91bf2dbf02e6c00479de02593db5ea7076b65f1bcf1265d4cf67c811f85d666d", "status": "translated", "rust_file": "tests/compat/tests/network_semantics.rs", - "rust_line": 306, + "rust_line": 279, "rust_test": "put_response_with_non_http_location_does_not_throw", "semantic_review": "reviewed" }, @@ -5199,7 +5199,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 143, + "rust_line": 31, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5218,7 +5218,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 144, + "rust_line": 32, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5237,7 +5237,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 145, + "rust_line": 33, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5256,7 +5256,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 146, + "rust_line": 34, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5275,7 +5275,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 147, + "rust_line": 35, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5294,7 +5294,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 148, + "rust_line": 36, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5313,7 +5313,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 149, + "rust_line": 37, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5332,7 +5332,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 150, + "rust_line": 38, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5351,7 +5351,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 151, + "rust_line": 39, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5373,7 +5373,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 152, + "rust_line": 40, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5395,7 +5395,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 153, + "rust_line": 41, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5417,7 +5417,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 154, + "rust_line": 42, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5439,7 +5439,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 155, + "rust_line": 43, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5458,7 +5458,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 156, + "rust_line": 44, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5477,7 +5477,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 157, + "rust_line": 45, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5496,7 +5496,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 158, + "rust_line": 46, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5515,7 +5515,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 159, + "rust_line": 47, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5534,7 +5534,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 160, + "rust_line": 48, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5553,7 +5553,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 161, + "rust_line": 49, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5572,7 +5572,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 162, + "rust_line": 50, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5591,7 +5591,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 163, + "rust_line": 51, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5610,7 +5610,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 164, + "rust_line": 52, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5629,7 +5629,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 165, + "rust_line": 53, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5648,7 +5648,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 166, + "rust_line": 54, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5667,7 +5667,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 167, + "rust_line": 55, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5686,7 +5686,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 168, + "rust_line": 56, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5705,7 +5705,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 169, + "rust_line": 57, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5724,7 +5724,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 170, + "rust_line": 58, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5743,7 +5743,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 171, + "rust_line": 59, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5762,7 +5762,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 172, + "rust_line": 60, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5781,7 +5781,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 173, + "rust_line": 61, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5803,7 +5803,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 174, + "rust_line": 62, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5825,7 +5825,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 175, + "rust_line": 63, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -5847,7 +5847,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 176, + "rust_line": 64, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6349,7 +6349,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 177, + "rust_line": 65, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6368,7 +6368,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 178, + "rust_line": 66, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6387,7 +6387,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 179, + "rust_line": 67, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6406,7 +6406,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 180, + "rust_line": 68, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6425,7 +6425,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 181, + "rust_line": 69, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6444,7 +6444,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 182, + "rust_line": 70, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6463,7 +6463,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 183, + "rust_line": 71, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6482,7 +6482,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 184, + "rust_line": 72, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6501,7 +6501,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 185, + "rust_line": 73, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6520,7 +6520,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 186, + "rust_line": 74, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6539,7 +6539,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 187, + "rust_line": 75, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6558,7 +6558,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 188, + "rust_line": 76, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6577,7 +6577,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 189, + "rust_line": 77, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6596,7 +6596,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 190, + "rust_line": 78, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6615,7 +6615,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 191, + "rust_line": 79, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6634,7 +6634,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 192, + "rust_line": 80, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6653,7 +6653,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 193, + "rust_line": 81, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6672,7 +6672,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 194, + "rust_line": 82, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6691,7 +6691,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 195, + "rust_line": 83, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6710,7 +6710,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 196, + "rust_line": 84, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6729,7 +6729,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 197, + "rust_line": 85, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6748,7 +6748,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 198, + "rust_line": 86, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6767,7 +6767,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 199, + "rust_line": 87, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6786,7 +6786,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 200, + "rust_line": 88, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6805,7 +6805,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 201, + "rust_line": 89, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6824,7 +6824,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 202, + "rust_line": 90, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6843,7 +6843,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 203, + "rust_line": 91, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6862,7 +6862,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 204, + "rust_line": 92, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6881,7 +6881,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 205, + "rust_line": 93, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6900,7 +6900,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 206, + "rust_line": 94, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6919,7 +6919,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 207, + "rust_line": 95, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6938,7 +6938,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 208, + "rust_line": 96, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6957,7 +6957,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 209, + "rust_line": 97, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6976,7 +6976,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 210, + "rust_line": 98, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -6997,7 +6997,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 211, + "rust_line": 99, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7018,7 +7018,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 212, + "rust_line": 100, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7039,7 +7039,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 213, + "rust_line": 101, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7060,7 +7060,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 214, + "rust_line": 102, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7081,7 +7081,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 215, + "rust_line": 103, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7102,7 +7102,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 216, + "rust_line": 104, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7123,7 +7123,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 217, + "rust_line": 105, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7144,7 +7144,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 218, + "rust_line": 106, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7165,7 +7165,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 219, + "rust_line": 107, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7186,7 +7186,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 220, + "rust_line": 108, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7207,7 +7207,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 221, + "rust_line": 109, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7228,7 +7228,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 222, + "rust_line": 110, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7249,7 +7249,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 223, + "rust_line": 111, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7270,7 +7270,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 224, + "rust_line": 112, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7291,7 +7291,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 225, + "rust_line": 113, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7312,7 +7312,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 226, + "rust_line": 114, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7333,7 +7333,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 227, + "rust_line": 115, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7354,7 +7354,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 228, + "rust_line": 116, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7375,7 +7375,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 229, + "rust_line": 117, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7396,7 +7396,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 230, + "rust_line": 118, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7417,7 +7417,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 231, + "rust_line": 119, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7438,7 +7438,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 232, + "rust_line": 120, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7459,7 +7459,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 233, + "rust_line": 121, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -7480,7 +7480,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 234, + "rust_line": 122, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -8192,12 +8192,12 @@ "Inventory" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 235, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b48d84917b12cabef8517fcf96adb543590063ff3b1fb9ed972f957fc73453a3", + "status": "translated", + "rust_file": "tests/compat/tests/misclassified_link_semantics.rs", + "rust_line": 22, + "rust_test": "is_link_texture_item_with_link_asset_type_returns_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.IsLink_NormalTexture_ReturnsFalse::test", @@ -8213,12 +8213,12 @@ "Inventory" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 236, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7c58a391525dfdbc0846fda3bc27e92af98abeaba6034e277c7b5819bc255a21", + "status": "translated", + "rust_file": "tests/compat/tests/misclassified_link_semantics.rs", + "rust_line": 29, + "rust_test": "is_link_normal_texture_returns_false", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.ResolvedItemID_OnMisclassifiedTextureLink_ReturnsAssetUUID::test", @@ -8234,12 +8234,12 @@ "Inventory" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 237, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "12dbee1efc8aef651e5be1babd011a571804d84133c343910ac14d29bfa18619", + "status": "translated", + "rust_file": "tests/compat/tests/misclassified_link_semantics.rs", + "rust_line": 38, + "rust_test": "resolved_item_id_on_misclassified_texture_link_returns_asset_uuid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Contains_FindsTargetByResolvedItemID::test", @@ -8255,12 +8255,12 @@ "Inventory" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 238, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ece652ee881b847eabd1cd489976627ca423a7a9657406d7422642490b935688", + "status": "translated", + "rust_file": "tests/compat/tests/misclassified_link_semantics.rs", + "rust_line": 46, + "rust_test": "inventory_store_contains_finds_target_by_resolved_item_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsWearable_WhenTargetIsWearable::test", @@ -8276,12 +8276,12 @@ "Inventory" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 239, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1d94cb5c06decfe1d12baf6810cdd005ae31a5208daf51796dde6fddfc43b403", + "status": "translated", + "rust_file": "tests/compat/tests/misclassified_link_semantics.rs", + "rust_line": 64, + "rust_test": "inventory_store_indexer_returns_wearable_when_target_is_wearable", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsAttachment_WhenTargetIsAttachment::test", @@ -8297,12 +8297,12 @@ "Inventory" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 240, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5714620093be8d30ffc00439c5d28f6193d444450908179cf33a1bf801798d0c", + "status": "translated", + "rust_file": "tests/compat/tests/misclassified_link_semantics.rs", + "rust_line": 86, + "rust_test": "inventory_store_indexer_returns_attachment_when_target_is_attachment", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsObject_WhenTargetIsObject::test", @@ -8318,12 +8318,12 @@ "Inventory" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 241, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0bde42cf5c24583eedeb36e816db6040b1d2a640e874f9e4d3cc40ec5dc3b813", + "status": "translated", + "rust_file": "tests/compat/tests/misclassified_link_semantics.rs", + "rust_line": 110, + "rust_test": "inventory_store_indexer_returns_object_when_target_is_object", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_NotContains_WhenTargetAbsent::test", @@ -8339,12 +8339,12 @@ "Inventory" ], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 242, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b075befdc75394711eedf916c0569ff7f2efffa7d51e07da5080447c16ae7554", + "status": "translated", + "rust_file": "tests/compat/tests/misclassified_link_semantics.rs", + "rust_line": 132, + "rust_test": "inventory_store_not_contains_when_target_absent", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/NetworkTests.cs::NetworkTests.DetectObjects::test", @@ -8364,7 +8364,7 @@ "rust_body_sha256": "72cafa964ad0b0e86100a0de71fb36fb17014604bce55b865c15a3a4626976c2", "status": "ignored-live", "rust_file": "tests/compat/tests/network_semantics.rs", - "rust_line": 436, + "rust_line": 409, "rust_test": "detect_objects_live", "semantic_review": "reviewed" }, @@ -8386,7 +8386,7 @@ "rust_body_sha256": "c72bf13086fc38d8d8dfadfc2e525f971943847aa89e6e097937c1637df4212b", "status": "ignored-live", "rust_file": "tests/compat/tests/network_semantics.rs", - "rust_line": 515, + "rust_line": 488, "rust_test": "caps_queue_live", "semantic_review": "reviewed" }, @@ -8945,7 +8945,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 243, + "rust_line": 123, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -8966,7 +8966,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 244, + "rust_line": 124, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9065,7 +9065,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 245, + "rust_line": 125, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9084,7 +9084,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 246, + "rust_line": 126, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9103,7 +9103,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 247, + "rust_line": 127, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9122,7 +9122,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 248, + "rust_line": 128, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9141,7 +9141,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 249, + "rust_line": 129, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9160,7 +9160,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 250, + "rust_line": 130, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9179,7 +9179,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 251, + "rust_line": 131, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9198,7 +9198,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 252, + "rust_line": 132, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9217,7 +9217,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 253, + "rust_line": 133, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9236,7 +9236,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 254, + "rust_line": 134, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9255,7 +9255,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 255, + "rust_line": 135, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9274,7 +9274,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 256, + "rust_line": 136, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9293,7 +9293,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 257, + "rust_line": 137, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9312,7 +9312,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 258, + "rust_line": 138, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9331,7 +9331,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 259, + "rust_line": 139, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9350,7 +9350,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 260, + "rust_line": 140, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9371,7 +9371,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 261, + "rust_line": 141, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9392,7 +9392,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 262, + "rust_line": 142, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9641,7 +9641,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 263, + "rust_line": 143, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9662,7 +9662,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 264, + "rust_line": 144, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9683,7 +9683,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 265, + "rust_line": 145, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9704,7 +9704,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 266, + "rust_line": 146, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9725,7 +9725,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 267, + "rust_line": 147, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9746,7 +9746,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 268, + "rust_line": 148, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9768,7 +9768,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 269, + "rust_line": 149, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9790,7 +9790,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 270, + "rust_line": 150, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9812,7 +9812,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 271, + "rust_line": 151, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9834,7 +9834,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 272, + "rust_line": 152, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9856,7 +9856,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 273, + "rust_line": 153, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9878,7 +9878,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 274, + "rust_line": 154, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9900,7 +9900,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 275, + "rust_line": 155, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9922,7 +9922,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 276, + "rust_line": 156, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9944,7 +9944,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 277, + "rust_line": 157, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9966,7 +9966,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 278, + "rust_line": 158, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -9988,7 +9988,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 279, + "rust_line": 159, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10010,7 +10010,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 280, + "rust_line": 160, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10032,7 +10032,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 281, + "rust_line": 161, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10054,7 +10054,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 282, + "rust_line": 162, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10076,7 +10076,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 283, + "rust_line": 163, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10098,7 +10098,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 284, + "rust_line": 164, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10120,7 +10120,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 285, + "rust_line": 165, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10142,7 +10142,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 286, + "rust_line": 166, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10164,7 +10164,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 287, + "rust_line": 167, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10186,7 +10186,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 288, + "rust_line": 168, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10208,7 +10208,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 289, + "rust_line": 169, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10230,7 +10230,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 290, + "rust_line": 170, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10252,7 +10252,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 291, + "rust_line": 171, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10274,7 +10274,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 292, + "rust_line": 172, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10296,7 +10296,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 293, + "rust_line": 173, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10318,7 +10318,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 294, + "rust_line": 174, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10340,7 +10340,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 295, + "rust_line": 175, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10362,7 +10362,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 296, + "rust_line": 176, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10384,7 +10384,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 297, + "rust_line": 177, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10406,7 +10406,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 298, + "rust_line": 178, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10428,7 +10428,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 299, + "rust_line": 179, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10450,7 +10450,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 300, + "rust_line": 180, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10472,7 +10472,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 301, + "rust_line": 181, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10494,7 +10494,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 302, + "rust_line": 182, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10516,7 +10516,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 303, + "rust_line": 183, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10538,7 +10538,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 304, + "rust_line": 184, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10560,7 +10560,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 305, + "rust_line": 185, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10582,7 +10582,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 306, + "rust_line": 186, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10604,7 +10604,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 307, + "rust_line": 187, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10626,7 +10626,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 308, + "rust_line": 188, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10648,7 +10648,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 309, + "rust_line": 189, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10670,7 +10670,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 310, + "rust_line": 190, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10692,7 +10692,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 311, + "rust_line": 191, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10714,7 +10714,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 312, + "rust_line": 192, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10736,7 +10736,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 313, + "rust_line": 193, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10758,7 +10758,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 314, + "rust_line": 194, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10780,7 +10780,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 315, + "rust_line": 195, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10802,7 +10802,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 316, + "rust_line": 196, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10824,7 +10824,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 317, + "rust_line": 197, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10846,7 +10846,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 318, + "rust_line": 198, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10868,7 +10868,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 319, + "rust_line": 199, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10890,7 +10890,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 320, + "rust_line": 200, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10912,7 +10912,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 321, + "rust_line": 201, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10934,7 +10934,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 322, + "rust_line": 202, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10956,7 +10956,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 323, + "rust_line": 203, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -10978,7 +10978,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 324, + "rust_line": 204, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11000,7 +11000,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 325, + "rust_line": 205, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11022,7 +11022,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 326, + "rust_line": 206, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11044,7 +11044,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 327, + "rust_line": 207, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11066,7 +11066,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 328, + "rust_line": 208, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11088,7 +11088,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 329, + "rust_line": 209, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11110,7 +11110,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 330, + "rust_line": 210, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11132,7 +11132,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 331, + "rust_line": 211, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11154,7 +11154,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 332, + "rust_line": 212, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11176,7 +11176,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 333, + "rust_line": 213, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11198,7 +11198,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 334, + "rust_line": 214, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11220,7 +11220,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 335, + "rust_line": 215, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11242,7 +11242,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 336, + "rust_line": 216, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11264,7 +11264,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 337, + "rust_line": 217, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11285,7 +11285,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 338, + "rust_line": 218, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11306,7 +11306,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 339, + "rust_line": 219, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11327,7 +11327,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 340, + "rust_line": 220, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11348,7 +11348,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 341, + "rust_line": 221, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11370,7 +11370,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 342, + "rust_line": 222, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11392,7 +11392,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 343, + "rust_line": 223, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11414,7 +11414,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 344, + "rust_line": 224, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11436,7 +11436,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 345, + "rust_line": 225, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11458,7 +11458,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 346, + "rust_line": 226, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11480,7 +11480,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 347, + "rust_line": 227, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11502,7 +11502,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 348, + "rust_line": 228, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11524,7 +11524,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 349, + "rust_line": 229, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11546,7 +11546,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 350, + "rust_line": 230, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11568,7 +11568,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 351, + "rust_line": 231, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11590,7 +11590,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 352, + "rust_line": 232, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11612,7 +11612,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 353, + "rust_line": 233, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11634,7 +11634,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 354, + "rust_line": 234, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11656,7 +11656,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 355, + "rust_line": 235, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11678,7 +11678,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 356, + "rust_line": 236, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11700,7 +11700,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 357, + "rust_line": 237, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11722,7 +11722,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 358, + "rust_line": 238, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11744,7 +11744,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 359, + "rust_line": 239, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11766,7 +11766,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 360, + "rust_line": 240, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11788,7 +11788,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 361, + "rust_line": 241, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11810,7 +11810,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 362, + "rust_line": 242, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11832,7 +11832,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 363, + "rust_line": 243, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11854,7 +11854,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 364, + "rust_line": 244, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11876,7 +11876,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 365, + "rust_line": 245, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11898,7 +11898,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 366, + "rust_line": 246, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11920,7 +11920,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 367, + "rust_line": 247, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11942,7 +11942,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 368, + "rust_line": 248, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11964,7 +11964,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 369, + "rust_line": 249, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -11986,7 +11986,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 370, + "rust_line": 250, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12008,7 +12008,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 371, + "rust_line": 251, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12030,7 +12030,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 372, + "rust_line": 252, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12052,7 +12052,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 373, + "rust_line": 253, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12074,7 +12074,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 374, + "rust_line": 254, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12096,7 +12096,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 375, + "rust_line": 255, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12118,7 +12118,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 376, + "rust_line": 256, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12140,7 +12140,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 377, + "rust_line": 257, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12162,7 +12162,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 378, + "rust_line": 258, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12184,7 +12184,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 379, + "rust_line": 259, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12206,7 +12206,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 380, + "rust_line": 260, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12228,7 +12228,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 381, + "rust_line": 261, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12250,7 +12250,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 382, + "rust_line": 262, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12272,7 +12272,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 383, + "rust_line": 263, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12294,7 +12294,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 384, + "rust_line": 264, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12316,7 +12316,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 385, + "rust_line": 265, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12338,7 +12338,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 386, + "rust_line": 266, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12360,7 +12360,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 387, + "rust_line": 267, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12382,7 +12382,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 388, + "rust_line": 268, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12404,7 +12404,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 389, + "rust_line": 269, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12426,7 +12426,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 390, + "rust_line": 270, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12448,7 +12448,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 391, + "rust_line": 271, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12470,7 +12470,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 392, + "rust_line": 272, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12492,7 +12492,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 393, + "rust_line": 273, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12514,7 +12514,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 394, + "rust_line": 274, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12536,7 +12536,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 395, + "rust_line": 275, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12558,7 +12558,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 396, + "rust_line": 276, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12580,7 +12580,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 397, + "rust_line": 277, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12602,7 +12602,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 398, + "rust_line": 278, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12624,7 +12624,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 399, + "rust_line": 279, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12646,7 +12646,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 400, + "rust_line": 280, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12668,7 +12668,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 401, + "rust_line": 281, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12690,7 +12690,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 402, + "rust_line": 282, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12712,7 +12712,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 403, + "rust_line": 283, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12734,7 +12734,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 404, + "rust_line": 284, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12756,7 +12756,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 405, + "rust_line": 285, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12778,7 +12778,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 406, + "rust_line": 286, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12800,7 +12800,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 407, + "rust_line": 287, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12822,7 +12822,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 408, + "rust_line": 288, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12844,7 +12844,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 409, + "rust_line": 289, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12866,7 +12866,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 410, + "rust_line": 290, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12888,7 +12888,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 411, + "rust_line": 291, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12910,7 +12910,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 412, + "rust_line": 292, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12932,7 +12932,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 413, + "rust_line": 293, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12954,7 +12954,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 414, + "rust_line": 294, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12976,7 +12976,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 415, + "rust_line": 295, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -12998,7 +12998,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 416, + "rust_line": 296, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13020,7 +13020,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 417, + "rust_line": 297, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13042,7 +13042,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 418, + "rust_line": 298, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13064,7 +13064,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 419, + "rust_line": 299, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13086,7 +13086,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 420, + "rust_line": 300, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13108,7 +13108,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 421, + "rust_line": 301, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13130,7 +13130,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 422, + "rust_line": 302, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13152,7 +13152,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 423, + "rust_line": 303, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13174,7 +13174,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 424, + "rust_line": 304, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13196,7 +13196,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 425, + "rust_line": 305, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13218,7 +13218,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 426, + "rust_line": 306, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13240,7 +13240,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 427, + "rust_line": 307, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13262,7 +13262,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 428, + "rust_line": 308, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13284,7 +13284,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 429, + "rust_line": 309, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13306,7 +13306,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 430, + "rust_line": 310, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13327,7 +13327,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 431, + "rust_line": 311, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13348,7 +13348,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 432, + "rust_line": 312, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13369,7 +13369,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 433, + "rust_line": 313, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13390,7 +13390,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 434, + "rust_line": 314, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13411,7 +13411,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 435, + "rust_line": 315, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13432,7 +13432,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 436, + "rust_line": 316, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13453,7 +13453,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 437, + "rust_line": 317, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13474,7 +13474,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 438, + "rust_line": 318, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13495,7 +13495,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 439, + "rust_line": 319, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13516,7 +13516,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 440, + "rust_line": 320, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13537,7 +13537,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 441, + "rust_line": 321, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13558,7 +13558,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 442, + "rust_line": 322, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13579,7 +13579,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 443, + "rust_line": 323, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13600,7 +13600,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 444, + "rust_line": 324, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13621,7 +13621,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 445, + "rust_line": 325, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13642,7 +13642,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 446, + "rust_line": 326, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13663,7 +13663,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 447, + "rust_line": 327, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13684,7 +13684,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 448, + "rust_line": 328, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13705,7 +13705,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 449, + "rust_line": 329, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13726,7 +13726,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 450, + "rust_line": 330, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13747,7 +13747,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 451, + "rust_line": 331, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13768,7 +13768,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 452, + "rust_line": 332, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13789,7 +13789,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 453, + "rust_line": 333, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13810,7 +13810,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 454, + "rust_line": 334, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13831,7 +13831,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 455, + "rust_line": 335, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13852,7 +13852,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 456, + "rust_line": 336, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13873,7 +13873,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 457, + "rust_line": 337, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13894,7 +13894,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 458, + "rust_line": 338, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13915,7 +13915,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 459, + "rust_line": 339, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13936,7 +13936,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 460, + "rust_line": 340, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13958,7 +13958,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 461, + "rust_line": 341, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -13980,7 +13980,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 462, + "rust_line": 342, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14002,7 +14002,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 463, + "rust_line": 343, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14024,7 +14024,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 464, + "rust_line": 344, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14046,7 +14046,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 465, + "rust_line": 345, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14067,7 +14067,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 466, + "rust_line": 346, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14089,7 +14089,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 467, + "rust_line": 347, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14111,7 +14111,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 468, + "rust_line": 348, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14133,7 +14133,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 469, + "rust_line": 349, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14155,7 +14155,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 470, + "rust_line": 350, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14177,7 +14177,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 471, + "rust_line": 351, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14198,7 +14198,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 472, + "rust_line": 352, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14219,7 +14219,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 473, + "rust_line": 353, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14240,7 +14240,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 474, + "rust_line": 354, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14261,7 +14261,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 475, + "rust_line": 355, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14282,7 +14282,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 476, + "rust_line": 356, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14303,7 +14303,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 477, + "rust_line": 357, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14324,7 +14324,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 478, + "rust_line": 358, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14345,7 +14345,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 479, + "rust_line": 359, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14366,7 +14366,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 480, + "rust_line": 360, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14387,7 +14387,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 481, + "rust_line": 361, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14408,7 +14408,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 482, + "rust_line": 362, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14429,7 +14429,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 483, + "rust_line": 363, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14450,7 +14450,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 484, + "rust_line": 364, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14471,7 +14471,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 485, + "rust_line": 365, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14492,7 +14492,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 486, + "rust_line": 366, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14513,7 +14513,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 487, + "rust_line": 367, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14534,7 +14534,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 488, + "rust_line": 368, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14555,7 +14555,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 489, + "rust_line": 369, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14576,7 +14576,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 490, + "rust_line": 370, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14597,7 +14597,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 491, + "rust_line": 371, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14618,7 +14618,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 492, + "rust_line": 372, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14639,7 +14639,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 493, + "rust_line": 373, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14660,7 +14660,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 494, + "rust_line": 374, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14681,7 +14681,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 495, + "rust_line": 375, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14702,7 +14702,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 496, + "rust_line": 376, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14723,7 +14723,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 497, + "rust_line": 377, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14744,7 +14744,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 498, + "rust_line": 378, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14765,7 +14765,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 499, + "rust_line": 379, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14786,7 +14786,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 500, + "rust_line": 380, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14807,7 +14807,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 501, + "rust_line": 381, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14828,7 +14828,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 502, + "rust_line": 382, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14849,7 +14849,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 503, + "rust_line": 383, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14870,7 +14870,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 504, + "rust_line": 384, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14891,7 +14891,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 505, + "rust_line": 385, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14912,7 +14912,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 506, + "rust_line": 386, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14933,7 +14933,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 507, + "rust_line": 387, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14954,7 +14954,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 508, + "rust_line": 388, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14975,7 +14975,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 509, + "rust_line": 389, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -14996,7 +14996,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 510, + "rust_line": 390, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15017,7 +15017,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 511, + "rust_line": 391, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15038,7 +15038,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 512, + "rust_line": 392, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15059,7 +15059,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 513, + "rust_line": 393, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15080,7 +15080,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 514, + "rust_line": 394, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15101,7 +15101,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 515, + "rust_line": 395, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15122,7 +15122,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 516, + "rust_line": 396, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15143,7 +15143,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 517, + "rust_line": 397, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15164,7 +15164,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 518, + "rust_line": 398, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15185,7 +15185,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 519, + "rust_line": 399, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15206,7 +15206,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 520, + "rust_line": 400, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15227,7 +15227,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 521, + "rust_line": 401, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15248,7 +15248,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 522, + "rust_line": 402, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15269,7 +15269,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 523, + "rust_line": 403, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15290,7 +15290,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 524, + "rust_line": 404, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15311,7 +15311,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 525, + "rust_line": 405, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15332,7 +15332,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 526, + "rust_line": 406, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15353,7 +15353,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 527, + "rust_line": 407, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15374,7 +15374,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 528, + "rust_line": 408, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15395,7 +15395,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 529, + "rust_line": 409, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15416,7 +15416,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 530, + "rust_line": 410, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15437,7 +15437,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 531, + "rust_line": 411, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15458,7 +15458,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 532, + "rust_line": 412, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15479,7 +15479,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 533, + "rust_line": 413, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15500,7 +15500,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 534, + "rust_line": 414, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15521,7 +15521,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 535, + "rust_line": 415, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15542,7 +15542,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 536, + "rust_line": 416, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15563,7 +15563,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 537, + "rust_line": 417, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15585,7 +15585,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 538, + "rust_line": 418, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15607,7 +15607,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 539, + "rust_line": 419, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15629,7 +15629,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 540, + "rust_line": 420, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15651,7 +15651,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 541, + "rust_line": 421, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15673,7 +15673,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 542, + "rust_line": 422, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15695,7 +15695,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 543, + "rust_line": 423, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15717,7 +15717,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 544, + "rust_line": 424, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15739,7 +15739,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 545, + "rust_line": 425, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15761,7 +15761,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 546, + "rust_line": 426, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15783,7 +15783,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 547, + "rust_line": 427, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15805,7 +15805,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 548, + "rust_line": 428, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15827,7 +15827,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 549, + "rust_line": 429, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15848,7 +15848,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 550, + "rust_line": 430, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15869,7 +15869,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 551, + "rust_line": 431, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15890,7 +15890,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 552, + "rust_line": 432, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15911,7 +15911,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 553, + "rust_line": 433, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15932,7 +15932,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 554, + "rust_line": 434, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15953,7 +15953,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 555, + "rust_line": 435, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15974,7 +15974,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 556, + "rust_line": 436, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -15995,7 +15995,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 557, + "rust_line": 437, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16016,7 +16016,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 558, + "rust_line": 438, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16037,7 +16037,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 559, + "rust_line": 439, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16058,7 +16058,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 560, + "rust_line": 440, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16079,7 +16079,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 561, + "rust_line": 441, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16100,7 +16100,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 562, + "rust_line": 442, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16122,7 +16122,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 563, + "rust_line": 443, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16144,7 +16144,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 564, + "rust_line": 444, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16166,7 +16166,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 565, + "rust_line": 445, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16188,7 +16188,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 566, + "rust_line": 446, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16210,7 +16210,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 567, + "rust_line": 447, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16232,7 +16232,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 568, + "rust_line": 448, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16254,7 +16254,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 569, + "rust_line": 449, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16276,7 +16276,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 570, + "rust_line": 450, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16298,7 +16298,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 571, + "rust_line": 451, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16320,7 +16320,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 572, + "rust_line": 452, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16342,7 +16342,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 573, + "rust_line": 453, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16364,7 +16364,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 574, + "rust_line": 454, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16386,7 +16386,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 575, + "rust_line": 455, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16408,7 +16408,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 576, + "rust_line": 456, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16430,7 +16430,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 577, + "rust_line": 457, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16452,7 +16452,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 578, + "rust_line": 458, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16474,7 +16474,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 579, + "rust_line": 459, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16496,7 +16496,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 580, + "rust_line": 460, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16518,7 +16518,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 581, + "rust_line": 461, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16540,7 +16540,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 582, + "rust_line": 462, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16562,7 +16562,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 583, + "rust_line": 463, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16584,7 +16584,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 584, + "rust_line": 464, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16606,7 +16606,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 585, + "rust_line": 465, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16628,7 +16628,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 586, + "rust_line": 466, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16650,7 +16650,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 587, + "rust_line": 467, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16671,7 +16671,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 588, + "rust_line": 468, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16692,7 +16692,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 589, + "rust_line": 469, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16713,7 +16713,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 590, + "rust_line": 470, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16734,7 +16734,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 591, + "rust_line": 471, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16755,7 +16755,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 592, + "rust_line": 472, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16776,7 +16776,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 593, + "rust_line": 473, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16797,7 +16797,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 594, + "rust_line": 474, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16818,7 +16818,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 595, + "rust_line": 475, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16839,7 +16839,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 596, + "rust_line": 476, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16860,7 +16860,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 597, + "rust_line": 477, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16881,7 +16881,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 598, + "rust_line": 478, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16902,7 +16902,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 599, + "rust_line": 479, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16923,7 +16923,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 600, + "rust_line": 480, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16944,7 +16944,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 601, + "rust_line": 481, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16965,7 +16965,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 602, + "rust_line": 482, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -16986,7 +16986,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 603, + "rust_line": 483, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17007,7 +17007,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 604, + "rust_line": 484, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17028,7 +17028,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 605, + "rust_line": 485, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17049,7 +17049,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 606, + "rust_line": 486, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17070,7 +17070,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 607, + "rust_line": 487, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17091,7 +17091,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 608, + "rust_line": 488, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17112,7 +17112,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 609, + "rust_line": 489, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17133,7 +17133,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 610, + "rust_line": 490, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17154,7 +17154,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 611, + "rust_line": 491, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17175,7 +17175,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 612, + "rust_line": 492, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17196,7 +17196,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 613, + "rust_line": 493, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17217,7 +17217,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 614, + "rust_line": 494, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17238,7 +17238,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 615, + "rust_line": 495, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17259,7 +17259,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 616, + "rust_line": 496, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17280,7 +17280,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 617, + "rust_line": 497, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17301,7 +17301,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 618, + "rust_line": 498, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17322,7 +17322,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 619, + "rust_line": 499, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17343,7 +17343,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 620, + "rust_line": 500, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17364,7 +17364,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 621, + "rust_line": 501, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17385,7 +17385,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 622, + "rust_line": 502, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17406,7 +17406,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 623, + "rust_line": 503, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17427,7 +17427,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 624, + "rust_line": 504, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17448,7 +17448,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 625, + "rust_line": 505, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17469,7 +17469,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 626, + "rust_line": 506, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17491,7 +17491,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 627, + "rust_line": 507, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17513,7 +17513,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 628, + "rust_line": 508, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17535,7 +17535,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 629, + "rust_line": 509, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17557,7 +17557,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 630, + "rust_line": 510, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17578,7 +17578,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 631, + "rust_line": 511, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17599,7 +17599,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 632, + "rust_line": 512, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17621,7 +17621,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 633, + "rust_line": 513, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17643,7 +17643,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 634, + "rust_line": 514, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17665,7 +17665,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 635, + "rust_line": 515, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17687,7 +17687,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 636, + "rust_line": 516, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17709,7 +17709,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 637, + "rust_line": 517, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17731,7 +17731,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 638, + "rust_line": 518, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17753,7 +17753,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 639, + "rust_line": 519, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17775,7 +17775,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 640, + "rust_line": 520, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17797,7 +17797,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 641, + "rust_line": 521, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17819,7 +17819,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 642, + "rust_line": 522, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17841,7 +17841,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 643, + "rust_line": 523, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17863,7 +17863,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 644, + "rust_line": 524, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17884,7 +17884,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 645, + "rust_line": 525, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17905,7 +17905,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 646, + "rust_line": 526, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17926,7 +17926,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 647, + "rust_line": 527, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17947,7 +17947,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 648, + "rust_line": 528, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17969,7 +17969,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 649, + "rust_line": 529, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -17991,7 +17991,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 650, + "rust_line": 530, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18013,7 +18013,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 651, + "rust_line": 531, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18035,7 +18035,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 652, + "rust_line": 532, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18057,7 +18057,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 653, + "rust_line": 533, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18079,7 +18079,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 654, + "rust_line": 534, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18100,7 +18100,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 655, + "rust_line": 535, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18121,7 +18121,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 656, + "rust_line": 536, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18142,7 +18142,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 657, + "rust_line": 537, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18164,7 +18164,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 658, + "rust_line": 538, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18186,7 +18186,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 659, + "rust_line": 539, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18208,7 +18208,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 660, + "rust_line": 540, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18230,7 +18230,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 661, + "rust_line": 541, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18252,7 +18252,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 662, + "rust_line": 542, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18274,7 +18274,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 663, + "rust_line": 543, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18295,7 +18295,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 664, + "rust_line": 544, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18316,7 +18316,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 665, + "rust_line": 545, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18337,7 +18337,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 666, + "rust_line": 546, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18358,7 +18358,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 667, + "rust_line": 547, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18379,7 +18379,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 668, + "rust_line": 548, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18400,7 +18400,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 669, + "rust_line": 549, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18421,7 +18421,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 670, + "rust_line": 550, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18442,7 +18442,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 671, + "rust_line": 551, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18463,7 +18463,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 672, + "rust_line": 552, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18484,7 +18484,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 673, + "rust_line": 553, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18505,7 +18505,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 674, + "rust_line": 554, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18526,7 +18526,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 675, + "rust_line": 555, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18547,7 +18547,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 676, + "rust_line": 556, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18568,7 +18568,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 677, + "rust_line": 557, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18589,7 +18589,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 678, + "rust_line": 558, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18610,7 +18610,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 679, + "rust_line": 559, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18631,7 +18631,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 680, + "rust_line": 560, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18652,7 +18652,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 681, + "rust_line": 561, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18673,7 +18673,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 682, + "rust_line": 562, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18694,7 +18694,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 683, + "rust_line": 563, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18715,7 +18715,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 684, + "rust_line": 564, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18736,7 +18736,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 685, + "rust_line": 565, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18757,7 +18757,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 686, + "rust_line": 566, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18778,7 +18778,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 687, + "rust_line": 567, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18799,7 +18799,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 688, + "rust_line": 568, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18820,7 +18820,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 689, + "rust_line": 569, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18841,7 +18841,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 690, + "rust_line": 570, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18862,7 +18862,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 691, + "rust_line": 571, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18883,7 +18883,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 692, + "rust_line": 572, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18904,7 +18904,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 693, + "rust_line": 573, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18925,7 +18925,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 694, + "rust_line": 574, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18946,7 +18946,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 695, + "rust_line": 575, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18968,7 +18968,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 696, + "rust_line": 576, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -18990,7 +18990,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 697, + "rust_line": 577, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19012,7 +19012,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 698, + "rust_line": 578, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19034,7 +19034,7 @@ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 699, + "rust_line": 579, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19055,7 +19055,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 700, + "rust_line": 580, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19076,7 +19076,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 701, + "rust_line": 581, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19097,7 +19097,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 702, + "rust_line": 582, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19118,7 +19118,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 703, + "rust_line": 583, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19139,7 +19139,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 704, + "rust_line": 584, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19160,7 +19160,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 705, + "rust_line": 585, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19181,7 +19181,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 706, + "rust_line": 586, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19202,7 +19202,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 707, + "rust_line": 587, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19223,7 +19223,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 708, + "rust_line": 588, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19244,7 +19244,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 709, + "rust_line": 589, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19265,7 +19265,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 710, + "rust_line": 590, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19286,7 +19286,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 711, + "rust_line": 591, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19307,7 +19307,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 712, + "rust_line": 592, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19328,7 +19328,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 713, + "rust_line": 593, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19349,7 +19349,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 714, + "rust_line": 594, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19370,7 +19370,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 715, + "rust_line": 595, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19391,7 +19391,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 716, + "rust_line": 596, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19412,7 +19412,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 717, + "rust_line": 597, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19433,7 +19433,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 718, + "rust_line": 598, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19454,7 +19454,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 719, + "rust_line": 599, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19475,7 +19475,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 720, + "rust_line": 600, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19496,7 +19496,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 721, + "rust_line": 601, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19517,7 +19517,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 722, + "rust_line": 602, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19538,7 +19538,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 723, + "rust_line": 603, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19559,7 +19559,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 724, + "rust_line": 604, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19580,7 +19580,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 725, + "rust_line": 605, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19601,7 +19601,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 726, + "rust_line": 606, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19622,7 +19622,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 727, + "rust_line": 607, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19643,7 +19643,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 728, + "rust_line": 608, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19664,7 +19664,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 729, + "rust_line": 609, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19685,7 +19685,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 730, + "rust_line": 610, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19706,7 +19706,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 731, + "rust_line": 611, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19727,7 +19727,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 732, + "rust_line": 612, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19748,7 +19748,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 733, + "rust_line": 613, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19769,7 +19769,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 734, + "rust_line": 614, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19790,7 +19790,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 735, + "rust_line": 615, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19811,7 +19811,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 736, + "rust_line": 616, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19832,7 +19832,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 737, + "rust_line": 617, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19853,7 +19853,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 738, + "rust_line": 618, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19874,7 +19874,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 739, + "rust_line": 619, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19895,7 +19895,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 740, + "rust_line": 620, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19916,7 +19916,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 741, + "rust_line": 621, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19937,7 +19937,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 742, + "rust_line": 622, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19958,7 +19958,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 743, + "rust_line": 623, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -19979,7 +19979,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 744, + "rust_line": 624, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20000,7 +20000,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 745, + "rust_line": 625, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20021,7 +20021,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 746, + "rust_line": 626, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20042,7 +20042,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 747, + "rust_line": 627, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20063,7 +20063,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 748, + "rust_line": 628, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20084,7 +20084,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 749, + "rust_line": 629, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20105,7 +20105,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 750, + "rust_line": 630, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20126,7 +20126,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 751, + "rust_line": 631, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20147,7 +20147,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 752, + "rust_line": 632, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20168,7 +20168,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 753, + "rust_line": 633, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20189,7 +20189,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 754, + "rust_line": 634, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20210,7 +20210,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 755, + "rust_line": 635, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20231,7 +20231,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 756, + "rust_line": 636, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20252,7 +20252,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 757, + "rust_line": 637, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20273,7 +20273,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 758, + "rust_line": 638, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20294,7 +20294,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 759, + "rust_line": 639, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20315,7 +20315,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 760, + "rust_line": 640, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20336,7 +20336,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 761, + "rust_line": 641, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20357,7 +20357,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 762, + "rust_line": 642, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20378,7 +20378,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 763, + "rust_line": 643, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20399,7 +20399,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 764, + "rust_line": 644, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20420,7 +20420,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 765, + "rust_line": 645, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20441,7 +20441,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 766, + "rust_line": 646, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20462,7 +20462,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 767, + "rust_line": 647, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20483,7 +20483,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 768, + "rust_line": 648, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20504,7 +20504,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 769, + "rust_line": 649, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20525,7 +20525,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 770, + "rust_line": 650, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20546,7 +20546,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 771, + "rust_line": 651, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20567,7 +20567,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 772, + "rust_line": 652, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20588,7 +20588,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 773, + "rust_line": 653, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20609,7 +20609,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 774, + "rust_line": 654, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20630,7 +20630,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 775, + "rust_line": 655, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20651,7 +20651,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 776, + "rust_line": 656, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20672,7 +20672,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 777, + "rust_line": 657, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20693,7 +20693,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 778, + "rust_line": 658, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20714,7 +20714,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 779, + "rust_line": 659, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20735,7 +20735,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 780, + "rust_line": 660, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20756,7 +20756,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 781, + "rust_line": 661, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20777,7 +20777,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 782, + "rust_line": 662, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20798,7 +20798,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 783, + "rust_line": 663, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20819,7 +20819,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 784, + "rust_line": 664, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20840,7 +20840,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 785, + "rust_line": 665, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20861,7 +20861,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 786, + "rust_line": 666, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20882,7 +20882,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 787, + "rust_line": 667, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20903,7 +20903,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 788, + "rust_line": 668, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20924,7 +20924,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 789, + "rust_line": 669, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20945,7 +20945,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 790, + "rust_line": 670, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20966,7 +20966,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 791, + "rust_line": 671, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -20987,7 +20987,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 792, + "rust_line": 672, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21008,7 +21008,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 793, + "rust_line": 673, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21029,7 +21029,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 794, + "rust_line": 674, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21050,7 +21050,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 795, + "rust_line": 675, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21071,7 +21071,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 796, + "rust_line": 676, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21092,7 +21092,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 797, + "rust_line": 677, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21113,7 +21113,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 798, + "rust_line": 678, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21134,7 +21134,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 799, + "rust_line": 679, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21155,7 +21155,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 800, + "rust_line": 680, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21176,7 +21176,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 801, + "rust_line": 681, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21197,7 +21197,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 802, + "rust_line": 682, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21218,7 +21218,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 803, + "rust_line": 683, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21239,7 +21239,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 804, + "rust_line": 684, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21260,7 +21260,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 805, + "rust_line": 685, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21281,7 +21281,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 806, + "rust_line": 686, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21302,7 +21302,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 807, + "rust_line": 687, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21323,7 +21323,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 808, + "rust_line": 688, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21344,7 +21344,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 809, + "rust_line": 689, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21365,7 +21365,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 810, + "rust_line": 690, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21386,7 +21386,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 811, + "rust_line": 691, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21407,7 +21407,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 812, + "rust_line": 692, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21428,7 +21428,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 813, + "rust_line": 693, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21449,7 +21449,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 814, + "rust_line": 694, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21470,7 +21470,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 815, + "rust_line": 695, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21491,7 +21491,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 816, + "rust_line": 696, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21512,7 +21512,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 817, + "rust_line": 697, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21533,7 +21533,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 818, + "rust_line": 698, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21554,7 +21554,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 819, + "rust_line": 699, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21575,7 +21575,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 820, + "rust_line": 700, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21596,7 +21596,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 821, + "rust_line": 701, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21617,7 +21617,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 822, + "rust_line": 702, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21638,7 +21638,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 823, + "rust_line": 703, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21659,7 +21659,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 824, + "rust_line": 704, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21680,7 +21680,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 825, + "rust_line": 705, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21701,7 +21701,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 826, + "rust_line": 706, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21722,7 +21722,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 827, + "rust_line": 707, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21743,7 +21743,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 828, + "rust_line": 708, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21764,7 +21764,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 829, + "rust_line": 709, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21785,7 +21785,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 830, + "rust_line": 710, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21806,7 +21806,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 831, + "rust_line": 711, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21827,7 +21827,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 832, + "rust_line": 712, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21848,7 +21848,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 833, + "rust_line": 713, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21869,7 +21869,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 834, + "rust_line": 714, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21890,7 +21890,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 835, + "rust_line": 715, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21911,7 +21911,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 836, + "rust_line": 716, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21932,7 +21932,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 837, + "rust_line": 717, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21953,7 +21953,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 838, + "rust_line": 718, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21974,7 +21974,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 839, + "rust_line": 719, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -21995,7 +21995,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 840, + "rust_line": 720, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22016,7 +22016,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 841, + "rust_line": 721, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22037,7 +22037,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 842, + "rust_line": 722, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22058,7 +22058,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 843, + "rust_line": 723, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22079,7 +22079,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 844, + "rust_line": 724, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22100,7 +22100,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 845, + "rust_line": 725, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22121,7 +22121,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 846, + "rust_line": 726, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22142,7 +22142,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 847, + "rust_line": 727, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22163,7 +22163,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 848, + "rust_line": 728, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22184,7 +22184,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 849, + "rust_line": 729, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22205,7 +22205,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 850, + "rust_line": 730, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22226,7 +22226,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 851, + "rust_line": 731, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22247,7 +22247,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 852, + "rust_line": 732, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22268,7 +22268,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 853, + "rust_line": 733, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22289,7 +22289,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 854, + "rust_line": 734, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22308,7 +22308,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 855, + "rust_line": 735, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22327,7 +22327,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 856, + "rust_line": 736, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22346,7 +22346,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 857, + "rust_line": 737, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22365,7 +22365,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 858, + "rust_line": 738, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22384,7 +22384,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 859, + "rust_line": 739, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22403,7 +22403,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 860, + "rust_line": 740, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22422,7 +22422,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 861, + "rust_line": 741, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22441,7 +22441,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 862, + "rust_line": 742, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22460,7 +22460,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 863, + "rust_line": 743, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22479,7 +22479,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 864, + "rust_line": 744, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22498,7 +22498,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 865, + "rust_line": 745, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22517,7 +22517,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 866, + "rust_line": 746, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22536,7 +22536,7 @@ "categories": [], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 867, + "rust_line": 747, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22557,7 +22557,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 868, + "rust_line": 748, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22578,7 +22578,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 869, + "rust_line": 749, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22599,7 +22599,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 870, + "rust_line": 750, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22620,7 +22620,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 871, + "rust_line": 751, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22641,7 +22641,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 872, + "rust_line": 752, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22662,7 +22662,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 873, + "rust_line": 753, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22683,7 +22683,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 874, + "rust_line": 754, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22704,7 +22704,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 875, + "rust_line": 755, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22725,7 +22725,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 876, + "rust_line": 756, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22746,7 +22746,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 877, + "rust_line": 757, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22767,7 +22767,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 878, + "rust_line": 758, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22788,7 +22788,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 879, + "rust_line": 759, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22809,7 +22809,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 880, + "rust_line": 760, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22830,7 +22830,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 881, + "rust_line": 761, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22851,7 +22851,7 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 882, + "rust_line": 762, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22893,7 +22893,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 883, + "rust_line": 763, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22916,7 +22916,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 884, + "rust_line": 764, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22939,7 +22939,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 885, + "rust_line": 765, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22962,7 +22962,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 886, + "rust_line": 766, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -22985,7 +22985,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 887, + "rust_line": 767, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23008,7 +23008,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 888, + "rust_line": 768, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23031,7 +23031,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 889, + "rust_line": 769, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23054,7 +23054,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 890, + "rust_line": 770, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23077,7 +23077,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 891, + "rust_line": 771, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23098,7 +23098,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 892, + "rust_line": 772, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23119,7 +23119,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 893, + "rust_line": 773, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23140,7 +23140,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 894, + "rust_line": 774, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23161,7 +23161,7 @@ "LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs" ], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 895, + "rust_line": 775, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23266,7 +23266,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 896, + "rust_line": 776, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23287,7 +23287,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 897, + "rust_line": 777, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23308,7 +23308,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 898, + "rust_line": 778, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23329,7 +23329,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 899, + "rust_line": 779, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23350,7 +23350,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 900, + "rust_line": 780, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23371,7 +23371,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 901, + "rust_line": 781, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23392,7 +23392,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 902, + "rust_line": 782, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23413,7 +23413,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 903, + "rust_line": 783, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23434,7 +23434,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 904, + "rust_line": 784, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23455,7 +23455,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 905, + "rust_line": 785, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23476,7 +23476,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 906, + "rust_line": 786, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23497,7 +23497,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 907, + "rust_line": 787, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23518,7 +23518,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 908, + "rust_line": 788, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23539,7 +23539,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 909, + "rust_line": 789, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23560,7 +23560,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 910, + "rust_line": 790, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23581,7 +23581,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 911, + "rust_line": 791, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23602,7 +23602,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 912, + "rust_line": 792, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23623,7 +23623,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 913, + "rust_line": 793, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23644,7 +23644,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 914, + "rust_line": 794, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23665,7 +23665,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 915, + "rust_line": 795, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23686,7 +23686,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 916, + "rust_line": 796, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23707,7 +23707,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 917, + "rust_line": 797, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23728,7 +23728,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 918, + "rust_line": 798, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23749,7 +23749,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 919, + "rust_line": 799, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23770,7 +23770,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 920, + "rust_line": 800, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23791,7 +23791,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 921, + "rust_line": 801, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23812,7 +23812,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 922, + "rust_line": 802, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23833,7 +23833,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 923, + "rust_line": 803, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23854,7 +23854,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 924, + "rust_line": 804, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23875,7 +23875,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 925, + "rust_line": 805, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23896,7 +23896,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 926, + "rust_line": 806, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23917,7 +23917,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 927, + "rust_line": 807, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23938,7 +23938,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 928, + "rust_line": 808, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23959,7 +23959,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 929, + "rust_line": 809, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -23980,7 +23980,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 930, + "rust_line": 810, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24001,7 +24001,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 931, + "rust_line": 811, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24022,7 +24022,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 932, + "rust_line": 812, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24043,7 +24043,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 933, + "rust_line": 813, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24190,7 +24190,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 934, + "rust_line": 814, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24211,7 +24211,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 935, + "rust_line": 815, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24232,7 +24232,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 936, + "rust_line": 816, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24253,7 +24253,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 937, + "rust_line": 817, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24274,7 +24274,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 938, + "rust_line": 818, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24295,7 +24295,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 939, + "rust_line": 819, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24316,7 +24316,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 940, + "rust_line": 820, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24337,7 +24337,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 941, + "rust_line": 821, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24358,7 +24358,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 942, + "rust_line": 822, "rust_test": "", "rust_body_sha256": null, "status": "pending", @@ -24379,7 +24379,7 @@ ], "fixture_dependencies": [], "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 943, + "rust_line": 823, "rust_test": "", "rust_body_sha256": null, "status": "pending", diff --git a/tools/generate_api_shims.py b/tools/generate_api_shims.py index ca3db86..e83e55b 100644 --- a/tools/generate_api_shims.py +++ b/tools/generate_api_shims.py @@ -73,7 +73,12 @@ WIRE_ROOT_TYPES = { "T:LibreMetaverse.TreeDefinition", } COMPOSED_BASE_TYPES = { + "T:LibreMetaverse.InventoryAttachment", "T:LibreMetaverse.InventoryFolder", + "T:LibreMetaverse.InventoryItem", + "T:LibreMetaverse.InventoryObject", + "T:LibreMetaverse.InventoryTexture", + "T:LibreMetaverse.InventoryWearable", "T:LibreMetaverse.Messages.Linden.ChatSessionAcceptInvitation", "T:LibreMetaverse.Messages.Linden.ChatSessionRequestMuteUpdate", "T:LibreMetaverse.Messages.Linden.ChatSessionRequestStartConference", @@ -82,6 +87,11 @@ COMPOSED_BASE_TYPES = { "T:LibreMetaverse.Packets.TestMessagePacket", "T:LibreMetaverse.Rendering.Joint", } +OPEN_ENUM_IDS = {"T:LibreMetaverse.BakeType"} +TRAIT_SUPERTRAITS = { + "T:LibreMetaverse.IBakingTextureProvider": "std::any::Any", + "T:LibreMetaverse.Appearance.ICurrentOutfitPolicy": "Send + Sync", +} CORE_NAMESPACES = ( "LibreMetaverse.Http", "LibreMetaverse.Stats", @@ -476,6 +486,21 @@ def render_enum(item: dict, rust_name: str) -> list[str]: underlying = UNDERLYING[item["enum_underlying_type"]] values = [member for member in item["members"] if member["kind"] == "enum_value"] lines = [f"/// C# type: `{item['doc_id']}`."] + if item["doc_id"] in OPEN_ENUM_IDS: + lines += [ + "#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]", + "#[repr(transparent)]", + f"pub struct {rust_name}(pub {underlying});", + "#[allow(non_upper_case_globals)]", + f"impl {rust_name} {{", + ] + for member in values: + lines += [ + f" /// C# member: `{member['doc_id']}`.", + f" pub const {mapping.pascal(member['name'])}: Self = Self({member['value']['value']});", + ] + lines.append("}") + return lines if flags_enum(item) or duplicate_enum_values(item): lines += [ "#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]", @@ -508,7 +533,7 @@ def render_body(signature: str, member_id: str, error_model: str, asyncness: str if error_model.startswith("Result") else f"libremetaverse_types::unimplemented_api!({json.dumps(member_id)})" ) - if asyncness == "boxed_future": + if asyncness == "boxed_future" or "std::pin::Pin>", "F:LibreMetaverse.Rendering.Face.Weights": ( "Option>" ), @@ -182,6 +183,84 @@ MEMBER_TYPE_OVERRIDES = { ), } MEMBER_SIGNATURE_OVERRIDES = { + "M:LibreMetaverse.AvatarAppearanceEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.UUID,System.Boolean,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Primitive.TextureEntryFace[],System.Collections.Generic.List{System.Byte},System.Byte,System.Int32,LibreMetaverse.AppearanceFlags,System.Int32)": ( + "pub fn new(sim: Option, avatar_id: libremetaverse_types::UUID, " + "is_trial: bool, default_texture: libremetaverse::PrimitiveTextureEntryFace, face_textures: " + "Vec, visual_params: Vec, appearance_version: " + "u8, cof_version: i32, appearance_flags: libremetaverse::AppearanceFlags, child_count: i32) " + "-> Result", + "optional_owned,owned,owned,owned,owned,owned,owned,owned,owned,owned", + ), + "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)": ( + "pub fn add_policy(&self, policy_to_add: Option>) -> Result<&Self, crate::Error>", + "shared_self,optional_shared", + ), + "M:LibreMetaverse.Appearance.CurrentOutfitFolder.#ctor(LibreMetaverse.GridClient)": ( + "pub fn new(client: Option>) -> Result", + "optional_shared", + ), + "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem)": ( + "pub fn can_attach(&self, item: Option>) " + "-> Result", + "shared_self,optional_shared", + ), + "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem)": ( + "pub fn can_detach(&self, item: Option>) " + "-> Result", + "shared_self,optional_shared", + ), + "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)": ( + "pub fn remove_policy(&self, policy_to_remove: Option>) -> Result<(), crate::Error>", + "shared_self,optional_shared", + ), + "M:LibreMetaverse.Appearance.CompositeCurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken)": ( + "pub async fn report_item_change(&self, added_items: Option>>, " + "removed_items: Option>>, cancellation_token: " + "Option) -> Result<(), crate::Error>", + "shared_self,optional_shared,optional_shared,optional_owned", + ), + "M:LibreMetaverse.Appearance.CurrentOutfitFolder.AddPolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)": ( + "pub fn add_policy(&self, policy_to_add: std::sync::Arc) -> Result, crate::Error>", + "shared_self,shared", + ), + "M:LibreMetaverse.Appearance.CurrentOutfitFolder.RemovePolicy(LibreMetaverse.Appearance.ICurrentOutfitPolicy)": ( + "pub fn remove_policy(&self, policy_to_remove: std::sync::Arc) -> Result<(), crate::Error>", + "shared_self,shared", + ), + "M:LibreMetaverse.Appearance.CurrentOutfitFolder.ResolveInventoryLink(LibreMetaverse.InventoryItem)": ( + "pub fn resolve_inventory_link(&self, item_link: std::sync::Arc) " + "-> Result>, crate::Error>", + "shared_self,shared", + ), + "M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanAttach(LibreMetaverse.InventoryItem)": ( + "pub fn can_attach(&self, item: Option>) " + "-> Result", + "shared_self,optional_shared", + ), + "M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.CanDetach(LibreMetaverse.InventoryItem)": ( + "pub fn can_detach(&self, item: Option>) " + "-> Result", + "shared_self,optional_shared", + ), + "M:LibreMetaverse.Appearance.ICurrentOutfitPolicy.ReportItemChangeAsync(System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Collections.Generic.List{LibreMetaverse.InventoryItem},System.Threading.CancellationToken)": ( + "pub fn report_item_change(&self, added_items: Option>>, " + "removed_items: Option>>, cancellation_token: " + "Option) -> std::pin::Pin> + Send + '_>>", + "shared_self,optional_shared,optional_shared,optional_owned", + ), + "M:LibreMetaverse.InventoryManager.CreateLinksAsync(LibreMetaverse.UUID,System.Collections.Generic.IEnumerable{System.ValueTuple{LibreMetaverse.InventoryBase,System.String}},System.Action{System.Boolean},System.Threading.CancellationToken)": ( + "pub async fn create_links(&self, folder_id: libremetaverse_types::UUID, links_to_create: " + "Box>, callback: Option>, cancellation_token: Option) " + "-> Result<(), crate::Error>", + "shared_self,owned,owned,optional_owned,optional_owned", + ), "M:LibreMetaverse.Animesh.AnimationTrack.EvaluatePose(System.Collections.Generic.Dictionary{System.String,LibreMetaverse.Animesh.JointPose})": ( "pub fn evaluate_pose(&self, pose: &mut std::collections::HashMap) -> Result<(), crate::Error>", @@ -273,6 +352,12 @@ MEMBER_SIGNATURE_OVERRIDES = { ), } PROPERTY_SIGNATURE_OVERRIDES = { + "P:LibreMetaverse.AppearanceManager.TextureProvider": ( + "pub fn texture_provider(&self) -> std::sync::Arc ; " + "pub fn set_texture_provider(&mut self, value: std::sync::Arc)", + "shared_or_mutable_self", + ), "P:LibreMetaverse.Rendering.Joint.bone": ( "pub fn bone(&self) -> Option> ; " "pub fn set_bone(&mut self, value: Option>)", @@ -706,6 +791,8 @@ def method_receiver(owner: dict, item: dict) -> tuple[str, str]: return "&mut self", "mutable_self" if owner["doc_id"] == "T:LibreMetaverse.AppearanceManager" and item["name"] == "UpdateLastReceivedCOFVersion": return "&mut self", "mutable_self" + if owner["doc_id"] == "T:LibreMetaverse.Imaging.Baker" and item["name"] in {"AddTexture", "Bake"}: + return "&mut self", "mutable_self" if owner["doc_id"] == "T:LibreMetaverse.PrimMesher.PrimMesh" and item["name"] in { "AddPos", "AddRot",