From 3140e65dc74520c7fb05d831dcc031803d1dbc5c Mon Sep 17 00:00:00 2001 From: Chili Palmer Date: Sat, 8 Aug 2026 23:21:40 +0200 Subject: [PATCH] Translate complete RLV test suite --- RUSTREWRITE.md | 9 +- tests/PARITY.md | 1236 +-- tests/compat/src/lib.rs | 2 + tests/compat/src/rlv_support.rs | 491 ++ tests/compat/tests/generated_parity.rs | 617 -- .../tests/rlv_attach_commands_semantics.rs | 1096 +++ .../rlv_attachment_restrictions_semantics.rs | 400 + tests/compat/tests/rlv_blacklist_semantics.rs | 335 + tests/compat/tests/rlv_camera_semantics.rs | 691 ++ tests/compat/tests/rlv_common_semantics.rs | 119 + .../rlv_detach_all_commands_semantics.rs | 115 + .../rlv_detach_all_this_commands_semantics.rs | 226 + .../tests/rlv_detach_me_commands_semantics.rs | 81 + .../rlv_detach_this_commands_semantics.rs | 229 + tests/compat/tests/rlv_exception_semantics.rs | 743 ++ .../tests/rlv_folder_exception_semantics.rs | 253 + .../tests/rlv_inventory_map_semantics.rs | 269 + .../tests/rlv_inventory_queries_semantics.rs | 782 ++ tests/compat/tests/rlv_notify_semantics.rs | 495 ++ .../compat/tests/rlv_permissions_semantics.rs | 225 + .../tests/rlv_query_basics_semantics.rs | 315 + ...recursive_folder_restrictions_semantics.rs | 549 ++ .../rlv_rem_attach_commands_semantics.rs | 424 + .../rlv_rem_outfit_commands_semantics.rs | 257 + .../rlv_restriction_manager_semantics.rs | 256 + .../tests/rlv_simple_commands_semantics.rs | 383 + .../rlv_simple_restrictions_semantics.rs | 329 + .../rlv_social_restrictions_semantics.rs | 605 ++ ...v_touch_teleport_restrictions_semantics.rs | 441 + tests/upstream-tests.json | 7396 ++++++++--------- tools/generate_surface.py | 3 +- 31 files changed, 14434 insertions(+), 4938 deletions(-) create mode 100644 tests/compat/src/rlv_support.rs create mode 100644 tests/compat/tests/rlv_attach_commands_semantics.rs create mode 100644 tests/compat/tests/rlv_attachment_restrictions_semantics.rs create mode 100644 tests/compat/tests/rlv_blacklist_semantics.rs create mode 100644 tests/compat/tests/rlv_camera_semantics.rs create mode 100644 tests/compat/tests/rlv_common_semantics.rs create mode 100644 tests/compat/tests/rlv_detach_all_commands_semantics.rs create mode 100644 tests/compat/tests/rlv_detach_all_this_commands_semantics.rs create mode 100644 tests/compat/tests/rlv_detach_me_commands_semantics.rs create mode 100644 tests/compat/tests/rlv_detach_this_commands_semantics.rs create mode 100644 tests/compat/tests/rlv_exception_semantics.rs create mode 100644 tests/compat/tests/rlv_folder_exception_semantics.rs create mode 100644 tests/compat/tests/rlv_inventory_map_semantics.rs create mode 100644 tests/compat/tests/rlv_inventory_queries_semantics.rs create mode 100644 tests/compat/tests/rlv_notify_semantics.rs create mode 100644 tests/compat/tests/rlv_permissions_semantics.rs create mode 100644 tests/compat/tests/rlv_query_basics_semantics.rs create mode 100644 tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs create mode 100644 tests/compat/tests/rlv_rem_attach_commands_semantics.rs create mode 100644 tests/compat/tests/rlv_rem_outfit_commands_semantics.rs create mode 100644 tests/compat/tests/rlv_restriction_manager_semantics.rs create mode 100644 tests/compat/tests/rlv_simple_commands_semantics.rs create mode 100644 tests/compat/tests/rlv_simple_restrictions_semantics.rs create mode 100644 tests/compat/tests/rlv_social_restrictions_semantics.rs create mode 100644 tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs diff --git a/RUSTREWRITE.md b/RUSTREWRITE.md index f12532d..305e7ba 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; 650 are translated, 19 live-grid cases and four benchmarks are - reviewed, and 616 remain pending without executable placeholder tests; + entries; all 1,266 non-live, non-benchmark cases are translated, all 19 + live-grid cases and four benchmarks are reviewed, and none remain pending; - 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,9 @@ 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 488 translated, 18 reviewed -live-grid cases, four benchmark-reviewed, and 779 pending cases. +unreviewed cases; the current ledger contains all 1,266 ordinary cases as +translated, 19 reviewed live-grid cases, four benchmark-reviewed cases, and no +pending or unreviewed 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/tests/PARITY.md b/tests/PARITY.md index a9ffb01..2cc1f87 100644 --- a/tests/PARITY.md +++ b/tests/PARITY.md @@ -5,8 +5,8 @@ Generated from LibreMetaverse `2aa70bb68513b39795da5d13c88f31b86e85a3ba`. Stable ## Status - Total: **1,289** -- Pending/unreviewed: **616** -- Translated/reviewed: **650** +- Pending/unreviewed: **0** +- Translated/reviewed: **1,266** - Ignored live/reviewed: **19** (19 upstream live candidates) - Benchmarks/reviewed: **4** (4 upstream benchmark candidates) - Drifted: **0** @@ -503,622 +503,622 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoExperienceIds_OmitsExperiencesParam::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoExperienceIds_OmitsExperiencesParam` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:87` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:227 (`query_experiences_on_parcel_no_ids_omits_parameter`)` | `translated` | `ddbaa53aa8c63262c2241588b4281c42bbb66efdecac95e297deb0fb81797455` | | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoCapability_ReturnsNullWithoutRequest::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:103` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:248 (`query_experiences_on_parcel_no_capability_returns_none_without_request`)` | `translated` | `5c6a6584fba8ddc66200367217f658d342fb2c26d6be9e49ccf3892bea420095` | | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs::QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NonSuccessStatus_ReturnsNull::test` | `QueryExperiencesOnParcelTests.QueryExperiencesOnParcelAsync_NonSuccessStatus_ReturnsNull` | `` | `LibreMetaverse.Tests/QueryExperiencesOnParcelTests.cs:120` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:266 (`query_experiences_on_parcel_non_success_returns_none`)` | `translated` | `977fe55acd5aeb5735cc718f705a2742ae0dfab12dc1211c03a64cc6d1f3bbf5` | -| `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight::test` | `AdjustHeightCommandTests.AdjustHeight` | `` | `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `fb3adb86988b10b2d3fe9223324f8a3c1ba7b8c2ea909ee6b57b38c590fed372` | -| `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight_WithDelta::test` | `AdjustHeightCommandTests.AdjustHeight_WithDelta` | `` | `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs:30` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1f37a125fd9df8585740d37c711888dfcd92460d86c19077f771d7f3fab54264` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:eee2b1b757fc196e` | `AttachAllCommandTests.AttachForce_Recursive` | `"attachall", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:e6bc1820d9335b07` | `AttachAllCommandTests.AttachForce_Recursive` | `"attachalloverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:fb63a8c8c9b75b99` | `AttachAllCommandTests.AttachForce_Recursive` | `"attachallover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:eee2b1b757fc196e` | `AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder` | `"attachall", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:61` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:e6bc1820d9335b07` | `AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder` | `"attachalloverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:62` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:fb63a8c8c9b75b99` | `AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder` | `"attachallover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:63` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:eee2b1b757fc196e` | `AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachall", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:107` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:e6bc1820d9335b07` | `AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachalloverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:108` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:fb63a8c8c9b75b99` | `AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachallover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:109` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:eee2b1b757fc196e` | `AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate` | `"attachall", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:155` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:e6bc1820d9335b07` | `AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate` | `"attachalloverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:156` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:fb63a8c8c9b75b99` | `AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate` | `"attachallover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:157` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:81` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:82` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:83` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:147` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:148` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:149` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:212` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:213` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:214` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_AttachPoint` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:279` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_AttachPoint` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:280` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_AttachPoint` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:281` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:352` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:353` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d` | -| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:354` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:5e4fd9176ccab2f0` | `AttachCommandTests.AttachForce` | `"attach", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:1112c98c6420210d` | `AttachCommandTests.AttachForce` | `"attachoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:0dd9d8fadf48e313` | `AttachCommandTests.AttachForce` | `"attachover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:5e4fd9176ccab2f0` | `AttachCommandTests.AttachForce_WithClothing` | `"attach", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:57` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:1112c98c6420210d` | `AttachCommandTests.AttachForce_WithClothing` | `"attachoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:58` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:0dd9d8fadf48e313` | `AttachCommandTests.AttachForce_WithClothing` | `"attachover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:59` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:2a7ad8f0a57b741d` | `AttachCommandTests.AttachForce_AlreadyAttached` | `"attach"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:101` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:da775b6e5cf13e70` | `AttachCommandTests.AttachForce_AlreadyAttached` | `"attachoverorreplace"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:102` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:e59967ec103647cc` | `AttachCommandTests.AttachForce_AlreadyAttached` | `"attachover"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:103` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:5e4fd9176ccab2f0` | `AttachCommandTests.AttachForce_PositionFromFolderName` | `"attach", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:146` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:1112c98c6420210d` | `AttachCommandTests.AttachForce_PositionFromFolderName` | `"attachoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:147` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:0dd9d8fadf48e313` | `AttachCommandTests.AttachForce_PositionFromFolderName` | `"attachover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:148` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:2a7ad8f0a57b741d` | `AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace` | `"attach"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:194` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:da775b6e5cf13e70` | `AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachoverorreplace"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:195` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:e59967ec103647cc` | `AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachover"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:196` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:5e4fd9176ccab2f0` | `AttachCommandTests.AttachForce_AttachPrivateParentFolder` | `"attach", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:239` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:1112c98c6420210d` | `AttachCommandTests.AttachForce_AttachPrivateParentFolder` | `"attachoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:240` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c` | -| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:0dd9d8fadf48e313` | `AttachCommandTests.AttachForce_AttachPrivateParentFolder` | `"attachover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:241` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_Default` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_Default` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_Default` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_ById` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:79` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_ById` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:80` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_ById` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:81` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:a2681d046a6f6fef` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachthis"` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:144` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:34172d9d6ebbcf53` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachthisoverorreplace"` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:145` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:30379630ffa50e68` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachthisover"` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:146` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:210` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:211` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:212` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_FromHiddenSubfolder` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:278` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_FromHiddenSubfolder` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:279` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_FromHiddenSubfolder` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:280` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_AttachPoint` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:344` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_AttachPoint` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:345` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_AttachPoint` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:346` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_RlvWearableType` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:414` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_RlvWearableType` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:415` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3` | -| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_RlvWearableType` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:416` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3` | -| `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear::test` | `ClearCommandTests.Clear` | `` | `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `865d022233930e9582fec5b0e99063f15506a339c430755aba83706b594182ad` | -| `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_CaseInSensitive::test` | `ClearCommandTests.Clear_CaseInSensitive` | `` | `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs:25` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b70296f9d2b6c9eb8c6dd6e560056ab8320d746a991fafec858812fc2ebb3141` | -| `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_SenderBased::test` | `ClearCommandTests.Clear_SenderBased` | `` | `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs:39` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1ae70737411e18626227c0b15181572c1c623eefce0a8fa1a874b2229c44c38e` | -| `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_Filtered::test` | `ClearCommandTests.Clear_Filtered` | `` | `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs:57` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e0f0b5a42c3baf92fef6a8d4fc2c60dbd6963db6f844fed55b06968f0c9e543f` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive::test` | `DetachAllCommandTests.DetachAllForce_Recursive` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `45405dbca6c2b8bb9f439736d53c2ff60056252f4cdf6296bedcc14d2be9248e` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_EnforceRestrictions::test` | `DetachAllCommandTests.DetachAllForce_Recursive_EnforceRestrictions` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:85` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6186f5923009fb984daef726e8df44aff7cb65f74c2e381dd8cc9968f5534e43` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_PrivateTargetDir::test` | `DetachAllCommandTests.DetachAllForce_Recursive_PrivateTargetDir` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:154` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `300a323967b6258d1202190bbd3de7b91699231f7a5afa86204ba627cb61215f` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_PrivateSubFolders::test` | `DetachAllCommandTests.DetachAllForce_Recursive_PrivateSubFolders` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:226` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `e688b64d13f0a07f4bfeae0715fbfbf98c1d1fa64b0aefbd0e4e3d3d4dd98eee` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders::test` | `DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:298` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `22cf1a159861c98c8a0f14ac63bafcbef21466c2ac01e615fe9ca4630d16f956` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders_LinkException::test` | `DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:370` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `cbe38368a6d4c59d72291195688d0c70898be5c3cceb02f09c5d386c3668fb07` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripItemName::test` | `DetachAllCommandTests.DetachAllForce_Recursive_NostripItemName` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:450` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `ea0fab47cb1829338948f605919fcf1dca4f88d7965cdca4c7f457e399e4fbfc` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Default::test` | `DetachAllThisCommandTests.DetachAllThisForce_Default` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `8fe4eacf8cc5841e638d69540e2ab080efc3e64534346ece854429d0476f8a84` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Nostrip::test` | `DetachAllThisCommandTests.DetachAllThisForce_Nostrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:87` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `754bd01f2f0b77c05ee5d1548f76337da93d980a48ad0922d80f34707c4fe68b` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Nostrip_LinkException::test` | `DetachAllThisCommandTests.DetachAllThisForce_Nostrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:159` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `0cce15f7cfda160733c305b0867be31875e1814b38e2e980525d960e0214ad51` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById::test` | `DetachAllThisCommandTests.DetachAllThisForce_ById` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:237` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `2f657ffed317d4d7f97f6111942ea8214996872da6294f7c66d07890647f7f63` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip::test` | `DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:309` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `48ab7aec02efd652478ca3110dd39011fd9b79a1e0a1336f53e9f77b2f56e635` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip_LinkException::test` | `DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:382` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `5d882f00bfe73cecfc3e96c26ff18a20c00481619996b25ed2ce851eff9a86ce` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint::test` | `DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:461` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `30e6806d5c484bf2a2f9a3b1fcdb5e88272874b0e755462c3b0bfa97326d180c` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip::test` | `DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:534` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `657125be7aec668f72e744cc87cae38f022c8ccf9e8980c8ef4bea7e0557fdd1` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip_LinkException::test` | `DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:608` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `fe019191a9a3df9a43fd500db775ba5f874f4b767096365cba390480b2b2189f` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType::test` | `DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:688` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `ccf302d870f323790af63873fcbb172f084c4e7400a728e480378706b5fb9947` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip::test` | `DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:758` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1947e7c9cfe8bb931ee7ad50c6f505515feeb9d30b236702a2d68fb4734a30f0` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip_LinkException::test` | `DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:829` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `50ec101ab557e78d947ac7f9878acd4df4957482f358a7ce02371df8754add94` | -| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_PrivateFolder::test` | `DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_PrivateFolder` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:906` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `2ba745b093f0348d8754f74073c6a6a0f18383b5ce4a73721b39b01f0306a994` | -| `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce::test` | `DetachMeCommandTests.DetachMeForce` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `fde065233689ec75c12e9607acf06c5859a91efea58e143ecc508ebec784a567` | -| `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_WithNoStripItemName_SpecialException::test` | `DetachMeCommandTests.DetachMeForce_WithNoStripItemName_SpecialException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs:79` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `ee511230131312be9b788033aac8766ea3cb3c1f8d7c5b9b26a4bd6a83cd695c` | -| `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_WithLockedFolderRestriction::test` | `DetachMeCommandTests.DetachMeForce_WithLockedFolderRestriction` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs:146` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `05fefae0563306af0c491006f18915ff1b250b7972c82c160f20f06e07335887` | -| `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_MultipleLinksSameItem::test` | `DetachMeCommandTests.DetachMeForce_MultipleLinksSameItem` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs:224` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1ae8a318762625819371fb109fd673e0d31a2c0354add1e65802eb54cb71e303` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_Default::test` | `DetachThisCommandTests.DetachThisForce_Default` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `ae8c0fd737f869ef3e2dbd97ae28974b35c6bbc5327151c0074d531efdaaf54e` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStrip::test` | `DetachThisCommandTests.DetachThisForce_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:87` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3aa17222f7539814f8329e07de548cca4bb702f4b0409e793ea551327b0c57d0` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStripFolder::test` | `DetachThisCommandTests.DetachThisForce_NoStripFolder` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:159` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `16b74c3bf8312ccb885e61f933ec9d292988d2e1fad05e0188006df5630681f8` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStripFolder_LinkException::test` | `DetachThisCommandTests.DetachThisForce_NoStripFolder_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:231` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `b86b22a0ab30d0ded0cd6fbc7d34fae77e521861f5672b44a25a77325e594ab4` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById::test` | `DetachThisCommandTests.DetachThisForce_ById` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:305` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3c4a211e5fefb44b42f50f6e6e58f8f852c8cf2d732bb6c3f737c3d6a592fa22` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripItemName::test` | `DetachThisCommandTests.DetachThisForce_ById_NostripItemName` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:376` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `f32926ca6f4328afdd3ddeb9f7bec8ff2ee01e9563555921ac8c663d20005551` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripFolderName::test` | `DetachThisCommandTests.DetachThisForce_ById_NostripFolderName` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:447` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `bec3216bf016c2543a3410b069abd786167e04a7527253887f158127644656a8` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripFolderName_LinkException::test` | `DetachThisCommandTests.DetachThisForce_ById_NostripFolderName_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:518` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1b5eb3a0bdef8ea65b800533ab3153dc6b3ea21d2f4f27e4820d0a0df48891a2` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint::test` | `DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:591` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7e8f3a4d8b2cbdb5cc81eea598da6ef6395834b1cb7a629dc8d7ee2bfd80fab5` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip::test` | `DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:664` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `f6ff482bdb8d28414e01952201e37e49316b3e2345b0ff85dd4cb059193d1816` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip_LinkException::test` | `DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:738` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `289f8cc48f0e6a412d58258876e4aca08d8116d549642a0011bbdaf9b2223e83` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType::test` | `DetachThisCommandTests.DetachThisForce_ByRlvWearableType` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:813` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `51607294f12279974c2b44b47ba2eadca9846180a39bcde6a28c020dc4466254` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip::test` | `DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:883` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `30dec183993b2a644c2812ffc1c863e1714df134942f7827df818d9200e47c38` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip_LinkException::test` | `DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:955` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `62f59cf66f21dcac15cf3166dcec2183181c0b434e9eacba796eb7025c4f1ab3` | -| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_PrivateFolder::test` | `DetachThisCommandTests.DetachThisForce_ByRlvWearableType_PrivateFolder` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:1028` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `dd40588598bd081189e7c4f284af3851a140155e2ede0ae2121dd59a156dc988` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach::case:bb1d34dc76ade75f` | `RemAttachCommandTests.RemAttach` | `"@detach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `16420d56c60229e8d8b6a2a0d63b1f500112c23cef451d69bb0ed97fe9b63bae` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach::case:c9faa5be8fef55e8` | `RemAttachCommandTests.RemAttach` | `"@remattach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `16420d56c60229e8d8b6a2a0d63b1f500112c23cef451d69bb0ed97fe9b63bae` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip::case:bb1d34dc76ade75f` | `RemAttachCommandTests.RemAttach_NoStrip` | `"@detach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:83` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `5b3f1cbe99833e16c6f10ef568618627445babbcdfc9be555b48257bfdffeea7` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip::case:c9faa5be8fef55e8` | `RemAttachCommandTests.RemAttach_NoStrip` | `"@remattach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:84` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `5b3f1cbe99833e16c6f10ef568618627445babbcdfc9be555b48257bfdffeea7` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip_LinkException::case:bb1d34dc76ade75f` | `RemAttachCommandTests.RemAttach_NoStrip_LinkException` | `"@detach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:154` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `96a4b53d9e55dcd656c25af6619a3d0d67f5bc2517a759d722559a4ffb225472` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip_LinkException::case:c9faa5be8fef55e8` | `RemAttachCommandTests.RemAttach_NoStrip_LinkException` | `"@remattach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:155` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `96a4b53d9e55dcd656c25af6619a3d0d67f5bc2517a759d722559a4ffb225472` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ExternalItems::case:bb1d34dc76ade75f` | `RemAttachCommandTests.RemAttach_ExternalItems` | `"@detach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:227` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7545f36532fcb7974a9e009e567b2342754a11da95eb3f17ee04089dcec42664` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ExternalItems::case:c9faa5be8fef55e8` | `RemAttachCommandTests.RemAttach_ExternalItems` | `"@remattach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:228` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7545f36532fcb7974a9e009e567b2342754a11da95eb3f17ee04089dcec42664` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder::case:97eb7af1f9c3c62c` | `RemAttachCommandTests.RemAttach_ByFolder` | `"@detach:Clothing/Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:320` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `583d3f596c80411d950038e3ec64032bee75150b8c819741fe89a4ca40eb2553` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder::case:1a04fd408fddaac0` | `RemAttachCommandTests.RemAttach_ByFolder` | `"@remattach:Clothing/Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:321` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `583d3f596c80411d950038e3ec64032bee75150b8c819741fe89a4ca40eb2553` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip::case:2117c838922f5ba4` | `RemAttachCommandTests.RemAttach_ByFolder_NoStrip` | `"@detach:Clothing/nostrip Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:387` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3a21b8ae807126d6f93ac95e16c47330b4146ace9781e9c9665ad493ee8c48b1` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip::case:11d4ca4fd3e35db1` | `RemAttachCommandTests.RemAttach_ByFolder_NoStrip` | `"@remattach:Clothing/nostrip Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:388` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3a21b8ae807126d6f93ac95e16c47330b4146ace9781e9c9665ad493ee8c48b1` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException::case:2117c838922f5ba4` | `RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException` | `"@detach:Clothing/nostrip Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:455` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7c00e7dc70b3078d75009cf78a9fece889eee85f237c1a3c79c6249ae5e5327f` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException::case:11d4ca4fd3e35db1` | `RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException` | `"@remattach:Clothing/nostrip Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:456` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7c00e7dc70b3078d75009cf78a9fece889eee85f237c1a3c79c6249ae5e5327f` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint::case:644d3f75f3570ac3` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint` | `"@detach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:525` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `e09627228c1cf8311e56ac6660389bc1b268db8fd4f883dc40aaf3d2ec00916b` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint::case:53be219b37533fa6` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint` | `"@remattach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:526` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `e09627228c1cf8311e56ac6660389bc1b268db8fd4f883dc40aaf3d2ec00916b` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip::case:644d3f75f3570ac3` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip` | `"@detach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:607` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `ffaaad92700d5d606154abdddd05c24c7584c5c3e55290df61e2b2a71d8148d7` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip::case:53be219b37533fa6` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip` | `"@remattach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:608` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `ffaaad92700d5d606154abdddd05c24c7584c5c3e55290df61e2b2a71d8148d7` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException::case:644d3f75f3570ac3` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException` | `"@detach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:705` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `af1b1caf070a186bc2b02b598919b52d47c289d708fde3713e48ce1a40d7c025` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException::case:53be219b37533fa6` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException` | `"@remattach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:706` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `af1b1caf070a186bc2b02b598919b52d47c289d708fde3713e48ce1a40d7c025` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_None::case:9a124e69f33b279f` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_None` | `"@detach:skull=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:805` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `afed603254ad6048a46e157254f16253063e6c76c9ea16f46a69d8455bc0e6fb` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_None::case:800d7d8ba57071b1` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_None` | `"@remattach:skull=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:806` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `afed603254ad6048a46e157254f16253063e6c76c9ea16f46a69d8455bc0e6fb` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:871` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `4b1a8acea7f1bb100bf11e9329672c64b53aba4974558f1c693460eef7f56c2d` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:872` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `4b1a8acea7f1bb100bf11e9329672c64b53aba4974558f1c693460eef7f56c2d` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:938` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6857733912b45ef9153b0f58cd74ae6c9dc0034fa10933d153cae88a2c7d9423` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:939` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6857733912b45ef9153b0f58cd74ae6c9dc0034fa10933d153cae88a2c7d9423` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1005` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1a3189f931e086ab3d2d3e99c53dba2e9d39dce75a52fd02400c6892aef5d0c4` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1006` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1a3189f931e086ab3d2d3e99c53dba2e9d39dce75a52fd02400c6892aef5d0c4` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1073` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `bd7bc72a107b4a21b00977e13b086da192bef2c2e6f0fdb73b8e332016c6ef23` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1074` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `bd7bc72a107b4a21b00977e13b086da192bef2c2e6f0fdb73b8e332016c6ef23` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1143` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `2ecf40d1d338117ddac4cfd6c7a030e96b7adf72cd90e0d8327787317e1f38d7` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1144` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `2ecf40d1d338117ddac4cfd6c7a030e96b7adf72cd90e0d8327787317e1f38d7` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_External::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID_External` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1211` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `e0bdc682df3416bdc01855e6e63974e64c21951aac629807352220baf572dded` | -| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_External::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID_External` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1212` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `e0bdc682df3416bdc01855e6e63974e64c21951aac629807352220baf572dded` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit::test` | `RemOutfitCommandTests.RemOutfit` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `60bd0e62bbd4613c4d2d1a65705644dc25fd7327408adfc0bb7e95c45d79cdcb` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_PrivateFolders::test` | `RemOutfitCommandTests.RemOutfit_PrivateFolders` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:83` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `d79ac3806f50915390edd0a24b756ef398c1334017f69d16f4cb887dcdd41fb1` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems::test` | `RemOutfitCommandTests.RemOutfit_ExternalItems` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:153` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `0265a9fee1070cbcc458bfcb05fe267991cbdb5480500c1b32aace1eb4935217` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip::test` | `RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:235` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `b93d39d919fb70b02ccdb724969f7b983c726c707bca96e1b1ddc6ee248a734f` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip_LinkException::test` | `RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:330` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `5ecc44228573645e0a0c78d100dab54b793c6ce8dc50a02d79a919fe6d7c1678` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_ByType::test` | `RemOutfitCommandTests.RemOutfit_ExternalItems_ByType` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:428` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `8ba106f071f8768af1d6213c04f67dd0aec846ae47552686eba86c489bdb0292` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder::test` | `RemOutfitCommandTests.RemOutfit_Folder` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:508` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `45f9e7a9d0ef99ec7d58b59f1c1db7b6065994939717842bb02486b470b357b5` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_PrivateFolder::test` | `RemOutfitCommandTests.RemOutfit_Folder_PrivateFolder` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:573` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `68f3050a1b667304ff2b252690cc7d1994964dbd2c7633d54e5c6654714c0aed` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStrip::test` | `RemOutfitCommandTests.RemOutfit_Folder_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:640` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `d56b83a72d6d3529af0390674550ce40733c14de6210cf71e277f0e195d1e330` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName::test` | `RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:706` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `a28f5517a9d05085627d5acaf33441d598912301962f6e99aaff49ef5114af53` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName_LinkException::test` | `RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:772` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `80efc201f976365e68d32ae1b30db0f10a17cbc65aedc82895ffa679700008da` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific::test` | `RemOutfitCommandTests.RemOutfit_Specific` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:841` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7235143679739442ec942d294a8a68f69b7fb5678ed4e3ca03be35c74e9c71a9` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_PrivateFolder::test` | `RemOutfitCommandTests.RemOutfit_Specific_PrivateFolder` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:907` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3feea26f000dc7eb86b1413f1a5bdd5f109c5f9f969918cd1ce2e7f926f26c12` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_NoStrip::test` | `RemOutfitCommandTests.RemOutfit_Specific_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:975` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6e4b8bc53933a889df1cf553ca7e0601e5061bb87013a4075c2ff357cc9d987f` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_NoStrip_LinkException::test` | `RemOutfitCommandTests.RemOutfit_Specific_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:1042` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `72b1409f70531d859f15a012cb1fb03d795d2065c5d03b7a263d352ca4b80e98` | -| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_BodyPart_Specific::test` | `RemOutfitCommandTests.RemOutfit_BodyPart_Specific` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:1112` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `13804c96395db86821371dc8f2cacd2cb182338f8ea88034afcc5da19e3f0691` | -| `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Default::case:fa77559e30768d15` | `SetDebugCommandTests.SetDebug_Default` | `"RenderResolutionDivisor", "RenderResolutionDivisor Success"` | `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `abcee425068df326a3258ab4d881218e6eee52523fa5d306b191308e85dfff3d` | -| `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Default::case:55694f25ed879d95` | `SetDebugCommandTests.SetDebug_Default` | `"Unknown Setting", "Unknown Setting Success"` | `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `abcee425068df326a3258ab4d881218e6eee52523fa5d306b191308e85dfff3d` | -| `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Invalid::test` | `SetDebugCommandTests.SetDebug_Invalid` | `` | `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs:32` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `2e0595319ba8e2c9a8280c5b034363ad7998eb740cb6b7fff3d75bb0167c6464` | -| `LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs::SetEnvCommandTests.SetEnv_Default::case:f656b648d00a6d91` | `SetEnvCommandTests.SetEnv_Default` | `"Daytime", "Daytime Success"` | `LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `836c1332ca9c4f645e5c9dca8b4a2b967d55fd8148901b05ce5d741e665ab7e1` | -| `LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs::SetEnvCommandTests.SetEnv_Default::case:55694f25ed879d95` | `SetEnvCommandTests.SetEnv_Default` | `"Unknown Setting", "Unknown Setting Success"` | `LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `836c1332ca9c4f645e5c9dca8b4a2b967d55fd8148901b05ce5d741e665ab7e1` | -| `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByName::test` | `SetGroupCommandTests.SetGroup_ByName` | `` | `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `fae27e58cd981f5471f4c2b8356bb07aa5e76a57aaf0882d0dbfb86360e077e3` | -| `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByNameAndRole::test` | `SetGroupCommandTests.SetGroup_ByNameAndRole` | `` | `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs:32` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `408442b86bb8259eb9bbb4cf8a5d3b0830c7ba9357fa04cb6e851511a7a24df1` | -| `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ById::test` | `SetGroupCommandTests.SetGroup_ById` | `` | `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs:50` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `27f13c52c8c5e2e4298fee3f4322f9906d5f82e900aa5f46c9a8ffac3a6dfae7` | -| `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByIdAndRole::test` | `SetGroupCommandTests.SetGroup_ByIdAndRole` | `` | `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs:70` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e18fd0c318ebd4f9a189418449568b3a34b8f7d3a0097f100a7253c4d5a31bde` | -| `LibreMetaverse.Tests/RLV/Commands/SetRotCommandTests.cs::SetRotCommandTests.SetRot::test` | `SetRotCommandTests.SetRot` | `` | `LibreMetaverse.Tests/RLV/Commands/SetRotCommandTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c3302d63cdda9d72b85dad2749e2684cc26d51c72ddc6ace8275911f8ba67ef4` | -| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_Default::test` | `SitCommandTests.ForceSit_Default` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:28` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `24e45ba898cb8ed0919369d07a39d0b21982fa4fc4c41eb4835ba765c05e2469` | -| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedUnsit_WhileStanding::test` | `SitCommandTests.ForceSit_RestrictedUnsit_WhileStanding` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:50` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8d179277f6a7f98ead813de7bd02ab5146b46ce240d1d5e4a69037885e5f626a` | -| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedUnsit_WhileSeated::test` | `SitCommandTests.ForceSit_RestrictedUnsit_WhileSeated` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:74` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1f2debd6e644c86698577e1c04db96d6aac43267ceae8de9f28435b62ff92817` | -| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedSit::test` | `SitCommandTests.ForceSit_RestrictedSit` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:95` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8ac0964fc07bb5e860123ce8de1102c2254ffde28f246896d81f7524c3c87021` | -| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedStandTp::test` | `SitCommandTests.ForceSit_RestrictedStandTp` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:115` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `bc0c259477ef5f1e5a76b1081f604ba421c82340f738e37fd52b91a421037cf6` | -| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_InvalidObject::test` | `SitCommandTests.ForceSit_InvalidObject` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:135` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `787bfe6fefe3895b4bcb5da027ffeac70bf67c3c7a295dbbf7e1526156290040` | -| `LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs::SitGroundCommandTests.ForceSitGround::test` | `SitGroundCommandTests.ForceSitGround` | `` | `LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `2319cd49aaae5ac824bc5ffd4f33a5e4f3f684ebec1dc1f1732071eb44ee1cb8` | -| `LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs::SitGroundCommandTests.ForceSitGround_RestrictedSit::test` | `SitGroundCommandTests.ForceSitGround_RestrictedSit` | `` | `LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5ac661e9f7fa93cf6ca76aa69f6d84ac61ebd22f26620203f084777010b6de4d` | -| `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_Default::test` | `TpToCommandTests.TpTo_Default` | `` | `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1613e723da60f84dfb54a7345b96566a055a9b7a017e66b0929d6f37c04b62a3` | -| `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_WithRegion::test` | `TpToCommandTests.TpTo_WithRegion` | `` | `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs:31` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `50c5f63c5cb0da221846fd7c0c7f2d471bef2aa2ab203a9b5bdb4eceeb3d97bf` | -| `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_WithRegionAndLookAt::test` | `TpToCommandTests.TpTo_WithRegionAndLookAt` | `` | `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs:49` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c9030189de7acdad0db5c8f83e49ee0433ec0588a35436ab39cdcf40a4fd4d36` | -| `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_RestrictedUnsit::test` | `TpToCommandTests.TpTo_RestrictedUnsit` | `` | `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs:67` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4dc00a1048593f7468271a4262cf311a3516ea4a53e288eeca69d1297dafc9f2` | -| `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_RestrictedTpLoc::test` | `TpToCommandTests.TpTo_RestrictedTpLoc` | `` | `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs:83` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `3e1ecc1d04973a496edf9d156e52ba76a93ff431181a3ece93c0e4f82884895a` | -| `LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs::UnsitCommandTests.ForceUnSit::test` | `UnsitCommandTests.ForceUnSit` | `` | `LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `2f91e1112e1c4e97b79a4dc7bcd4d4a85f13125bd636f81147ce5b396366ebed` | -| `LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs::UnsitCommandTests.ForceUnSit_RestrictedUnsit::test` | `UnsitCommandTests.ForceUnSit_RestrictedUnsit` | `` | `LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `2ecf210dc83b06018cdcf44cb44bdf43f1040133e7523542a2e1126d6d98004f` | -| `LibreMetaverse.Tests/RLV/Exceptions/AcceptPermissionExceptionTests.cs::AcceptPermissionExceptionTests.AcceptPermission::test` | `AcceptPermissionExceptionTests.AcceptPermission` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AcceptPermissionExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a5ffc51718e89fb872c6df8b8667f6d231618d47a2ffc71d596e8e10e15cb02e` | -| `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs::AcceptTpExceptionTests.CanAutoAcceptTp_User::test` | `AcceptTpExceptionTests.CanAutoAcceptTp_User` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e988496e81a717eae1a96c5501e748a441fa64f637aaa47a6ae7a8d571c30f6e` | -| `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs::AcceptTpExceptionTests.CanAutoAcceptTp_All::test` | `AcceptTpExceptionTests.CanAutoAcceptTp_All` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs:24` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `428ec184c9d09f6ec57ac3429180f327ed1b79e9d9dea9815df3bb6f0f6244fd` | -| `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs::AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_User::test` | `AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_User` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `3a5af1a55e74b5e75a04abc11826ded17c327ac2ed99ab2a423674fbb0e61f31` | -| `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs::AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_All::test` | `AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_All` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs:24` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8e2cf7c4d17dcec4d7855fc430092699416108966fb5d97c170c13f0bcd04cfe` | -| `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll::test` | `AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `1daa414beb2a767518f335f6ae59e711395375ed9d7912fbbc139fa0998dfdb1` | -| `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive::test` | `AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs:95` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6e0c78d6ed78bedca9a8c6a9a83fd9f90f7123da433eb4c560e6f5c0b6fe6d94` | -| `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive_AddRem::test` | `AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive_AddRem` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs:194` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `9423ed205501604501d31909414ecf6ef99a0d56d4efae100f5576b31b71a858` | -| `LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs::AttachThisExceptExceptionTests.AttachThisExcept_Default::test` | `AttachThisExceptExceptionTests.AttachThisExcept_Default` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `b8e6e55d8f2654429c9826e38ffc8522eec44ab2521891b68616db61ac662db0` | -| `LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs::AttachThisExceptExceptionTests.AttachThisExcept_AddRem::test` | `AttachThisExceptExceptionTests.AttachThisExcept_AddRem` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs:114` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `05bc7eab5dd02a0a3e60f85eb51b374623aaa29c9ce2b522748a3478b8ee44ea` | -| `LibreMetaverse.Tests/RLV/Exceptions/DenyPermissionExceptionTests.cs::DenyPermissionExceptionTests.DenyPermission::test` | `DenyPermissionExceptionTests.DenyPermission` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DenyPermissionExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c2284b63e7b4a93f8613a3afe34466d14e1c6ed8528656d54ae64ca6d081cdd5` | -| `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll::test` | `DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `75e7ab22f6d9d058580fd83741d65f7e5babb7ad54805eaeb16bec8cd65370ed` | -| `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive::test` | `DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs:73` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3fb8bb13d6a917d9be18265d90767488cde66746badc6584025bbbaf84f020ad` | -| `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive_AddRem::test` | `DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive_AddRem` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs:172` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `fb5fd8a4eda181d22d1756ec0cae700c4b90895a74dc79c24c67c1705cfd37c8` | -| `LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs::DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except::test` | `DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3222d97d73d8b54bd11212f8cd3de26279040321f0bc330e061ff93880053f3e` | -| `LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs::DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except_AddRem::test` | `DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except_AddRem` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs:95` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `d25b2c533b9b51428c0c2414d687c466a3c80c4a573dd36763504de19e8dc6f8` | -| `LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs::EditExceptionTests.CanEdit_Exception::test` | `EditExceptionTests.CanEdit_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e435b03faef04dfe06d0cbec76e94cbf30e61ad7bc08502728f9239cf47292f8` | -| `LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs::EditExceptionTests.CanEdit_Specific::test` | `EditExceptionTests.CanEdit_Specific` | `` | `LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs:33` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `db097167497bc650c6729f0687924adedda7097b4089107fc5ea03716c1cb4e5` | -| `LibreMetaverse.Tests/RLV/Exceptions/EmoteExceptionTests.cs::EmoteExceptionTests.CanEmote::test` | `EmoteExceptionTests.CanEmote` | `` | `LibreMetaverse.Tests/RLV/Exceptions/EmoteExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a643401539d7258ae04ddebaf9c82876f59c4433b11ee61bfe8b416058c9fe38` | -| `LibreMetaverse.Tests/RLV/Exceptions/RecvChatExceptionTests.cs::RecvChatExceptionTests.CanRecvChat_Except::test` | `RecvChatExceptionTests.CanRecvChat_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RecvChatExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b34881785cf2df3d8f4e5ba971adcf2144d8de4db00acfbe136c79457742ec33` | -| `LibreMetaverse.Tests/RLV/Exceptions/RecvEmoteExceptionTests.cs::RecvEmoteExceptionTests.CanRecvChat_RecvEmote_Except::test` | `RecvEmoteExceptionTests.CanRecvChat_RecvEmote_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RecvEmoteExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d4647d71c02e05405ae2acf7b58522aae559b1c90a4f7a1521c9a9a383220f8a` | -| `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception::test` | `RecvImExceptionTests.CanReceiveIM_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `2e1afba517b29e8e7f2e0605340eb6e87443282857400eba259f0ebdf4874e23` | -| `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception_SingleGroup::test` | `RecvImExceptionTests.CanReceiveIM_Exception_SingleGroup` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs:22` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9ec57daeed225caf960d00f0c83378d1836e86b1896063703ee1c3a38c7b582a` | -| `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception_AllGroups::test` | `RecvImExceptionTests.CanReceiveIM_Exception_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs:33` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `633b8c680b583a6f8d80335c26f4ebcec77f9d8d5231e49bea562dcb66f00267` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat::test` | `RedirChatExceptionTests.IsRedirChat` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1eb25c5579789db22ee242c4b52c65989bd26dce6d7577021c329c6c49be9414` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_Removed::test` | `RedirChatExceptionTests.IsRedirChat_Removed` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:26` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `62e03ff1db1e790d8bc1e38ac1495fc12723ba2eb5c9d6035d73c9fdb91a44ad` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_MultipleChannels::test` | `RedirChatExceptionTests.IsRedirChat_MultipleChannels` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:35` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c7d0c428d121ab80eee9b6b5855cbe50e7a4cd74e81c369da09df04d55c7554f` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChat::test` | `RedirChatExceptionTests.IsRedirChat_RedirectChat` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:52` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c4a083e495a578c1ed0855c43680d5b05144bf627f06df48c82e089e6f0699bf` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChatMultiple::test` | `RedirChatExceptionTests.IsRedirChat_RedirectChatMultiple` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:69` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5ff8665440d8d02e0aa900121e591034d51e2b48ca62fdec2fbc9135f8c83428` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChatEmote::test` | `RedirChatExceptionTests.IsRedirChat_RedirectChatEmote` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:89` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5d88009e3e8d365c52315a9b189f6cffdc9d04fdb70aa26bcc03d6bc16227189` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote::test` | `RedirEmoteExceptionTests.IsRedirEmote` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `02170a2b3eb0cbb88921517c9742d2fc0baaea7a621e5a3c3264a7a17d5efb61` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_Removed::test` | `RedirEmoteExceptionTests.IsRedirEmote_Removed` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:25` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6ee89cedfd1e2d79d2447f2f48d1e2d1ac96295485b7509fe09f98e3bfcd9766` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_MultipleChannels::test` | `RedirEmoteExceptionTests.IsRedirEmote_MultipleChannels` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:34` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1a95f4cc5db96cf033fed0c1a4e573b1cb1ac17ef72b76e0ce115c051f10528a` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmote::test` | `RedirEmoteExceptionTests.IsRedirEmote_RedirectEmote` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:51` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `525297be5b5ff466fc9a61f2bc87af38bd637cbef8e0c794e897e021d0cca464` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteMultiple::test` | `RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteMultiple` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:68` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `fd6af49a90e111ed6424c85565242e1205e13604b529909f7be0260e93f0b1c6` | -| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteChat::test` | `RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteChat` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:88` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e8b78a6a34e3d3acdfc6d454b46a939d341260362ae5327dc4b70164d41431aa` | -| `LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptExceptionTests.cs::SendChannelExceptExceptionTests.CanSendChannelExcept::test` | `SendChannelExceptExceptionTests.CanSendChannelExcept` | `` | `LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `08c309d08681fe067f67315a72014d0a05c87d6e14632fa04f6f2fb617d61be3` | -| `LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptionTests.cs::SendChannelExceptionTests.CanSendChannel_Exception::test` | `SendChannelExceptionTests.CanSendChannel_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `49bcacb6fb31d596ce9afc73099f8aaf645156ee222262174e1d7fed08393cf9` | -| `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception::test` | `SendImExceptionTests.CanSendIM_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8124011921e8d4caf6840e960bd9f98d21df9db476e1726e0d54550cb8527ceb` | -| `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception_SingleGroup::test` | `SendImExceptionTests.CanSendIM_Exception_SingleGroup` | `` | `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs:21` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b55a4bdba1d33652f3809c3478047afc65757fbe1dec6c5292e17b71a04b206c` | -| `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception_AllGroups::test` | `SendImExceptionTests.CanSendIM_Exception_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs:32` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4190ff51848f63dce5682317db79da23fa19ad9e53004534382f3eb6e8544788` | -| `LibreMetaverse.Tests/RLV/Exceptions/ShareExceptionTests.cs::ShareExceptionTests.CanShare_Except::test` | `ShareExceptionTests.CanShare_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/ShareExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `37297059a814bfde94c466e263a429258cce11ae258afd7953d26f65f9178f1d` | -| `LibreMetaverse.Tests/RLV/Exceptions/ShowNameTagsExceptionTests.cs::ShowNameTagsExceptionTests.CanShowNameTags_Except::test` | `ShowNameTagsExceptionTests.CanShowNameTags_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/ShowNameTagsExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5d1fe4ec1fa289623d473ffae1682ed725735cbdf48bdf5b7fed086237e32a1a` | -| `LibreMetaverse.Tests/RLV/Exceptions/ShowNamesExceptionTests.cs::ShowNamesExceptionTests.CanShowNames_Except::test` | `ShowNamesExceptionTests.CanShowNames_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/ShowNamesExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b11578e758631037440dd56a683a3ffc25b576eaa25e7388c950d8d647eb2a75` | -| `LibreMetaverse.Tests/RLV/Exceptions/StartImExceptionTests.cs::StartImExceptionTests.CanStartIM_Exception::test` | `StartImExceptionTests.CanStartIM_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/StartImExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e0001ffc665f0f39833cf2376ea1fcb7559bdb87a48ea60bb348e14b078880e4` | -| `LibreMetaverse.Tests/RLV/Exceptions/TouchMeExceptionTests.cs::TouchMeExceptionTests.TouchMe_default::test` | `TouchMeExceptionTests.TouchMe_default` | `` | `LibreMetaverse.Tests/RLV/Exceptions/TouchMeExceptionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a0f3ffd3c70263738c074e258d9271e0a825f163c40d9c7ee8d20865873eb304` | -| `LibreMetaverse.Tests/RLV/Exceptions/TouchThisExceptionTests.cs::TouchThisExceptionTests.TouchThis_default::test` | `TouchThisExceptionTests.TouchThis_default` | `` | `LibreMetaverse.Tests/RLV/Exceptions/TouchThisExceptionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e7e6c9e14badb0159f81adc96e17fcf3ebe2cf5351ec6465f03c430de06d85d2` | -| `LibreMetaverse.Tests/RLV/Exceptions/TouchWorldExceptionTests.cs::TouchWorldExceptionTests.TouchWorld_Exception::test` | `TouchWorldExceptionTests.TouchWorld_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/TouchWorldExceptionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ffef2f112b5718bab7b01fc1b624e588c181dadc5c50fd85de4404a501ee6f37` | -| `LibreMetaverse.Tests/RLV/Exceptions/TpLureExceptionTests.cs::TpLureExceptionTests.CanTpLure_Except::test` | `TpLureExceptionTests.CanTpLure_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/TpLureExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a32f4cdda5b48ffcaced683b2e77fc129c1c321951aa2e16623eea022f2aa0b9` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_Normal::test` | `InventoryMapTests.TryGetFolderFromPath_Normal` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `97787ac6b51198e317ed391e91125724ce1b580924c40500f81186812b45f625` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_EmptyPath::test` | `InventoryMapTests.TryGetFolderFromPath_EmptyPath` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:43` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `0ffd4f32e285ba94e94f63ac312d3be20bf144b769e8d18af32e15f481042ed7` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlash::test` | `InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlash` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:75` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `90ae520739ea1a2612f491bb110b0870ed4dcb8a983aad9526ed25d8c5cbe687` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlashes::test` | `InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlashes` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:109` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `8c0ed3c6cc16b916f9df8d25d55618e82299fd1bcd66983f682219c338853028` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashPrefix::test` | `InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashPrefix` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:144` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `8a86081d6b25ae50b3cf8cdcb1c58c8539264931ab74f395dfc7345ee7f4f861` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashSuffix::test` | `InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashSuffix` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:178` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `04afafa569b7a10d6add8c1e9d8f26ac502791f1da2dbdb3e37407e945c87872` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashAffix::test` | `InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashAffix` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:212` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7eaec38fa6b545f133748b502169fab575308c9c4e60548cfbfd704452bd9761` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_ContendingFoldersWithSlashes::test` | `InventoryMapTests.TryGetFolderFromPath_ContendingFoldersWithSlashes` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:247` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `96a8189266746a564072122342f36b3321998f3e0cbe0094f3e4c83d29bc53d5` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_InvalidPath::test` | `InventoryMapTests.TryGetFolderFromPath_InvalidPath` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:287` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `547def910ded67bc7950b211ad929f775d4eff26e351d11612f146b3e863510e` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_IgnoreFolderPrefix::test` | `InventoryMapTests.TryGetFolderFromPath_IgnoreFolderPrefix` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:318` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `5039b79496d215d3921427ab6f65867ba7a4ea5239864f1f5a1e38ea3e5bb426` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FailOnHiddenFolder::test` | `InventoryMapTests.TryGetFolderFromPath_FailOnHiddenFolder` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:353` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `bb0c7e531584128d251b06a4ac23b8cfad16ec4b117be79a53dea3c54aed4510` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_AllowHiddenFolder::test` | `InventoryMapTests.TryGetFolderFromPath_AllowHiddenFolder` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:386` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `9217cb5bd9c325fc792303e5ab53cefd71e95a5acf9e5a1601957ba8bf807346` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ById::test` | `InventoryMapTests.FindFoldersContaining_ById` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:423` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `fc89036c3472dcc2ea4d3fcb55636238e3d2c75b490f46d328b5f91f28301ed0` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByAttachmentType::test` | `InventoryMapTests.FindFoldersContaining_ByAttachmentType` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:463` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `90b36c29312b87c824c158987e551ca31522cf53a68f5f6bd3eae8fe03e914ed` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByAttachmentType_SingleResult::test` | `InventoryMapTests.FindFoldersContaining_ByAttachmentType_SingleResult` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:507` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `a973bf8087abb0c68cd80d76949fac2735474bf6ccbe743933051f60527d93ce` | -| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByWearType::test` | `InventoryMapTests.FindFoldersContaining_ByWearType` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:551` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `d6712cbeacd6ddf25a1f76dc1eeb10f4c0d8967a7591c249127f9b6387f0df8a` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CamZoomMin_Default::test` | `PermissionsTests.CamZoomMin_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `662b332d66c72caecc1a179730bc2524b9da16aa85f7289bebd31842610ceccc` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextWorld_Default::test` | `PermissionsTests.CanShowHoverTextWorld_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:18` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `380d1e30bd9ded04329bfd6d65ba447a8dd45a934cfa875628253719bb0e69ce` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextHud_Default::test` | `PermissionsTests.CanShowHoverTextHud_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:27` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a0af1f72f417cfa451284b7a3dbbb26d378e7eb9896dde3b6df0d0a2e4773f38` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverText_Default::test` | `PermissionsTests.CanShowHoverText_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:36` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c4122dbf650f51bde55dfda412a884347a78d3cd09dd2bb0fcbe4a7e74a1fff6` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextAll_Default::test` | `PermissionsTests.CanShowHoverTextAll_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:46` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `0ed67c5566d038f770eb9f5df6aa0b5394d7d94cf7c397fa8089b419f872c681` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowNameTags_Default::test` | `PermissionsTests.CanShowNameTags_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:56` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `0781be94eb099d9aed1be2ff313856770d1ec24047d04c81c69219c743b4c8cb` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShare_Default::test` | `PermissionsTests.CanShare_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:65` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e827d549d1d9329b63db159446937735ead13eed5d3eaa59440d3c686182f517` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowNames_Default::test` | `PermissionsTests.CanShowNames_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:74` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `56492cdd0802c5f8ed2a0f6d56abaf8186e37dd7b888904db52be97f9137279a` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanEdit_Default::test` | `PermissionsTests.CanEdit_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:83` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `417fb9f3eb3e70f3bd33710d11fb25eacd0db0a365b0ed2dec6778d09968f44b` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanRecvChat_Default::test` | `PermissionsTests.CanRecvChat_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:97` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b1ec48da83249b1141c3af926cd494373c47214d6a145916a8833d49edd155e2` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanAutoAcceptTpRequest_Default::test` | `PermissionsTests.CanAutoAcceptTpRequest_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:107` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `abbcccb4415afdb6558f40a6d4030704f64442f019d065fef8a7a56a407e8642` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanTpRequest_Default::test` | `PermissionsTests.CanTpRequest_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:118` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `aefc51023a5274d402dae0e8111a0776622dc431754c3d1f0ce240a50dfd405d` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanAutoAcceptTp_Default::test` | `PermissionsTests.CanAutoAcceptTp_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:127` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `553245a5381689a7f1c6398cb0ca50510f9089b9bdc797672ae35fb5822fdf8e` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanChat_Default::test` | `PermissionsTests.CanChat_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:138` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a9b0e4f8713991ce8b9b61d750c086d56da432dbddd533ec63dc0604238831a1` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanSendIM_Default::test` | `PermissionsTests.CanSendIM_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:146` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6cc5238ded59b80408c59c9e77ded1162e370c295b846903dbcc87f74175cd55` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanStartIM_Default::test` | `PermissionsTests.CanStartIM_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:155` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c6d6db79b0939b33eb5fd29490474575e062f796160f4a69aab34ccefc1842cb` | -| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanReceiveIM_Default::test` | `PermissionsTests.CanReceiveIM_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:163` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `23c1c79ae9eba016a48f3e9097fc26283223c9e120308d93fe53ce591ee5691c` | -| `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_MultipleTerms::test` | `FindFolderQueryTests.FindFolder_MultipleTerms` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `a1f04e5ab064772c25feefc21ea57d65b1044f0fa3254aeb2a3bfedf68d8e0ca` | -| `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_SearchOrder::test` | `FindFolderQueryTests.FindFolder_SearchOrder` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs:53` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `4cba32dd316f49713c18a71bf5a932e1c28c94944add38c25852e8611ef0f987` | -| `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_IgnorePrivate::test` | `FindFolderQueryTests.FindFolder_IgnorePrivate` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs:74` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `54c5ec1f6a6ae5611221e3afdc47db0c2d0ecb0da460dd8f2c506ed34c221ff8` | -| `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_IgnoreTildePrefix::test` | `FindFolderQueryTests.FindFolder_IgnoreTildePrefix` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs:99` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `9f6635f5e14dbc14d1592a19b62d67748a60201128a75893e47ea1751c83b6d7` | -| `LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs::FindFoldersQueryTests.FindFolders::test` | `FindFoldersQueryTests.FindFolders` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `09dbc17be4b28cc4a63d0f837960586ba7cd03e184f0013b26ed27db15703d84` | -| `LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs::FindFoldersQueryTests.FindFolders_Separator::test` | `FindFoldersQueryTests.FindFolders_Separator` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs:53` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `51caa783dded41b99c878066618a10a7fe32c681ef4385c9a72f154870312b1f` | -| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingNothing::test` | `GetAttachQueryTests.GetAttach_WearingNothing` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `41fc967c6c174ac39ce3f6de7e273e6db1845bc2ad6acd393f27a6705a3555df` | -| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_ExternalItems::test` | `GetAttachQueryTests.GetAttach_ExternalItems` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:36` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3f8e640aad5deeaf00b07af2d12c33b0a93257260d057d7b5dd5488f846f467a` | -| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingSomeItems::test` | `GetAttachQueryTests.GetAttach_WearingSomeItems` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:78` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `c209cd826958306f1350a685b29985cb8335a55ebcb9c0bec5c5a21279bb0a1a` | -| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingEverything::test` | `GetAttachQueryTests.GetAttach_WearingEverything` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:105` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `4adb25030cd3c125242a4b1f770bfd3afdcabd85c23d37c34df9c8f273489e5b` | -| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_Specific_Exists::test` | `GetAttachQueryTests.GetAttach_Specific_Exists` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:141` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7d8ccf26629911b6b20dc26c5c549975827d7378b4d85259a8b9724a3622892b` | -| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_Specific_NotExists::test` | `GetAttachQueryTests.GetAttach_Specific_NotExists` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:175` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `08d9852205987a266608ad17c12fa498894d7c3216e873cffb9db4584cfd100d` | -| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:8e1b820c1f2bd3cd` | `GetBlacklistQueryTests.GetBlacklist` | `"@getblacklist", 1234, "sendim,recvim", "recvim,sendim"` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765` | -| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:64136cd82156035a` | `GetBlacklistQueryTests.GetBlacklist` | `"@getblacklist:im", 1234, "sendim,recvim", "recvim,sendim"` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765` | -| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:2068bf7f0a131fe8` | `GetBlacklistQueryTests.GetBlacklist` | `"@getblacklist:send", 1234, "sendim,recvim", "sendim"` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765` | -| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:b86b0c5e67f981c2` | `GetBlacklistQueryTests.GetBlacklist` | `"@getblacklist:tpto", 1234, "sendim,recvim", ""` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765` | -| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:123b930bb970a1f1` | `GetBlacklistQueryTests.GetBlacklist` | `"@getblacklist", 1234, "", ""` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765` | -| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.ManualBlacklist::case:f14641dea0f1de93` | `GetBlacklistQueryTests.ManualBlacklist` | `"@getblacklist", "sendim,recvim", "recvim,sendim"` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:35` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4ef9ab9bc3165b99ef6b9cf6ae563210660e83fccf946376217c300a752c724e` | -| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.ManualBlacklist::case:d25c660357f6ccff` | `GetBlacklistQueryTests.ManualBlacklist` | `"@getblacklist", "", ""` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:36` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4ef9ab9bc3165b99ef6b9cf6ae563210660e83fccf946376217c300a752c724e` | -| `LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs::GetDebugQueryTests.GetDebug_Default::case:fa77559e30768d15` | `GetDebugQueryTests.GetDebug_Default` | `"RenderResolutionDivisor", "RenderResolutionDivisor Success"` | `LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6554db3b0455887c0224a6f91c7830d6cbf38d5520a65a9b17e26280fcc291f7` | -| `LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs::GetDebugQueryTests.GetDebug_Default::case:55694f25ed879d95` | `GetDebugQueryTests.GetDebug_Default` | `"Unknown Setting", "Unknown Setting Success"` | `LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6554db3b0455887c0224a6f91c7830d6cbf38d5520a65a9b17e26280fcc291f7` | -| `LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs::GetEnvQueryTests.GetEnv_Default::case:f656b648d00a6d91` | `GetEnvQueryTests.GetEnv_Default` | `"Daytime", "Daytime Success"` | `LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `cf4270c6c3417690afcf43982c3bdcf815f46ce81f9b6ccaf59377c633a64881` | -| `LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs::GetEnvQueryTests.GetEnv_Default::case:55694f25ed879d95` | `GetEnvQueryTests.GetEnv_Default` | `"Unknown Setting", "Unknown Setting Success"` | `LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `cf4270c6c3417690afcf43982c3bdcf815f46ce81f9b6ccaf59377c633a64881` | -| `LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs::GetGroupQueryTests.GetGroup_Default::test` | `GetGroupQueryTests.GetGroup_Default` | `` | `LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `da65b184d0ef1380274e8e4dfa199c125a1a192b9e76f8fec1d406df18186169` | -| `LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs::GetGroupQueryTests.GetGroup_NoGroup::test` | `GetGroupQueryTests.GetGroup_NoGroup` | `` | `LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs:32` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d1da37ae52bd94dac9cd6e031525b57f31ca7e9dc00a69a6e0c4e753741dc9e8` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv::test` | `GetInvQueryTests.GetInv` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7476602b4103b47ed7dff44146a7ba90a1d62dc0d502f7b9e37b7863d9441ceb` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits::test` | `GetInvQueryTests.GetInv_Outfits` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:35` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `d60a78bb35cc8fcdbdc2465889333b25567ea5e1c9279a8fb7b4162f4a35eae2` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreLeadingSlash::test` | `GetInvQueryTests.GetInv_Outfits_IgnoreLeadingSlash` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:67` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `add33ed33e1940f26362332b89486253c6af1a56e601bafab49511b6607ed50a` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreTrailingSlash::test` | `GetInvQueryTests.GetInv_Outfits_IgnoreTrailingSlash` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:91` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `8f89302126be19f89d075d87d5194cc000fb7819f92ea7d54e6a63c1df9ca1ee` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreLeadingAndTrailingSlash::test` | `GetInvQueryTests.GetInv_Outfits_IgnoreLeadingAndTrailingSlash` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:115` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `c660447f93fb8508dbe4c874c92fd776a6e13596bbe3036bfb4664e35ee22306` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_Inventory::test` | `GetInvQueryTests.GetInv_Outfits_Inventory` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:139` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7db6f75e2f109d0e8d852d181ddd721f688e27144ad8a5604384b37de9f8c3eb` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Subfolder::test` | `GetInvQueryTests.GetInv_Subfolder` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:168` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6a5effe8012e9a446021b83f9b5314f6f9b66587222b447fa79028582830b3a1` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Empty::test` | `GetInvQueryTests.GetInv_Empty` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:189` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `2dd9f242eb71826066482ff4faa80b952ef89f855723cdc0c01cc4714abf8751` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Invalid::test` | `GetInvQueryTests.GetInv_Invalid` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:210` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `92595df155e79568e70bceb1538c23f10de99a6a138a0a5d9b8a2626588fdae9` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn::test` | `GetInvWornQueryTests.GetInvWorn` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `472d70fb14f393d43f8698bb81d1855426f570d85c9e592fa86607eb79ce366e` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_PartialRoot::test` | `GetInvWornQueryTests.GetInvWorn_PartialRoot` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs:78` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `ce4c640a901a6684a27b2b259c4fc3b25f2d6b870107babff3b930ced64a150b` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_Naked::test` | `GetInvWornQueryTests.GetInvWorn_Naked` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs:128` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `fa8994189c5d9cda7d613dfb8f6ffbb1808c8bae54a3647530fb872d47c43dd5` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_EmptyFolder::test` | `GetInvWornQueryTests.GetInvWorn_EmptyFolder` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs:173` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `ab6fc753f4d4170e17f49b708d7e62816f197e83234feda1fdcf63dcdc0bc6c4` | -| `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_PartialWorn::test` | `GetInvWornQueryTests.GetInvWorn_PartialWorn` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs:218` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `ceb446f2aa6eaa5232a99147d5d993386ee9e2e5fefd93ef582f27a6b8ece948` | -| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingNothing::test` | `GetOutfitQueryTests.GetOutfit_WearingNothing` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `27befef9fdef993d82a641980f2b1ad7f458f07a50c7d008b6d311aeedfb4939` | -| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_ExternalItems::test` | `GetOutfitQueryTests.GetOutfit_ExternalItems` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:37` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `f88d149572ae35e880f16a5a92b4a9db73a3f26c5e8e61e4b1c01440151bd64b` | -| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingSomeItems::test` | `GetOutfitQueryTests.GetOutfit_WearingSomeItems` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:78` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `4e9ef77ab72f1fd16c4fad69f00eb80ab46421597d41b61df80b1f87370f42d3` | -| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingEverything::test` | `GetOutfitQueryTests.GetOutfit_WearingEverything` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:105` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `a840b239174cdb5dee4beb875bf9129209af3ba310564319528ad5b19764aae0` | -| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_Specific_Exists::test` | `GetOutfitQueryTests.GetOutfit_Specific_Exists` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:145` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `a402fd67ed8ddfc12d09863f08f9b15b34262ffa12b4b5aa965826eac89abae5` | -| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_Specific_NotExists::test` | `GetOutfitQueryTests.GetOutfit_Specific_NotExists` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:171` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `d7e891a620b5e5407fe337f507874b63eb5a21589767a01362bd8bc43d19ba4a` | -| `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_BySender::test` | `GetPathNewQueryTests.GetPathNew_BySender` | `` | `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `e7e87c01e83967a7160509d76f49d2a4b18d34b9b3fbed370c174d64ddb2c2b5` | -| `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByUUID::test` | `GetPathNewQueryTests.GetPathNew_ByUUID` | `` | `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs:59` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3a7d242966286258ed075c8e5c69eaf54ba0e71b8607432615a1199f5aeb6dcf` | -| `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByUUID_Unknown::test` | `GetPathNewQueryTests.GetPathNew_ByUUID_Unknown` | `` | `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs:103` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `c3c206661594026c36dfcfea110631548cd362d824db268c170e4d04b24b674a` | -| `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByAttach::test` | `GetPathNewQueryTests.GetPathNew_ByAttach` | `` | `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs:152` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `f8858e6141b660cec8a09c016891f2275dd9364157b1aa614b63fca5abb7620c` | -| `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByWorn::test` | `GetPathNewQueryTests.GetPathNew_ByWorn` | `` | `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs:202` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `eed31d9aaf34578368cc4f590de1da7f47e3f6c5e663215866f7f8e6946f974b` | -| `LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs::GetSitIdQueryTests.GetSitID::test` | `GetSitIdQueryTests.GetSitID` | `` | `LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs:21` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `bfbf6d62c09c4878504aa529805a29fe9689d1e29e7ca3d44bf2346d6b3fbe6b` | -| `LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs::GetSitIdQueryTests.GetSitID_Default::test` | `GetSitIdQueryTests.GetSitID_Default` | `` | `LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs:37` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `456f8f22b1d2917c3729ed600bdf0b693c0189bd100b9863f4b42b07259110b0` | -| `LibreMetaverse.Tests/RLV/Queries/GetStatusAllQueryTests.cs::GetStatusAllQueryTests.GetStatusAll::test` | `GetStatusAllQueryTests.GetStatusAll` | `` | `LibreMetaverse.Tests/RLV/Queries/GetStatusAllQueryTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ee8fac8485db2b5c01abf8664364ca1e13214243f1e661a04d93df680422d596` | -| `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus::test` | `GetStatusQueryTests.GetStatus` | `` | `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c538e68277e93b40374dfd86bde9be00e0b82dfad7f4573cc4b0660f15fa5fe4` | -| `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus_filtered::test` | `GetStatusQueryTests.GetStatus_filtered` | `` | `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs:34` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `574b7f7c37b4e09e4257e5b02d50b222054216e34b6d1dd3fe6b26127c89b562` | -| `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus_customSeparator::test` | `GetStatusQueryTests.GetStatus_customSeparator` | `` | `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs:55` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `3bec2e53ea88857d4a1ae8cd6bc6f235f24e00d0773c24ca75a1892adb803527` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.Notify::test` | `NotifyQueryTests.Notify` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `082ff4cd00faf29a73aca158d4e24ed9fd3e7844ed6cefbf962d8727846a3c27` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyFiltered::test` | `NotifyQueryTests.NotifyFiltered` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:36` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e00e51aeadd0d7a107105684129a6ae74fbf918be4c563d92d7cdaa223d2c03c` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiCommand::test` | `NotifyQueryTests.NotifyMultiCommand` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:54` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `77f3950214a1bd1e3816fa6f7b0ca69727e9e18be5fb7b37f19490408ca023dc` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiChannels::test` | `NotifyQueryTests.NotifyMultiChannels` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:73` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `12a0a6e0a0a6632960de98236670e063f2c1aa16cf6b6c8d718bde0e0abfd9b9` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiChannelsFiltered::test` | `NotifyQueryTests.NotifyMultiChannelsFiltered` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:94` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `bff8ca8465c2299d0d2ef60adfa4164270d08cee7223361bb27b86a7e4daeec9` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:9e893d263294d04d` | `NotifyQueryTests.NotifySynonyms` | `"@camdistmax:123=n", "/camdistmax:123=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:114` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:fc6b17eb4e9e7a00` | `NotifyQueryTests.NotifySynonyms` | `"@setcam_avdistmax:123=n", "/setcam_avdistmax:123=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:115` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:b37376c5865a6fe8` | `NotifyQueryTests.NotifySynonyms` | `"@camdistmin:123=n", "/camdistmin:123=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:116` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:5d497faea315b624` | `NotifyQueryTests.NotifySynonyms` | `"@setcam_avdistmin:123=n", "/setcam_avdistmin:123=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:117` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:282fa0139ccbba29` | `NotifyQueryTests.NotifySynonyms` | `"@camunlock=n", "/camunlock=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:118` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:f08c6eb7b4d12fac` | `NotifyQueryTests.NotifySynonyms` | `"@setcam_unlock=n", "/setcam_unlock=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:119` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:37f0f73ed7492dd0` | `NotifyQueryTests.NotifySynonyms` | `"@camtextures:1cdbc6a2-ae6b-3130-9348-3d3b1ca84c53=n", "/camtextures:1cdbc6a2-ae6b-3130-9348-3d3b1ca84c53=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:120` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:d75917941e63732c` | `NotifyQueryTests.NotifySynonyms` | `"@touchfar:5=n", "/touchfar:5=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:121` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:2f72da33fdbcd8be` | `NotifyQueryTests.NotifySynonyms` | `"@fartouch:5=n", "/fartouch:5=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:122` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyClear_Filtered::test` | `NotifyQueryTests.NotifyClear_Filtered` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:134` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `f3e0550a53faca13679421318eee85f010c1b8668e3edfae6e2548d39dbcafd7` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyClear::test` | `NotifyQueryTests.NotifyClear` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:155` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `61d7419956a83be04eeb13557c6a2120419b2f0f1c529149c4fb57871bb6506e` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyInventoryOffer::test` | `NotifyQueryTests.NotifyInventoryOffer` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:178` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `2bbac63ab86ec77f6d0a4558a14ee913a7f44930364476a89e02cd5ec80191b9` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySitStandLegal::test` | `NotifyQueryTests.NotifySitStandLegal` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:199` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `83a07a88a0386982c854a0223b64dd5c417f1a55a038e4ceba8f487983daadaf` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySitStandWithRestrictions::test` | `NotifyQueryTests.NotifySitStandWithRestrictions` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:224` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `166e2087aa0652bdd427e1908bc338659ec1d4dc8065c016612696d1f5dfd000` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyWear::test` | `NotifyQueryTests.NotifyWear` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:252` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9529acb9f3e1c335a50f8de6d63cc5711921de962546ff868811279d05826399` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyWear_Illegal::test` | `NotifyQueryTests.NotifyWear_Illegal` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:275` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `65bfc1db698470cf56dd8c6811e85ae373d1fca95cdbf82be66b7e32da311a2f` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyUnWear::test` | `NotifyQueryTests.NotifyUnWear` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:295` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `340b60b8038dcd55320dc9aedc16beb9193e731ba7b659ca3cb2951a2d19b7ac` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyUnWear_illegal::test` | `NotifyQueryTests.NotifyUnWear_illegal` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:318` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e7056e6e145430eb2180edb92593f59c07bcbdfa21629b1ca29ac93b2fca975e` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyAttached::test` | `NotifyQueryTests.NotifyAttached` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:340` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `dc5239c77b9169cf3833c5a1dc765b381efe833f15b34ac7e57173c0a640942a` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyAttached_Illegal::test` | `NotifyQueryTests.NotifyAttached_Illegal` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:363` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b56de057dece9cb8ece795d13d6bc42e7825d62f09f967f37a4dbf262d2b4456` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyDetached::test` | `NotifyQueryTests.NotifyDetached` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:383` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a741cec23a985028b3dc2b09195255276a96e4f07fc4fe5f8cca6c1e3c940d71` | -| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyDetached_Illegal::test` | `NotifyQueryTests.NotifyDetached_Illegal` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:407` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1a4c9475a3b91a975b9861685dcaf899505b4f6727257618f9add9cecd3df54d` | -| `LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs::VersionNumBlQueryTests.VersionNumBL::case:478968a5d14830de` | `VersionNumBlQueryTests.VersionNumBL` | `"", RlvService.RLVVersionNum` | `LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `0dbc89f77a6f293efcca217febb2f6b8d224f9ac5e1d6532a56a7df64a7be6e9` | -| `LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs::VersionNumBlQueryTests.VersionNumBL::case:8c124ee42e9ab944` | `VersionNumBlQueryTests.VersionNumBL` | `"sendim,recvim", RlvService.RLVVersionNum + ",recvim,sendim"` | `LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `0dbc89f77a6f293efcca217febb2f6b8d224f9ac5e1d6532a56a7df64a7be6e9` | -| `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.ManualVersion::test` | `VersionQueryTests.ManualVersion` | `` | `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6f8493b201d69e1449d8311e434736f6f6b2bad04c9fe9c6adf94a94d9cbe597` | -| `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:442bdc765ad34e20` | `VersionQueryTests.CheckVersions` | `"@version", 1234, RlvService.RLVVersion` | `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs:30` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30` | -| `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:968af293ea2a53a1` | `VersionQueryTests.CheckVersions` | `"@versionnew", 1234, RlvService.RLVVersion` | `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs:31` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30` | -| `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:ae9a221915e6e1bb` | `VersionQueryTests.CheckVersions` | `"@versionnum", 1234, RlvService.RLVVersionNum` | `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs:32` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30` | -| `LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs::AddAttachRestrictionTests.AddAttach::test` | `AddAttachRestrictionTests.AddAttach` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `bb2c3495d7b6862fabe1007bcfccc2850d29eef1d9aa4eac6d13d6004dcc4e6b` | -| `LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs::AddAttachRestrictionTests.AddAttach_Specific::test` | `AddAttachRestrictionTests.AddAttach_Specific` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs:39` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `0201965931ebba1c13a23bbb43a8787c1639b0b98851141faffd963173c51035` | -| `LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs::AddOutfitRestrictionTests.AddOutfit::test` | `AddOutfitRestrictionTests.AddOutfit` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `d4902b4dda0a640d240c88af30431f6d247aae2a74a81126fd91ba1d930de3fb` | -| `LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs::AddOutfitRestrictionTests.AddOutfit_part::test` | `AddOutfitRestrictionTests.AddOutfit_part` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs:56` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `e7e5467b36484fb54b0336abccf682905fbe5bff9e04195645981815e2ffadeb` | -| `LibreMetaverse.Tests/RLV/Restrictions/AllowIdleRestrictionTests.cs::AllowIdleRestrictionTests.CanAllowIdle::test` | `AllowIdleRestrictionTests.CanAllowIdle` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AllowIdleRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6278bb1a70f024f687080cb8e8a56bbc923f679fb4adb61c6c91c3397a3de7fc` | -| `LibreMetaverse.Tests/RLV/Restrictions/AlwaysRunRestrictionTests.cs::AlwaysRunRestrictionTests.CanAlwaysRun::test` | `AlwaysRunRestrictionTests.CanAlwaysRun` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AlwaysRunRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9c0a34e0960e3e2a834ccfc1c129a1f5a8f8c6cfd30b322671b4e5c4cd25a24c` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis::test` | `AttachAllThisRestrictionTests.AttachAllThis` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `39bc0c4581f8277f4d5c90ec715c40f4715b5ae7007a28a04fe762f2f6adfbfd` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive::test` | `AttachAllThisRestrictionTests.AttachAllThis_Recursive` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:88` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `d051e7783e79bf91a8092cd2d29cf1aacec3b0af86ecf0c7ca590ce25bc8393c` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Path::test` | `AttachAllThisRestrictionTests.AttachAllThis_Recursive_Path` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:168` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `b4db2b29ad376777b382f8c6f4f7b62643bb2dd43858de4be69ac2252f18c963` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Worn::test` | `AttachAllThisRestrictionTests.AttachAllThis_Recursive_Worn` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:248` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `6ecfc6ffe71896979a37dac6dd8149a015b8d3e7e952247954333c053da4961e` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached::test` | `AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:327` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `8ac38c77c6bdb03e4cbaa96600bead9a760eb5eec098504b05cfb3a1bdfb8557` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached_AddRem::test` | `AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached_AddRem` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:425` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `495f288e0fa86059d13a027075700ba6308e9c9d585fa56e3d1adf4a71df912b` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis::test` | `AttachThisRestrictionTests.AttachThis` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `3a8a5acc4ad5cbec76737239ea23330a34f54146a4ff9d5d25082c220527a3e4` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_NotRecursive::test` | `AttachThisRestrictionTests.AttachThis_NotRecursive` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:81` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `a5818b4e30d04aba7d6427b2b94e025d34e82eb3bdcb7ac80a23e55f2382ec29` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByPath::test` | `AttachThisRestrictionTests.AttachThis_ByPath` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:151` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `93e1721f171e24e540160e738f731b895ebd868d840bcdf7c16ba92f6eb4c49a` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByRlvAttachmentPoint::test` | `AttachThisRestrictionTests.AttachThis_ByRlvAttachmentPoint` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:216` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `90a562b2c120daa0ea2612befe9e09649bc2ffac59c2cd360fe4a37dedf85ae3` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByWornLayer::test` | `AttachThisRestrictionTests.AttachThis_ByWornLayer` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:294` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `a444d51c2091fa36f1a010e98ad896042aa0262153ea8a833a14dfcbf02de85e` | -| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByWornLayer_AddRem::test` | `AttachThisRestrictionTests.AttachThis_ByWornLayer_AddRem` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:369` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `dd3d9a0d9b56f08f6be7a6200e1f50e834ecc7613de0cdf44ee89262b3abdb30` | -| `LibreMetaverse.Tests/RLV/Restrictions/ChatNormalTests.cs::ChatNormalTests.CanChatNormal::test` | `ChatNormalTests.CanChatNormal` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ChatNormalTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9a23c49327636e769c7ff2688a0649d441f3531406e8f51e152ec7186a312287` | -| `LibreMetaverse.Tests/RLV/Restrictions/ChatShoutRestrictionTests.cs::ChatShoutRestrictionTests.CanChatShout::test` | `ChatShoutRestrictionTests.CanChatShout` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ChatShoutRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `493e1dd87afaaa7f8183e677df5c32d00f150ffcdd53f9afad8684672837aa28` | -| `LibreMetaverse.Tests/RLV/Restrictions/ChatWhisperRestrictionTests.cs::ChatWhisperRestrictionTests.CanChatWhisper::test` | `ChatWhisperRestrictionTests.CanChatWhisper` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ChatWhisperRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `67c5d2cb8b3e9424fbcf08378c2a28368fe07aa83ec028df7cf88b91576d3e9f` | -| `LibreMetaverse.Tests/RLV/Restrictions/DefaultWearRestrictionTests.cs::DefaultWearRestrictionTests.CanDefaultWear::test` | `DefaultWearRestrictionTests.CanDefaultWear` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DefaultWearRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `64eef4c82d1c5a21bc923cfd44616ddc1a5e6403a9a1c5ad6bd2e5ee06e9704c` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis::test` | `DetachAllThisRestrictionTests.DetachAllThis` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `ee74f952bd602bd23cfc7b203940a902e1b30e02cff60c1abc1f74da964c1f7d` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive::test` | `DetachAllThisRestrictionTests.DetachAllThis_Recursive` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:88` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `2b6a646ee82484a6d1901ea4425b0e32fe553827f5bea37b506ffe29d1aec192` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Path::test` | `DetachAllThisRestrictionTests.DetachAllThis_Recursive_Path` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:168` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `731244b623f23a8870d011280a062add751607ce2c58be3261485bb61d488297` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Worn::test` | `DetachAllThisRestrictionTests.DetachAllThis_Recursive_Worn` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:245` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `d8424a48e64346edd683b7a68652dd5a0be615658f085b0390699ac7b4db5d2c` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached::test` | `DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:324` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `f399592217e7a4638ea25d469681ab9cc58bf8a937af2bfff8895996f7bbc493` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached_AddRem::test` | `DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached_AddRem` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:421` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `507273250b932ff93fa34f87190ad1ab289edeed275be6d2259bab05c5b055d1` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach_Default::test` | `DetachRestrictionTests.Detach_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8c5b165329ab6b46eb3ec7c9a07383e8ea1e54edf0882b43b14166d67cc45617` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach::test` | `DetachRestrictionTests.Detach` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs:33` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `50f5419aea3ea41aa9ebedd29202a549deb4ae6089c38965300a46fd5abf94bf` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach_AttachPoint::test` | `DetachRestrictionTests.Detach_AttachPoint` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs:55` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a75fea134b92bca704b2e140135076d699d645c0d2854022d5b20d14be372589` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis::test` | `DetachThisRestrictionTests.DetachThis` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `bf6cdb48a5271d5116db4d0cbf12dbf63fc3cc93862bf718cf849d4abf9eb7cc` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_NotRecursive::test` | `DetachThisRestrictionTests.DetachThis_NotRecursive` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:82` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `a8452e2b0abcf82447394bae981a1d25677147fad17828d8f6d0705264efa429` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByPath::test` | `DetachThisRestrictionTests.DetachThis_ByPath` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:153` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `e6378e0db310005b8426cabd25969818ed36252e1995de97c6b29d5ab155ee58` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByRlvAttachmentPoint::test` | `DetachThisRestrictionTests.DetachThis_ByRlvAttachmentPoint` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:219` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `278e4cbf0f9999efec04fcabade19da97439cca732e0e7e3e3c004e232c27224` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByWornLayer::test` | `DetachThisRestrictionTests.DetachThis_ByWornLayer` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:297` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `66b7eba54e34ed58c59d594cdcb85d874c4db9bbbd871e5438c40fd3d47ad3f6` | -| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByWornLayer_AddRem::test` | `DetachThisRestrictionTests.DetachThis_ByWornLayer_AddRem` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:371` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7424bf38db1abd74132618ee3bcf95a79c32942da26086760dc82355a815d37e` | -| `LibreMetaverse.Tests/RLV/Restrictions/EditAttachRestrictionTests.cs::EditAttachRestrictionTests.CanEdit_Attachment::test` | `EditAttachRestrictionTests.CanEdit_Attachment` | `` | `LibreMetaverse.Tests/RLV/Restrictions/EditAttachRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `22bc9e267e270c2c762561851249af4ef64c0b5bd288950a95b1b636b2975b6e` | -| `LibreMetaverse.Tests/RLV/Restrictions/EditRestrictionTests.cs::EditRestrictionTests.CanEditFolderNameSpecifiesToAddInsteadOfReplace::test` | `EditRestrictionTests.CanEditFolderNameSpecifiesToAddInsteadOfReplace` | `` | `LibreMetaverse.Tests/RLV/Restrictions/EditRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6d82d0869826bbc935d89967445dfc991619bdaf3fa631550c5d3f91a13c4935` | -| `LibreMetaverse.Tests/RLV/Restrictions/EditWorldRestrictionTests.cs::EditWorldRestrictionTests.CanEdit_World::test` | `EditWorldRestrictionTests.CanEdit_World` | `` | `LibreMetaverse.Tests/RLV/Restrictions/EditWorldRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1f335a2c81735bf58294b97ceedfd85192113e69c78a38804f0db923ce7a0241` | -| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch::case:ccd63fc5b9c064fb` | `FarTouchRestrictionTests.CanFarTouch` | `"fartouch"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a5568e0040a3c0ac8875a11596b7d0799ac5169b919e4fc65587555b2d3edd52` | -| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch::case:ae3d093c6c7267ac` | `FarTouchRestrictionTests.CanFarTouch` | `"touchfar"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a5568e0040a3c0ac8875a11596b7d0799ac5169b919e4fc65587555b2d3edd52` | -| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Synonym::case:ccd63fc5b9c064fb` | `FarTouchRestrictionTests.CanFarTouch_Synonym` | `"fartouch"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:20` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c7aff866d539ceb26cc028532a901f18b58bb020f34da56444f08c9f4df1eb52` | -| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Synonym::case:ae3d093c6c7267ac` | `FarTouchRestrictionTests.CanFarTouch_Synonym` | `"touchfar"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:21` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c7aff866d539ceb26cc028532a901f18b58bb020f34da56444f08c9f4df1eb52` | -| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Default::case:ccd63fc5b9c064fb` | `FarTouchRestrictionTests.CanFarTouch_Default` | `"fartouch"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:30` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e894c744ea780a0a46cd2387157077c1a62c3c6b982303f3b7bff0b5d950816a` | -| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Default::case:ae3d093c6c7267ac` | `FarTouchRestrictionTests.CanFarTouch_Default` | `"touchfar"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:31` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e894c744ea780a0a46cd2387157077c1a62c3c6b982303f3b7bff0b5d950816a` | -| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:5788809ef8877342` | `FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms` | `"fartouch", "fartouch"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:40` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905` | -| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:b3ebeae1885ed5db` | `FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms` | `"fartouch", "touchfar"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:41` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905` | -| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:07cf5c5cabecfebf` | `FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms` | `"touchfar", "touchfar"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:42` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905` | -| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:8008f95bc76b47e9` | `FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms` | `"touchfar", "fartouch"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:43` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905` | -| `LibreMetaverse.Tests/RLV/Restrictions/FlyRestrictionTests.cs::FlyRestrictionTests.CanFly::test` | `FlyRestrictionTests.CanFly` | `` | `LibreMetaverse.Tests/RLV/Restrictions/FlyRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5f60149edccece6b8a6827bbdc6f593ffd863961c13b506f1171aa0cf37fd5b7` | -| `LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs::InteractRestrictionTests.CanInteract::test` | `InteractRestrictionTests.CanInteract` | `` | `LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `935d319e07b613ba39b06db30cfd18306670f7dc97186db38c0374c3aac6901e` | -| `LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs::InteractRestrictionTests.CanInteract_default::test` | `InteractRestrictionTests.CanInteract_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs:18` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `53b9d7f7cfd63a10538060624f81b7a6b1754a7462c230671ed909698dd18923` | -| `LibreMetaverse.Tests/RLV/Restrictions/JumpRestrictionTests.cs::JumpRestrictionTests.CanJump::test` | `JumpRestrictionTests.CanJump` | `` | `LibreMetaverse.Tests/RLV/Restrictions/JumpRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `104374c66e6748d101b69ed5343d9972f29e937305cb17f90244ffa74fc7ed35` | -| `LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs::PermissiveRestrictionTests.Permissive_On::test` | `PermissiveRestrictionTests.Permissive_On` | `` | `LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `923519a1220e5b3007321fb9ee8cc9db27bc0bbc38bed69df0659e4365c610e8` | -| `LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs::PermissiveRestrictionTests.Permissive_Off::test` | `PermissiveRestrictionTests.Permissive_Off` | `` | `LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b995698351bf04e00ab5aed459c8ee08292897545b8684338a90eaf42cd6c4aa` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvChatExceptionTests.cs::RecvChatExceptionTests.CanRecvChat::test` | `RecvChatExceptionTests.CanRecvChat` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvChatExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `017906038e211352d7d2751fafbcab5028cd8b189e7aa29a6202ff578976a23c` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvChatFromRestrictionTests.cs::RecvChatFromRestrictionTests.CanRecvChatFrom::test` | `RecvChatFromRestrictionTests.CanRecvChatFrom` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvChatFromRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `aaf24dc0b8533a7e93cc567fecbb866067b72da1837207869f879647840bfa21` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvChatSecExceptionTests.cs::RecvChatSecExceptionTests.CanRecvChat_Secure::test` | `RecvChatSecExceptionTests.CanRecvChat_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvChatSecExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `cba089ebe607088e37be285918a1d2c674f1acc4cad075733108afea3ad0279b` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteFromRestrictionTests.cs::RecvEmoteFromRestrictionTests.CanRecvChat_RecvEmoteFrom::test` | `RecvEmoteFromRestrictionTests.CanRecvChat_RecvEmoteFrom` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteFromRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d07ded724315cf135603d4dc5a684e5a59a5cf8415963acc30d402ad81916ac1` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteRestrictionTests.cs::RecvEmoteRestrictionTests.CanRecvChat_RecvEmote::test` | `RecvEmoteRestrictionTests.CanRecvChat_RecvEmote` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `438b72e6c44570580bf41aa7b8ed00afb800eff8836ee971eab9fc6a00fecc19` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteSecRestrictionTests.cs::RecvEmoteSecRestrictionTests.CanRecvChat_RecvEmote_Secure::test` | `RecvEmoteSecRestrictionTests.CanRecvChat_RecvEmote_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteSecRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9e1f72426762569b1c650fdf80c53e4a590b6476f8539fff6e110101e48459e8` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMFrom::test` | `RecvImFromRestrictionTests.CanReceiveIMFrom` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ebe072c7e1c8ba440b560c2e4a0aa5151ba546f5b6cd5505012958e901c58201` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMFrom_Group::test` | `RecvImFromRestrictionTests.CanReceiveIMFrom_Group` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs:22` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d3d155240723ca2d379f00111a3b27acb41786615a2f5b0ad2c968040d7f4447` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMTo_AllGroups::test` | `RecvImFromRestrictionTests.CanReceiveIMTo_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs:34` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `dd1050e7ef3e9805b88964822485856d6b2e5e98ee647ee08251cbc5bd452208` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvImRestrictionTests.cs::RecvImRestrictionTests.CanReceiveIM::test` | `RecvImRestrictionTests.CanReceiveIM` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9c88e79ed2686e571e32ccecbc93c130423b966ff4e65e72f228f1713e5047cd` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure::test` | `RecvImSecRestrictionTests.CanReceiveIM_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e549fe9719efd180f8ab8c80b989701cd23ebf07cd004d9a5a18a0cc7db12e64` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure_Group::test` | `RecvImSecRestrictionTests.CanReceiveIM_Secure_Group` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs:27` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `13653ee7443d2eca88f2940d0c3804de3685dcf6c9277a4717a42dad4c01fca4` | -| `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure_AllGroups::test` | `RecvImSecRestrictionTests.CanReceiveIM_Secure_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs:42` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d99435b52a3b774ab5d2bb6911824fa45803fe82cfe0b2c192a05473b72463c8` | -| `LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs::RemAttachRestrictionTests.RemAttach::test` | `RemAttachRestrictionTests.RemAttach` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `7005409bfff88f7fb75e5cf87f6f52f4c6f048de32f651b844cf62a1cc16f55c` | -| `LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs::RemAttachRestrictionTests.RemAttach_Specific::test` | `RemAttachRestrictionTests.RemAttach_Specific` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs:55` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `407cb5627753c42af2b469644ddc2857416fb4b181bfbb742b199ad7239d5e6f` | -| `LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs::RemOutfitRestrictionTests.RemOutfit::test` | `RemOutfitRestrictionTests.RemOutfit` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `2aa5056c8aec09fb28d0da37bf6861220595cacb3190542d865f99034fc1c488` | -| `LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs::RemOutfitRestrictionTests.RemOutfit_part::test` | `RemOutfitRestrictionTests.RemOutfit_part` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs:56` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `pending source translation` | `pending` | `f0c36209e33c9961b10ff685c8d4a32e279b4852e1c16a0e724f3cd481089576` | -| `LibreMetaverse.Tests/RLV/Restrictions/RezRestrictionTests.cs::RezRestrictionTests.CanRez::test` | `RezRestrictionTests.CanRez` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RezRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5cae348cc241a884803692031c0af4f33fb3a2ce8331129a9866c5364599eccb` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendChannelRestrictionTests.cs::SendChannelRestrictionTests.CanSendChannel::test` | `SendChannelRestrictionTests.CanSendChannel` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendChannelRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8496734391f57cf2f2d8156f3b5a9ad9147c959e3bf99f9e76a4072e971a5b42` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs::SendChannelSecRestrictionTests.CanSendChannel_Secure::test` | `SendChannelSecRestrictionTests.CanSendChannel_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5bd9096e9af488d5cdb08ed78120ef46f81f9be1eaf132c49a955eb07ae904eb` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs::SendChannelSecRestrictionTests.CanSendChannel_Secure_Exception::test` | `SendChannelSecRestrictionTests.CanSendChannel_Secure_Exception` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs:26` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e675121ba9f6ab8f6e4484e66d76d0dd14f8ef39122c8fff2878ba5e6b3a7409` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs::SendChatRestrictionTests.CanSendChat::test` | `SendChatRestrictionTests.CanSendChat` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `36cfbe5123b4b37ee43f0b4ba6453ebbe2754960825b1a8481e77e4f3a0e8015` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs::SendChatRestrictionTests.CanChat_SendChatRestriction::test` | `SendChatRestrictionTests.CanChat_SendChatRestriction` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `793a31da070038e90c41e4bdb1161daaf51376617a7444867f19c7125ad34313` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendGestureRestrictionTests.cs::SendGestureRestrictionTests.CanSendGesture::test` | `SendGestureRestrictionTests.CanSendGesture` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendGestureRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `91367110c04e3c6ad173f56f209a166d828560850d3d084893e899bcc756428a` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendImRestrictionTests.cs::SendImRestrictionTests.CanSendIM::test` | `SendImRestrictionTests.CanSendIM` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c63ab3a41b6b302e7c84c54374c7193335840bafc40f2d0f2b1c3a2787b26203` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure::test` | `SendImSecRestrictionTests.CanSendIM_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `65422234501bcbf151f27e0d45c74726e670665f39d90df23396f79450ba2b91` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure_Group::test` | `SendImSecRestrictionTests.CanSendIM_Secure_Group` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs:27` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4ed2e6416a86eb2406e20bbb7e60a380de25577ad034ba613530ed28f6001df9` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure_AllGroups::test` | `SendImSecRestrictionTests.CanSendIM_Secure_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs:42` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a4b699c9ada01ca4ce4d535739178e5310affa938d02dfaede6d034488d24f5f` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo::test` | `SendImToRestrictionTests.CanSendIMTo` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `38258cda1081160b6b34f8e909adbc683a0f08efce8c63066bcac09835e5cdcc` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo_Group::test` | `SendImToRestrictionTests.CanSendIMTo_Group` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs:23` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1e12f7e3dbbee7d8dfb757fc8797644a353dfaa995e343e59124aa85126d70aa` | -| `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo_AllGroups::test` | `SendImToRestrictionTests.CanSendIMTo_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs:35` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `bc9b87ab7b171c76987ddaf94f05c0ac2ad8dc0c1f24f5dfce2f4125e7b28df5` | -| `LibreMetaverse.Tests/RLV/Restrictions/SetDebugRestrictionTests.cs::SetDebugRestrictionTests.CanSetDebug::test` | `SetDebugRestrictionTests.CanSetDebug` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SetDebugRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d4fb9da4879ef8d1be115e00b7a8de959fd58e32722bc9e2985bca8e97dd2ce3` | -| `LibreMetaverse.Tests/RLV/Restrictions/SetEnvRestrictionTests.cs::SetEnvRestrictionTests.CanSetEnv::test` | `SetEnvRestrictionTests.CanSetEnv` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SetEnvRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `bb4c82afd643d267264467282cdfe09095c804079e73dd15179e1aa0b063c08f` | -| `LibreMetaverse.Tests/RLV/Restrictions/SetGroupRestrictionTests.cs::SetGroupRestrictionTests.CanSetGroup::test` | `SetGroupRestrictionTests.CanSetGroup` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SetGroupRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9d89210cbc5c188985a535ae045e44d296c796f700d4a1e2b7b4d75345cc4a6d` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShareRestrictionTests.cs::ShareRestrictionTests.CanShare::test` | `ShareRestrictionTests.CanShare` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShareRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `23052e5792ff72624d45b54ccfd02fa5d8025d977010f1e8d34a90d27a4d0e29` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs::ShareSecRestrictionTests.CanShare_Secure_Default::test` | `ShareSecRestrictionTests.CanShare_Secure_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6d61bafb190791ceaccb6c46cde3adf5b5479e6b5e76bafeadd0942400389248` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs::ShareSecRestrictionTests.CanShare_Secure::test` | `ShareSecRestrictionTests.CanShare_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs:24` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e1aed5b3b8efccef47094788c3221e20240c671c1004d6d6bd899e5d9ddd51fa` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextAllRestrictionTests.cs::ShowHoverTextAllRestrictionTests.CanShowHoverTextAll::test` | `ShowHoverTextAllRestrictionTests.CanShowHoverTextAll` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextAllRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6a855738e87477d31dc7867d0c75ba1bf563e2b1e180f54759657a58b7da9793` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextHudRestrictionTests.cs::ShowHoverTextHudRestrictionTests.CanShowHoverTextHud::test` | `ShowHoverTextHudRestrictionTests.CanShowHoverTextHud` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextHudRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9d08e2a3eb303b14c4b222cae5d52537e81a7d9cfc9fcfe9625d513b6311a6ed` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextRestrictionTests.cs::ShowHoverTextRestrictionTests.CanShowHoverText::test` | `ShowHoverTextRestrictionTests.CanShowHoverText` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5642102d6832b227c37c14d0fbfc30921022c5789b811021805db6f3a2120f36` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextWorldRestrictionTests.cs::ShowHoverTextWorldRestrictionTests.CanShowHoverTextWorld::test` | `ShowHoverTextWorldRestrictionTests.CanShowHoverTextWorld` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextWorldRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1be82408fbc87f1525dc7652e01fbbc17a993b70a2268f0b742d035b37cbf70c` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowInvRestrictionTests.cs::ShowInvRestrictionTests.CanShowInv::test` | `ShowInvRestrictionTests.CanShowInv` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowInvRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b7c8bb7ad9d2c02c1c0168531c8ac0636885817a40b13bc006f4f5b20d28591c` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowLocRestrictionTests.cs::ShowLocRestrictionTests.CanShowLoc::test` | `ShowLocRestrictionTests.CanShowLoc` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowLocRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a8b154f2db967ab72781f31dcd7701d204f66ece1ef95a30cc67d788c78da617` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowMiniMapRestrictionTests.cs::ShowMiniMapRestrictionTests.CanShowMiniMap::test` | `ShowMiniMapRestrictionTests.CanShowMiniMap` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowMiniMapRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `da901135b533aee1b025cf5dd925e857b4734ea00770ced4518f501453ea9736` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowNameTagsRestrictionTests.cs::ShowNameTagsRestrictionTests.CanShowNameTags::test` | `ShowNameTagsRestrictionTests.CanShowNameTags` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNameTagsRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `74e8a6aefdefb9eb41509f6b4438e6854e5ad0ace38ab663f445aae484e94e22` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesRestrictionTests.cs::ShowNamesRestrictionTests.CanShowNames::test` | `ShowNamesRestrictionTests.CanShowNames` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c44fe98d881a89af5db856e98f7bd7480d9bfb4378730002e518a7d1da412812` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure_Default::test` | `ShowNamesSecRestrictionTests.CanShowNames_Secure_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `98d2c84d2f226fbb4b03c365f3ab007142d87b1980dda3666ce5ec36909fc599` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure::test` | `ShowNamesSecRestrictionTests.CanShowNames_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs:23` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `90ae29916dc2b60cd3de336e4a37683de8967f448fef26af360e3d24278773d3` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure_Except::test` | `ShowNamesSecRestrictionTests.CanShowNames_Secure_Except` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs:39` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `457772321f7fd1ea88a279e99a4b0a955e462652bac1fb7953b8455f3d67a155` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowNearbyRestrictionTests.cs::ShowNearbyRestrictionTests.CanShowNearby::test` | `ShowNearbyRestrictionTests.CanShowNearby` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNearbyRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4faa79795b1143934efbd8ebea7a926b270dd5d1e69f8a64f496063d570d868d` | -| `LibreMetaverse.Tests/RLV/Restrictions/ShowWorldMapRestrictionTests.cs::ShowWorldMapRestrictionTests.CanShowWorldMap::test` | `ShowWorldMapRestrictionTests.CanShowWorldMap` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowWorldMapRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `da16f247df929f83ed21377869790c00cb5922fa6086da3787e90570f5684f67` | -| `LibreMetaverse.Tests/RLV/Restrictions/SitRestrictionTests.cs::SitRestrictionTests.CanSit::test` | `SitRestrictionTests.CanSit` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `813906dbfd09bb02c129a794f40a2f5dcda6e73d232e167359a6360a350fa4b4` | -| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Default::test` | `SitTpRestrictionTests.CanSitTp_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ddcdba94af060ede43f0d585688966ccd923238a2365164b32a301b04d83cdfc` | -| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Single::test` | `SitTpRestrictionTests.CanSitTp_Single` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:18` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `041c57829ab1032eed79e6f47c8b9026124b681fb6ffa4b3c5ac16b16d0b354b` | -| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_SingleSender::test` | `SitTpRestrictionTests.CanSitTp_Multiple_SingleSender` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:27` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `feed9f3cca3395e1eb5a8d831304a4171e79f6e1d93f03a4aca0e27edba5ed6d` | -| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_SingleSender_WithRemoval::test` | `SitTpRestrictionTests.CanSitTp_Multiple_SingleSender_WithRemoval` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:38` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4b26c525e0a13fbc79b280f0a6c3b0f9e3e0e664241e9f55a88eda3dd80b203a` | -| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_MultipleSenders::test` | `SitTpRestrictionTests.CanSitTp_Multiple_MultipleSenders` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:52` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `cd9e3508d44e2e008609ac0cc12d3e207ec454a3f5c6e36aa325d33be9b6718f` | -| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Off::test` | `SitTpRestrictionTests.CanSitTp_Off` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:66` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e871d15d797e0f8f0b02613c2a421b47b87068c8757bbd0104cd15d406137854` | -| `LibreMetaverse.Tests/RLV/Restrictions/StandTpRestrictionTests.cs::StandTpRestrictionTests.CanStandTp::test` | `StandTpRestrictionTests.CanStandTp` | `` | `LibreMetaverse.Tests/RLV/Restrictions/StandTpRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `0f694e59d32c3c97fbee072d591b74c89561f4648bd3440002d8f54db0058a94` | -| `LibreMetaverse.Tests/RLV/Restrictions/StartImRestrictionTests.cs::StartImRestrictionTests.CanStartIM::test` | `StartImRestrictionTests.CanStartIM` | `` | `LibreMetaverse.Tests/RLV/Restrictions/StartImRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `cc8318d5233b947ca96939369de3a2fdc2c21468cc13a87c87908126c6e45500` | -| `LibreMetaverse.Tests/RLV/Restrictions/StartImToRestrictionTests.cs::StartImToRestrictionTests.CanStartIMTo::test` | `StartImToRestrictionTests.CanStartIMTo` | `` | `LibreMetaverse.Tests/RLV/Restrictions/StartImToRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `0c7e19de2ecf94a6db09ee409ff88ff503e02d8dd8f7f11f427cebc51a3ac09f` | -| `LibreMetaverse.Tests/RLV/Restrictions/TempRunRestrictionTests.cs::TempRunRestrictionTests.CanTempRun::test` | `TempRunRestrictionTests.CanTempRun` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TempRunRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8893bb24bf10de7e914874c347ac5b73982d33925a1cf29ae8c361c3087be408` | -| `LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs::TouchAllRestrictionTests.TouchAll::test` | `TouchAllRestrictionTests.TouchAll` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `06da3251125bf4d3b2d542cfba7fa0a7b0c18dc0f97024a57c0e0ddf6cfc8dd6` | -| `LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs::TouchAllRestrictionTests.TouchAll_default::test` | `TouchAllRestrictionTests.TouchAll_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs:24` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9526d7bed6473afd41f97fb11ec950caae157865cec8eee719030ca109ab2681` | -| `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs::TouchAttachOtherRestrictionTests.TouchAttachOther_default::test` | `TouchAttachOtherRestrictionTests.TouchAttachOther_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1f8157f5fd5db8b5a4596d5be6a5d780704cac85370204c77eca08da286adb86` | -| `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs::TouchAttachOtherRestrictionTests.TouchAttachOther_Specific::test` | `TouchAttachOtherRestrictionTests.TouchAttachOther_Specific` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs:26` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `add9d393d4aaf03768239611a8a64b2ef73fc4c8561dbbc51950a10c006198e6` | -| `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachRestrictionTests.cs::TouchAttachRestrictionTests.TouchAttach_default::test` | `TouchAttachRestrictionTests.TouchAttach_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4c4c65f8ed4b29367c353a02e52c91e9402788ffd35c75e5a6a40a827710e20a` | -| `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachSelfRestrictionTests.cs::TouchAttachSelfRestrictionTests.TouchAttachSelf_default::test` | `TouchAttachSelfRestrictionTests.TouchAttachSelf_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachSelfRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `09f7d7a45a9899746c1c63608f95db89ef2ae4a875437a2b594bb120da8139ff` | -| `LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs::TouchHudRestrictionTests.TouchHud_default::test` | `TouchHudRestrictionTests.TouchHud_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b15afadb1f45b51eb47651a9d890ed2a6b1de8066d986d9b1ccc33da734c0194` | -| `LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs::TouchHudRestrictionTests.TouchHud_specific::test` | `TouchHudRestrictionTests.TouchHud_specific` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs:26` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4c4e1a9493e5cf34f220ebec54c5373e1b30c81044803deece263dced5f7155d` | -| `LibreMetaverse.Tests/RLV/Restrictions/TouchWorldRestrictionTests.cs::TouchWorldRestrictionTests.TouchWorld_default::test` | `TouchWorldRestrictionTests.TouchWorld_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchWorldRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5995288721c44beaa329b266e15d619f2314c9ca74386145294183c7c509b42a` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpLmRestrictionTests.cs::TpLmRestrictionTests.CanTpLm::test` | `TpLmRestrictionTests.CanTpLm` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLmRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `847bd3264fd831837d8dab25b235450f19591fef3b3bd0315021727453ad64ee` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpLocRestrictionTests.cs::TpLocRestrictionTests.CanTpLoc::test` | `TpLocRestrictionTests.CanTpLoc` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLocRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8e5e2ab1b55b710ecce509b141ccac9bcd9ebbad479868496645ac89574bd089` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs::TpLocalRestrictionTests.CanTpLocal_Default::test` | `TpLocalRestrictionTests.CanTpLocal_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4b251429c6561c1d29f19f8fbc33dd0fb11344fe0d10962e789823ffedb3777b` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs::TpLocalRestrictionTests.CanTpLocal::test` | `TpLocalRestrictionTests.CanTpLocal` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs:18` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `f9dd3daf337533beab1f4c2dce488f44dea5d17880e8f61b33e3c17c1a4c776f` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs::TpLureRestrictionTests.CanTpLure_Default::test` | `TpLureRestrictionTests.CanTpLure_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `595e468736aab4136404842adf36a79f37b9900c3ee3993079621a5a6c96dec1` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs::TpLureRestrictionTests.CanTpLure::test` | `TpLureRestrictionTests.CanTpLure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs:20` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a57f7803128d75a0f1ba35a1c7489f78ca99d7e5e540f06b84725da8a5cd10da` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs::TpLureSecRestrictionTests.CanTpLure_Secure_Default::test` | `TpLureSecRestrictionTests.CanTpLure_Secure_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `577c2c8d22ba1aa8d4426832807ea4ed8cd243836b0d38b0ebc9f32a851c34f4` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs::TpLureSecRestrictionTests.CanTpLure_Secure::test` | `TpLureSecRestrictionTests.CanTpLure_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs:24` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `38f2894e39bdd7c3c8e1520fa6ed02573be3dfdef0bc5bd1073d9d2240917804` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs::TpRequestRestrictionTests.CanTpRequest::test` | `TpRequestRestrictionTests.CanTpRequest` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `08ddf0e6dd1faf1f249bc7f7a9545d9e33efb5a438eacc3606b1495a83cf57db` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs::TpRequestRestrictionTests.CanTpRequest_Except::test` | `TpRequestRestrictionTests.CanTpRequest_Except` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs:22` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `89ccb1dd172928c41079555cb6d7ff3fcbd34594dcff0399670cdebc739ac109` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs::TpRequestSecRestrictionTests.CanTpRequest_Secure_Default::test` | `TpRequestSecRestrictionTests.CanTpRequest_Secure_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `87cb0ffa95d408d55045ade0966979360c28762e05729893b068801ed3b877ed` | -| `LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs::TpRequestSecRestrictionTests.CanTpRequest_Secure::test` | `TpRequestSecRestrictionTests.CanTpRequest_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs:25` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `623310f5c9150f6d6527b0db0446e2c33bf873a849a8dc68b78a4173d130da93` | -| `LibreMetaverse.Tests/RLV/Restrictions/UnsitRestrictionTests.cs::UnsitRestrictionTests.CanUnsit::test` | `UnsitRestrictionTests.CanUnsit` | `` | `LibreMetaverse.Tests/RLV/Restrictions/UnsitRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `2341a0d230eace08d612a1ae3f9aac7b5a1d3d914f04b6ada4726523e9bd3a37` | -| `LibreMetaverse.Tests/RLV/Restrictions/ViewNoteRestrictionTests.cs::ViewNoteRestrictionTests.CanViewNote::test` | `ViewNoteRestrictionTests.CanViewNote` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ViewNoteRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `954472ccc5e060f987260c7d8f87f09dcb252e832c22810ed48dd316a173cf5e` | -| `LibreMetaverse.Tests/RLV/Restrictions/ViewScriptRestrictionTests.cs::ViewScriptRestrictionTests.CanViewScript::test` | `ViewScriptRestrictionTests.CanViewScript` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ViewScriptRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5e9246991c14d80bc83aad4b5944bd9701dc32b354a701a378def8924f7b5315` | -| `LibreMetaverse.Tests/RLV/Restrictions/ViewTextureRestrictionTests.cs::ViewTextureRestrictionTests.CanViewTexture::test` | `ViewTextureRestrictionTests.CanViewTexture` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ViewTextureRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d1ee89e12ea9c2d971b4d11c82f3129412fd56fa28d2bd2fb923f082eda62571` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Single::test` | `RestrictionsCameraTests.CamZoomMin_Single` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5f3010d46f3f18ed57ea52916dd9e8bde27d75c707dbcc0c6d68eb9bbe6c3591` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender::test` | `RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:27` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `0df818c7a6c90358cb52f59f972e16c769d38f448619dbdfeddd5a602f64d1d9` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender_WithRemoval::test` | `RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender_WithRemoval` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:39` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ed19a63ef16a600c9367f45d1a704739fd8e20e7811c7055df009676884de7dd` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_MultipleSenders::test` | `RestrictionsCameraTests.CamZoomMin_Multiple_MultipleSenders` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:54` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `c8ce609cf7506ae2df6e17126ebe5174f958245bedea26fe39600fb90195bdda` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Off::test` | `RestrictionsCameraTests.CamZoomMin_Off` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:69` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8f8ec9da2b0196a51dfb3fea709de597bdb440196697523824f78ef359a5482a` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Default::test` | `RestrictionsCameraTests.CamZoomMax_Default` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:81` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5997b7c86a1b1dac59b7f6c03d38cd09f0fb12619f03f68e1167c85ebe02f7d0` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Single::test` | `RestrictionsCameraTests.CamZoomMax_Single` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:88` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `75530a051696ffd586b5643f0c9b9f1ae1c05bd30f9c3068f94cb30abbdc6d2d` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender::test` | `RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:98` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `44d6a5b2a9462c83047f5b4ec9f4e66bb518f6547ec08df2b5420850129ff7cb` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender_WithRemoval::test` | `RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender_WithRemoval` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:110` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4958ce547ff71cf18d31cd557ecaecb8ae0a19b169c2051bd6797769bbcde26e` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_MultipleSenders::test` | `RestrictionsCameraTests.CamZoomMax_Multiple_MultipleSenders` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:125` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `76346d0c1f4ecf22d09c1950aef99207d28ffe5576b7bc0be1212b91d6518f2c` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Off::test` | `RestrictionsCameraTests.CamZoomMax_Off` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:140` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `88e2ec791d3f78bb6551b7d37a52cc5dc18c156ddd483bd6ba55288144005e5c` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin::test` | `RestrictionsCameraTests.CamZoomMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:153` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `cf5f8bfbea933b64bc282211f498b01eefab0b31728800e2965a8a489f85b15d` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax::test` | `RestrictionsCameraTests.CamZoomMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:165` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `7441bff0655432365bb702cce92465ab0ab7b7dd195b732312a4e243f975ba48` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFovMin::test` | `RestrictionsCameraTests.SetCamFovMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:177` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b433f776bfa059a889b1a13ebc0841c824715194b6b0634dea1dd5740d5b7bbe` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFovMax::test` | `RestrictionsCameraTests.SetCamFovMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:189` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `e0f313a03073b283400130e5a91c8c4157c9b83f9001f1ad1badf15f80821663` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov::test` | `RestrictionsCameraTests.SetCamFov` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:201` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `02118d87dfda863c31de56267a31beba94ff124ca225f56d67222b6ffaf0c6f9` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov_Restricted::test` | `RestrictionsCameraTests.SetCamFov_Restricted` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:214` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `34b9c620b61777ece7ad140fc15dde6d2b77d877af597cf2a1b5d5f768cd5fc7` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov_Restricted_Synonym::test` | `RestrictionsCameraTests.SetCamFov_Restricted_Synonym` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:229` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d8824c6f673ea7c101d309643ed4dbacc0fd6b17c0bda13f8cbb16b956529db4` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMax::test` | `RestrictionsCameraTests.SetCamAvDistMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:246` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `61206ccc9664f63057389d0d9540022ba82da88b1e213387a9a7f0d0cec050b3` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMax_Synonym::test` | `RestrictionsCameraTests.SetCamAvDistMax_Synonym` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:255` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9742afe1eb83fe3b63f6ce195bb1fb08058a6272e9817b3d1e09c50ca914a66a` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMin::test` | `RestrictionsCameraTests.SetCamAvDistMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:267` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `be661f7ae623eafe2c00a7eb80a716ab832cd56be904725cfa01c16ab219d10e` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMin_Synonym::test` | `RestrictionsCameraTests.SetCamAvDistMin_Synonym` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:277` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `da29486a2c8bc2801805774269743566457ca1b9b316dc6846cf499b60aa588d` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawAlphaMax::test` | `RestrictionsCameraTests.CamDrawAlphaMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:289` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `96e0f72499cdf258062ca0610594137c72f232ddf936c0cc929429368957d3ed` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMin::test` | `RestrictionsCameraTests.CamDrawMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:302` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `53a901a99baeb1f8d45a07d1347a6491d66ad8ca76cdef5304c64738e486e7a9` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMin_Small::test` | `RestrictionsCameraTests.CamDrawMin_Small` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:312` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `3f531bfcd6e08830912fd4d619a8ffc5e3ab40e9d036769f742ae0d06207400e` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMax::test` | `RestrictionsCameraTests.CamDrawMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:325` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `71ab081b330b9fc4cc73a06b214f52e577ab25c0ff15439e18737dfb220d7aaf` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMax_Small::test` | `RestrictionsCameraTests.CamDrawMax_Small` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:335` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `72d0752ae72ba5288d2b96fca3e0a29c162406b38588160e6801b211c82fac11` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawAlphaMin::test` | `RestrictionsCameraTests.CamDrawAlphaMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:348` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `697fafc1837d56255cdf5e2a09634dcc740651d45df04a712c030a224a58d0c2` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor::test` | `RestrictionsCameraTests.CamDrawColor` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:362` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b3bc0346dbcf6c6b03d9c2c38b225e7903754fcbc56c74d098dbdcb617d2426d` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Default::test` | `RestrictionsCameraTests.CamDrawColor_Default` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:375` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `fedba7874c0b897309caca0e007cb9fbcbce8cd5155c91ec94bf6d1f391d47a1` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Large::test` | `RestrictionsCameraTests.CamDrawColor_Large` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:382` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `6d2f0a4a24e71afbca88f3dfe574ff8ee5825e4df9a08552ac4af22a0a6b9f5e` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Negative::test` | `RestrictionsCameraTests.CamDrawColor_Negative` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:395` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `5f7ae954b3f75c5a86da8222a5eadc42ac3fee6ac4134455fb2a7a2e24101081` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Removal::test` | `RestrictionsCameraTests.CamDrawColor_Removal` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:408` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `81322059c2a6e0054c1d2131e0698c614942eec69958f72315545e9b1517fcb5` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Multi::test` | `RestrictionsCameraTests.CamDrawColor_Multi` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:418` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `21b9615f5a7e809ec83442035588414101fdf3862f282f1a501fb15d904f981e` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CanSetCamUnlock::test` | `RestrictionsCameraTests.CanSetCamUnlock` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:434` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `3983d83fb0086bc71a585eeda9b561c738ba1eb99365182115a673ab38e166a1` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CanCamUnlock::test` | `RestrictionsCameraTests.CanCamUnlock` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:448` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b116d0b63222b30c67da7c08d48f10701f5def2bdd3584166939d713a86a8cd4` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamAvDist::test` | `RestrictionsCameraTests.CamAvDist` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:462` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4c5641b0e975136e815bfaf8d9821240f0ac2bc615ed105fa5190dfdbcddc158` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures::case:0fdad12f3bfb0585` | `RestrictionsCameraTests.SetCamTextures` | `"setcam_textures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:476` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4b5058bfacb3e7f282bb83d0068ff9c7c7464b0d4119f879d670ddaf34d469b6` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures::case:19c11fd923cc347d` | `RestrictionsCameraTests.SetCamTextures` | `"camtextures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:477` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4b5058bfacb3e7f282bb83d0068ff9c7c7464b0d4119f879d670ddaf34d469b6` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Single::case:0fdad12f3bfb0585` | `RestrictionsCameraTests.SetCamTextures_Single` | `"setcam_textures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:486` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `abe9a6cff61faf1afbd29c4b073d34d67cf5e77058df44b68cbed7e1d9569814` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Single::case:19c11fd923cc347d` | `RestrictionsCameraTests.SetCamTextures_Single` | `"camtextures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:487` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `abe9a6cff61faf1afbd29c4b073d34d67cf5e77058df44b68cbed7e1d9569814` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:1c2423e3f02a5f03` | `RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms` | `"setcam_textures", "setcam_textures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:498` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:57689650dc307766` | `RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms` | `"setcam_textures", "camtextures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:499` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:081becc69dc8e183` | `RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms` | `"camtextures", "camtextures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:500` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:d96d157e365ded15` | `RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms` | `"camtextures", "setcam_textures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:501` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamAvDistMin::test` | `RestrictionsCameraTests.GetCamAvDistMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:534` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `60d28627494c147228930839a18016e3cbfa8eb042167965647794902eb340a6` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamAvDistMax::test` | `RestrictionsCameraTests.GetCamAvDistMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:557` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `a7cf7887d2934984cc13e10f3afa3248a5e677c9fac680af2a68c3a27d76c3da` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFovMin::test` | `RestrictionsCameraTests.GetCamFovMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:578` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `25a040ca69bf4c2a303d45314fec99e70371bf6ac46e1793384e0a626deb4e75` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFovMax::test` | `RestrictionsCameraTests.GetCamFovMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:600` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `19153fa188ef6bd763235a03048771d1a1d824c1aeaf64841b7e6e70c35813ae` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamZoomMin::test` | `RestrictionsCameraTests.GetCamZoomMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:622` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8cd72b3f1922b913c6bde59b928f362fa191574dc1df3cfb4668d4ccf00515a9` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFov::test` | `RestrictionsCameraTests.GetCamFov` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:644` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `f4031d095b9a7e87d1f1d94e52c15c3c9b2b43aa1ba039c83e391e58ea994c40` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:6e89e27b90f28739` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_zoommin=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:664` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:82ff323c4cfaad18` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_fov=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:665` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:c64b136643c55ed8` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_fovmax=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:666` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:32ad2cfbbfcf0638` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_avdistmin=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:667` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:21855f1f68a52025` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_avdistmax=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:668` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | -| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:065ec3bc69e3f2b0` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_fovmin=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:669` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_EmptyByDefault::test` | `RlvBlacklistTests.GetBlacklist_EmptyByDefault` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9bd5c937815547d2d4b9dcfcb5c35d69e224cc4dc256273735c69b8be150c3a8` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_ValidBehavior_AddsToBlacklist::test` | `RlvBlacklistTests.BlacklistBehavior_ValidBehavior_AddsToBlacklist` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:19` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `dbf7650afeab51abc22fc48881a06e4908f373b6b0077fe58fc4d4e50ea0e0f5` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_CaseInsensitive_NormalizesToLowercase::test` | `RlvBlacklistTests.BlacklistBehavior_CaseInsensitive_NormalizesToLowercase` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:34` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `dbc4161b4cd5dd7f3609b11f1c6f4f6e1e243b2ba65a444afa67c70cf649c5d3` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_DuplicateBehavior_OnlyAddsOnce::test` | `RlvBlacklistTests.BlacklistBehavior_DuplicateBehavior_OnlyAddsOnce` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:50` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `53644a5123b90e32f162a9106c945a57d05b17de1a8ab0bf1930283deaf28018` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:12ae32cb1ec02d01` | `RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `""` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:67` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:52109349dabf6910` | `RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `" "` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:68` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:729e2865c247816a` | `RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `"\t"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:69` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:d7a5e915306d21dc` | `RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `"\n"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:70` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_ExistingBehavior_RemovesFromBlacklist::test` | `RlvBlacklistTests.UnBlacklistBehavior_ExistingBehavior_RemovesFromBlacklist` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:78` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `47501ced70145add192d357c6a2647ca4a923bdaab3b1eff1c3857cebc5020db` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_CaseInsensitive_RemovesCorrectBehavior::test` | `RlvBlacklistTests.UnBlacklistBehavior_CaseInsensitive_RemovesCorrectBehavior` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:93` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `b5f4a87e8dc603a08a9f1225a35e44962d4240a3e5b9e605c948d19b268ed1bd` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NonExistentBehavior_DoesNothing::test` | `RlvBlacklistTests.UnBlacklistBehavior_NonExistentBehavior_DoesNothing` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:108` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `495314ef0e42ec419b804108907c02ffe9520a1657344f391aa491f91129ecc5` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:12ae32cb1ec02d01` | `RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `""` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:123` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:52109349dabf6910` | `RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `" "` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:124` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:729e2865c247816a` | `RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `"\t"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:125` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:d7a5e915306d21dc` | `RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `"\n"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:126` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_BlacklistedBehavior_ReturnsTrue::test` | `RlvBlacklistTests.IsBlacklisted_BlacklistedBehavior_ReturnsTrue` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:134` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `2cfeda6f45d63514216d0ffccdee89ee4b7f78e775f43fb12ee78324f9cfde35` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_CaseInsensitive_ReturnsTrue::test` | `RlvBlacklistTests.IsBlacklisted_CaseInsensitive_ReturnsTrue` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:145` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `1b4c6ed072b97dd9abcc0f730533691d8a65122d1839d40736e98a0f5c43f07d` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NonBlacklistedBehavior_ReturnsFalse::test` | `RlvBlacklistTests.IsBlacklisted_NonBlacklistedBehavior_ReturnsFalse` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:158` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `f4cc9018c5d111b06dc8c2ce0d6ed042eb063331f35ef1665e65f4d8606d3cd3` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:12ae32cb1ec02d01` | `RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse` | `""` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:168` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:52109349dabf6910` | `RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse` | `" "` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:169` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:729e2865c247816a` | `RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse` | `"\t"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:170` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:d7a5e915306d21dc` | `RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse` | `"\n"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:171` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_MultipleItems_ReturnsOrderedCollection::test` | `RlvBlacklistTests.GetBlacklist_MultipleItems_ReturnsOrderedCollection` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:178` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `db9bd586b7a4f79ffd2d2c48c8131ccd4bd44d8de444696e9a7c53614ef37ed5` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_ReturnsImmutableCopy::test` | `RlvBlacklistTests.GetBlacklist_ReturnsImmutableCopy` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:197` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `64db7441c81ea4f0d2e52e79b479cf658fbd2c2d1d23b918edcfa03db1233a3a` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistWorkflow_AddMultipleBehaviors_WorksCorrectly::test` | `RlvBlacklistTests.BlacklistWorkflow_AddMultipleBehaviors_WorksCorrectly` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:215` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `75d84bd0b26b16821ba107bef2bbb2ae58a2726496a757092b24dff6170f8872` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_IntegrationWithRestrictionsBase_WorksCorrectly::test` | `RlvBlacklistTests.SeedBlacklist_IntegrationWithRestrictionsBase_WorksCorrectly` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:252` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `f7347786e3a579dc0102dc20fb73823362866ea71658777aa6835a28a58daea9` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_EmptyString_ResultsInEmptyBlacklist::test` | `RlvBlacklistTests.SeedBlacklist_EmptyString_ResultsInEmptyBlacklist` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:268` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `63555a93fbcc2b7691fdd2b79fe0db8cb305beef2c153b80f0040ba8f4f7117e` | -| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_WithSpaces_HandlesCorrectly::test` | `RlvBlacklistTests.SeedBlacklist_WithSpaces_HandlesCorrectly` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:279` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ddd764a51e179fa6c349ab2a62bdedde1e62e4ff2ae33aa41a4ebb2359974404` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:7da68a0c44d86b61` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"(spine)", RlvAttachmentPoint.Spine` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:8` | `` | `` | `pending source translation` | `pending` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:d4dfd612ab268dc7` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"(spine)(spine)", RlvAttachmentPoint.Spine` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:9` | `` | `` | `pending source translation` | `pending` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:58d5bce9d704814b` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"My (mouth) item (spine) has a lot of tags", RlvAttachmentPoint.Spine` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:10` | `` | `` | `pending source translation` | `pending` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:7c453569c08c0a0f` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"My item (l upper leg) and some random unknown tag (unknown)", RlvAttachmentPoint.LeftUpperLeg` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:11` | `` | `` | `pending source translation` | `pending` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:ace2eedabcda99e6` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"Central item (avatar center)", RlvAttachmentPoint.AvatarCenter` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:12` | `` | `` | `pending source translation` | `pending` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:1a967cd76f5fa058` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"Central item (root)", RlvAttachmentPoint.AvatarCenter` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:13` | `` | `` | `pending source translation` | `pending` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:f6b796736de6a5d8` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive` | `"(SPINE)", RlvAttachmentPoint.Spine` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:20` | `` | `` | `pending source translation` | `pending` | `cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:787d37133953ab32` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive` | `"(Spine)", RlvAttachmentPoint.Spine` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:21` | `` | `` | `pending source translation` | `pending` | `cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:d2056032186a0a97` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive` | `"Central item (Avatar center)", RlvAttachmentPoint.AvatarCenter` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:22` | `` | `` | `pending source translation` | `pending` | `cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:c1f038c1236211aa` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive` | `"Another item (l upper leg)", RlvAttachmentPoint.LeftUpperLeg` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:23` | `` | `` | `pending source translation` | `pending` | `cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:564c3e282f3b402f` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid` | `"(unknown)(hand tag)(spine tag)"` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:30` | `` | `` | `pending source translation` | `pending` | `c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:1d03935868fa6124` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid` | `"Hat"` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:31` | `` | `` | `pending source translation` | `pending` | `c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34` | -| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:12ae32cb1ec02d01` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid` | `""` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:32` | `` | `` | `pending source translation` | `pending` | `c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_NoRestrictions_ReturnsEmptyCollection::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_NoRestrictions_ReturnsEmptyCollection` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `327086a5aa514ddf8b2cc40891f7ae5e8039788f5cbfeda86f04bd9161f39ded` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_SingleRestriction_ReturnsSingleId::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_SingleRestriction_ReturnsSingleId` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:26` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `85a822c9e2e8beb2e70748513a397b8ccbb2977c0581b0519bd8ad43e699ad57` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleRestrictionsFromSameObject_ReturnsSingleId::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleRestrictionsFromSameObject_ReturnsSingleId` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:41` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `933070f933b0a5a39b3d0cd5fd9be9423a538609d0106b352a7d9c339665d6d1` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleObjects_ReturnsAllUniqueIds::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleObjects_ReturnsAllUniqueIds` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:58` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8c2afe66145e4815e73d7849f83cfec50e4a7a49793cc757917cd608c9387419` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MixedRestrictionsAndExceptions_ReturnsAllUniqueIds::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_MixedRestrictionsAndExceptions_ReturnsAllUniqueIds` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:79` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `25ea3c36aba93d5183816962bf49bfdbc3e17e6b06d73a41dee5b51407a84746` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_AfterRemovingRestriction_DoesNotReturnRemovedObjectId::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_AfterRemovingRestriction_DoesNotReturnRemovedObjectId` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:97` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `af3d5328e5c829bd2de2b72c3f4ede6f083efa789ccef1d73d752612a177360f` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_AfterClearingAllRestrictions_ReturnsEmptyCollection::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_AfterClearingAllRestrictions_ReturnsEmptyCollection` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:116` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `191a8cc3dba7e68155083a6892f1b4a29ab589023e22cffbc8cd69c005884cca` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_EmptyInput_NoEffect::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_EmptyInput_NoEffect` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:136` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `8718e08bb2bf951a94803b4947943b5f7f9eb85e906b4ac6c639cb8cd065cf9d` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_NonExistentId_NoEffect::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_NonExistentId_NoEffect` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:152` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `882d2315f40317cce9c9a026eda498325b6227886652795ed45e87cc4e5697ac` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_SingleObject_RemovesAllRestrictionsFromObject::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_SingleObject_RemovesAllRestrictionsFromObject` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:170` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `73ab6ee30a336372f6aef5bc4a99dbb58215b9445daea5d9708d0ea9cabe8bd1` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_MultipleObjects_RemovesOnlySpecifiedObjects::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_MultipleObjects_RemovesOnlySpecifiedObjects` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:193` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `03b6a6a3e02f6a6a5f296ff1d6cca31c9fc53982cbc9c27e73cfb698ed82acf5` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_PartialMatch_RemovesOnlyMatchingObjects::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_PartialMatch_RemovesOnlyMatchingObjects` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:220` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `00a26d807882b2bbb375c5ce7cf1074d3227acd891e859602e78abbdc6eefb6a` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithNotificationRestrictions_SendsNotifications::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithNotificationRestrictions_SendsNotifications` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:242` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `ba82b183dfdb01b36f9b45520e1808290c360f327d4afa833ba3b8c7a7cecffb` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:265` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `631de2d39fa56b29014fae4ce3b57c480f540ad41ce08a0037b7f8bbfcb3c502` | -| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:294` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `pending source translation` | `pending` | `318f1f4207b04d01076d3498aceea781c4889b05cdbef199cdbea43dde355f4c` | +| `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight::test` | `AdjustHeightCommandTests.AdjustHeight` | `` | `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:13 (`adjust_height`)` | `translated` | `fb3adb86988b10b2d3fe9223324f8a3c1ba7b8c2ea909ee6b57b38c590fed372` | +| `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight_WithDelta::test` | `AdjustHeightCommandTests.AdjustHeight_WithDelta` | `` | `LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs:30` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:24 (`adjust_height_with_delta`)` | `translated` | `1f37a125fd9df8585740d37c711888dfcd92460d86c19077f771d7f3fab54264` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:eee2b1b757fc196e` | `AttachAllCommandTests.AttachForce_Recursive` | `"attachall", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:468 (`attach_all_recursive`)` | `translated` | `17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:e6bc1820d9335b07` | `AttachAllCommandTests.AttachForce_Recursive` | `"attachalloverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:477 (`attach_all_over_or_replace_recursive`)` | `translated` | `17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:fb63a8c8c9b75b99` | `AttachAllCommandTests.AttachForce_Recursive` | `"attachallover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:486 (`attach_all_over_recursive`)` | `translated` | `17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:eee2b1b757fc196e` | `AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder` | `"attachall", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:61` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:495 (`attach_all_skips_hidden_subfolder`)` | `translated` | `f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:e6bc1820d9335b07` | `AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder` | `"attachalloverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:62` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:504 (`attach_all_over_or_replace_skips_hidden_subfolder`)` | `translated` | `f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:fb63a8c8c9b75b99` | `AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder` | `"attachallover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:63` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:517 (`attach_all_over_skips_hidden_subfolder`)` | `translated` | `f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:eee2b1b757fc196e` | `AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachall", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:107` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:526 (`attach_all_honors_recursive_add_folder`)` | `translated` | `6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:e6bc1820d9335b07` | `AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachalloverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:108` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:535 (`attach_all_over_or_replace_honors_recursive_add_folder`)` | `translated` | `6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:fb63a8c8c9b75b99` | `AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachallover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:109` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:548 (`attach_all_over_honors_recursive_add_folder`)` | `translated` | `6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:eee2b1b757fc196e` | `AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate` | `"attachall", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:155` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:557 (`attach_all_allows_private_source`)` | `translated` | `cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:e6bc1820d9335b07` | `AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate` | `"attachalloverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:156` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:566 (`attach_all_over_or_replace_allows_private_source`)` | `translated` | `cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:fb63a8c8c9b75b99` | `AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate` | `"attachallover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs:157` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:579 (`attach_all_over_allows_private_source`)` | `translated` | `cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:888 (`attach_all_this_recursive`)` | `translated` | `be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:896 (`attach_all_this_over_or_replace_recursive`)` | `translated` | `be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:909 (`attach_all_this_over_recursive`)` | `translated` | `be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:81` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:918 (`attach_all_this_recursive_by_id`)` | `translated` | `dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:82` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:926 (`attach_all_this_over_or_replace_recursive_by_id`)` | `translated` | `dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:83` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:939 (`attach_all_this_over_recursive_by_id`)` | `translated` | `dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:147` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:953 (`attach_all_this_skips_hidden_subfolder`)` | `translated` | `cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:148` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:961 (`attach_all_this_over_or_replace_skips_hidden_subfolder`)` | `translated` | `cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:149` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:974 (`attach_all_this_over_skips_hidden_subfolder`)` | `translated` | `cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:212` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:983 (`attach_all_this_honors_add_folder`)` | `translated` | `780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:213` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:991 (`attach_all_this_over_or_replace_honors_add_folder`)` | `translated` | `780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:214` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:1004 (`attach_all_this_over_honors_add_folder`)` | `translated` | `780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_AttachPoint` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:279` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:1018 (`attach_all_this_by_attachment_point`)` | `translated` | `4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_AttachPoint` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:280` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:1031 (`attach_all_this_over_or_replace_by_attachment_point`)` | `translated` | `4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_AttachPoint` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:281` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:1044 (`attach_all_this_over_by_attachment_point`)` | `translated` | `4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:bc5a9cb6a299a551` | `AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType` | `"attachallthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:352` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:1058 (`attach_all_this_by_wearable`)` | `translated` | `91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:0f04a34ae77465d3` | `AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType` | `"attachallthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:353` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:1071 (`attach_all_this_over_or_replace_by_wearable`)` | `translated` | `91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d` | +| `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:1560d5268a46ddf1` | `AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType` | `"attachallthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs:354` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:1084 (`attach_all_this_over_by_wearable`)` | `translated` | `91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:5e4fd9176ccab2f0` | `AttachCommandTests.AttachForce` | `"attach", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:281 (`attach_hats`)` | `translated` | `2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:1112c98c6420210d` | `AttachCommandTests.AttachForce` | `"attachoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:290 (`attach_over_or_replace_hats`)` | `translated` | `2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:0dd9d8fadf48e313` | `AttachCommandTests.AttachForce` | `"attachover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:299 (`attach_over_hats`)` | `translated` | `2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:5e4fd9176ccab2f0` | `AttachCommandTests.AttachForce_WithClothing` | `"attach", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:57` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:308 (`attach_clothing`)` | `translated` | `1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:1112c98c6420210d` | `AttachCommandTests.AttachForce_WithClothing` | `"attachoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:58` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:317 (`attach_over_or_replace_clothing`)` | `translated` | `1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:0dd9d8fadf48e313` | `AttachCommandTests.AttachForce_WithClothing` | `"attachover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:59` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:326 (`attach_over_clothing`)` | `translated` | `1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:2a7ad8f0a57b741d` | `AttachCommandTests.AttachForce_AlreadyAttached` | `"attach"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:101` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:335 (`attach_skips_already_attached`)` | `translated` | `751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:da775b6e5cf13e70` | `AttachCommandTests.AttachForce_AlreadyAttached` | `"attachoverorreplace"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:102` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:341 (`attach_over_or_replace_skips_already_attached`)` | `translated` | `751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:e59967ec103647cc` | `AttachCommandTests.AttachForce_AlreadyAttached` | `"attachover"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:103` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:354 (`attach_over_skips_already_attached`)` | `translated` | `751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:5e4fd9176ccab2f0` | `AttachCommandTests.AttachForce_PositionFromFolderName` | `"attach", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:146` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:367 (`attach_uses_position_from_folder_name`)` | `translated` | `6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:1112c98c6420210d` | `AttachCommandTests.AttachForce_PositionFromFolderName` | `"attachoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:147` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:380 (`attach_over_or_replace_uses_position_from_folder_name`)` | `translated` | `6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:0dd9d8fadf48e313` | `AttachCommandTests.AttachForce_PositionFromFolderName` | `"attachover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:148` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:393 (`attach_over_uses_position_from_folder_name`)` | `translated` | `6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:2a7ad8f0a57b741d` | `AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace` | `"attach"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:194` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:406 (`attach_honors_add_folder`)` | `translated` | `5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:da775b6e5cf13e70` | `AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachoverorreplace"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:195` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:415 (`attach_over_or_replace_honors_add_folder`)` | `translated` | `5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:e59967ec103647cc` | `AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachover"` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:196` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:428 (`attach_over_honors_add_folder`)` | `translated` | `5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:5e4fd9176ccab2f0` | `AttachCommandTests.AttachForce_AttachPrivateParentFolder` | `"attach", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:239` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:437 (`attach_allows_private_parent`)` | `translated` | `268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:1112c98c6420210d` | `AttachCommandTests.AttachForce_AttachPrivateParentFolder` | `"attachoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:240` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:446 (`attach_over_or_replace_allows_private_parent`)` | `translated` | `268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c` | +| `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:0dd9d8fadf48e313` | `AttachCommandTests.AttachForce_AttachPrivateParentFolder` | `"attachover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs:241` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:459 (`attach_over_allows_private_parent`)` | `translated` | `268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_Default` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:618 (`attach_this_default`)` | `translated` | `3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_Default` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:626 (`attach_this_over_or_replace_default`)` | `translated` | `3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_Default` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:639 (`attach_this_over_default`)` | `translated` | `3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_ById` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:79` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:648 (`attach_this_by_id`)` | `translated` | `3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_ById` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:80` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:656 (`attach_this_over_or_replace_by_id`)` | `translated` | `3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_ById` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:81` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:669 (`attach_this_over_by_id`)` | `translated` | `3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:a2681d046a6f6fef` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachthis"` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:144` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:678 (`attach_this_honors_add_folder`)` | `translated` | `67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:34172d9d6ebbcf53` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachthisoverorreplace"` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:145` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:686 (`attach_this_over_or_replace_honors_add_folder`)` | `translated` | `67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:30379630ffa50e68` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace` | `"attachthisover"` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:146` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:699 (`attach_this_over_honors_add_folder`)` | `translated` | `67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:210` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:708 (`attach_this_uses_folder_attachment_point`)` | `translated` | `c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:211` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:716 (`attach_this_over_or_replace_uses_folder_attachment_point`)` | `translated` | `c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:212` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:729 (`attach_this_over_uses_folder_attachment_point`)` | `translated` | `c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_FromHiddenSubfolder` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:278` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:738 (`attach_this_from_hidden_subfolder`)` | `translated` | `059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_FromHiddenSubfolder` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:279` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:746 (`attach_this_over_or_replace_from_hidden_subfolder`)` | `translated` | `059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_FromHiddenSubfolder` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:280` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:759 (`attach_this_over_from_hidden_subfolder`)` | `translated` | `059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_AttachPoint` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:344` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:768 (`attach_this_by_attachment_point`)` | `translated` | `9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_AttachPoint` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:345` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:781 (`attach_this_over_or_replace_by_attachment_point`)` | `translated` | `9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_AttachPoint` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:346` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:794 (`attach_this_over_by_attachment_point`)` | `translated` | `9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:6882162efd904e15` | `AttachThisCommandTests.AttachThis_RlvWearableType` | `"attachthis", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:414` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:808 (`attach_this_by_wearable`)` | `translated` | `1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:45b5361aae1131d0` | `AttachThisCommandTests.AttachThis_RlvWearableType` | `"attachthisoverorreplace", true` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:415` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:821 (`attach_this_over_or_replace_by_wearable`)` | `translated` | `1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3` | +| `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:f66e403049f440cf` | `AttachThisCommandTests.AttachThis_RlvWearableType` | `"attachthisover", false` | `LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs:416` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attach_commands_semantics.rs:834 (`attach_this_over_by_wearable`)` | `translated` | `1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3` | +| `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear::test` | `ClearCommandTests.Clear` | `` | `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:42 (`clear`)` | `translated` | `865d022233930e9582fec5b0e99063f15506a339c430755aba83706b594182ad` | +| `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_CaseInSensitive::test` | `ClearCommandTests.Clear_CaseInSensitive` | `` | `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs:25` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:57 (`clear_is_case_insensitive`)` | `translated` | `b70296f9d2b6c9eb8c6dd6e560056ab8320d746a991fafec858812fc2ebb3141` | +| `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_SenderBased::test` | `ClearCommandTests.Clear_SenderBased` | `` | `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs:39` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:72 (`clear_is_sender_based`)` | `translated` | `1ae70737411e18626227c0b15181572c1c623eefce0a8fa1a874b2229c44c38e` | +| `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_Filtered::test` | `ClearCommandTests.Clear_Filtered` | `` | `LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs:57` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:93 (`clear_is_filtered`)` | `translated` | `e0f0b5a42c3baf92fef6a8d4fc2c60dbd6963db6f844fed55b06968f0c9e543f` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive::test` | `DetachAllCommandTests.DetachAllForce_Recursive` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_commands_semantics.rs:81 (`detach_all_recursive`)` | `translated` | `45405dbca6c2b8bb9f439736d53c2ff60056252f4cdf6296bedcc14d2be9248e` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_EnforceRestrictions::test` | `DetachAllCommandTests.DetachAllForce_Recursive_EnforceRestrictions` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:85` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_commands_semantics.rs:86 (`detach_all_enforces_restrictions`)` | `translated` | `6186f5923009fb984daef726e8df44aff7cb65f74c2e381dd8cc9968f5534e43` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_PrivateTargetDir::test` | `DetachAllCommandTests.DetachAllForce_Recursive_PrivateTargetDir` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:154` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_commands_semantics.rs:91 (`detach_all_private_target`)` | `translated` | `300a323967b6258d1202190bbd3de7b91699231f7a5afa86204ba627cb61215f` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_PrivateSubFolders::test` | `DetachAllCommandTests.DetachAllForce_Recursive_PrivateSubFolders` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:226` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_commands_semantics.rs:96 (`detach_all_skips_private_subfolders`)` | `translated` | `e688b64d13f0a07f4bfeae0715fbfbf98c1d1fa64b0aefbd0e4e3d3d4dd98eee` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders::test` | `DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:298` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_commands_semantics.rs:101 (`detach_all_honors_nostrip_subfolders`)` | `translated` | `22cf1a159861c98c8a0f14ac63bafcbef21466c2ac01e615fe9ca4630d16f956` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders_LinkException::test` | `DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:370` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_commands_semantics.rs:106 (`detach_all_honors_link_exception`)` | `translated` | `cbe38368a6d4c59d72291195688d0c70898be5c3cceb02f09c5d386c3668fb07` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripItemName::test` | `DetachAllCommandTests.DetachAllForce_Recursive_NostripItemName` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs:450` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_commands_semantics.rs:111 (`detach_all_honors_nostrip_item`)` | `translated` | `ea0fab47cb1829338948f605919fcf1dca4f88d7965cdca4c7f457e399e4fbfc` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Default::test` | `DetachAllThisCommandTests.DetachAllThisForce_Default` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:117 (`detach_all_this_default`)` | `translated` | `8fe4eacf8cc5841e638d69540e2ab080efc3e64534346ece854429d0476f8a84` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Nostrip::test` | `DetachAllThisCommandTests.DetachAllThisForce_Nostrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:87` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:122 (`detach_all_this_honors_nostrip`)` | `translated` | `754bd01f2f0b77c05ee5d1548f76337da93d980a48ad0922d80f34707c4fe68b` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Nostrip_LinkException::test` | `DetachAllThisCommandTests.DetachAllThisForce_Nostrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:159` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:127 (`detach_all_this_honors_link_exception`)` | `translated` | `0cce15f7cfda160733c305b0867be31875e1814b38e2e980525d960e0214ad51` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById::test` | `DetachAllThisCommandTests.DetachAllThisForce_ById` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:237` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:135 (`detach_all_this_by_id`)` | `translated` | `2f657ffed317d4d7f97f6111942ea8214996872da6294f7c66d07890647f7f63` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip::test` | `DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:309` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:147 (`detach_all_this_by_id_honors_nostrip`)` | `translated` | `48ab7aec02efd652478ca3110dd39011fd9b79a1e0a1336f53e9f77b2f56e635` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip_LinkException::test` | `DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:382` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:159 (`detach_all_this_by_id_honors_link_exception`)` | `translated` | `5d882f00bfe73cecfc3e96c26ff18a20c00481619996b25ed2ce851eff9a86ce` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint::test` | `DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:461` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:171 (`detach_all_this_by_attachment_point`)` | `translated` | `30e6806d5c484bf2a2f9a3b1fcdb5e88272874b0e755462c3b0bfa97326d180c` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip::test` | `DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:534` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:179 (`detach_all_this_by_attachment_point_honors_nostrip`)` | `translated` | `657125be7aec668f72e744cc87cae38f022c8ccf9e8980c8ef4bea7e0557fdd1` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip_LinkException::test` | `DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:608` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:187 (`detach_all_this_by_attachment_point_honors_link_exception`)` | `translated` | `fe019191a9a3df9a43fd500db775ba5f874f4b767096365cba390480b2b2189f` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType::test` | `DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:688` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:195 (`detach_all_this_by_wearable`)` | `translated` | `ccf302d870f323790af63873fcbb172f084c4e7400a728e480378706b5fb9947` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip::test` | `DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:758` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:203 (`detach_all_this_by_wearable_honors_nostrip`)` | `translated` | `1947e7c9cfe8bb931ee7ad50c6f505515feeb9d30b236702a2d68fb4734a30f0` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip_LinkException::test` | `DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:829` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:211 (`detach_all_this_by_wearable_honors_link_exception`)` | `translated` | `50ec101ab557e78d947ac7f9878acd4df4957482f358a7ce02371df8754add94` | +| `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_PrivateFolder::test` | `DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_PrivateFolder` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs:906` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_all_this_commands_semantics.rs:219 (`detach_all_this_by_wearable_skips_private_folder`)` | `translated` | `2ba745b093f0348d8754f74073c6a6a0f18383b5ce4a73721b39b01f0306a994` | +| `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce::test` | `DetachMeCommandTests.DetachMeForce` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_me_commands_semantics.rs:62 (`detach_me`)` | `translated` | `fde065233689ec75c12e9607acf06c5859a91efea58e143ecc508ebec784a567` | +| `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_WithNoStripItemName_SpecialException::test` | `DetachMeCommandTests.DetachMeForce_WithNoStripItemName_SpecialException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs:79` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_me_commands_semantics.rs:67 (`detach_me_ignores_nostrip`)` | `translated` | `ee511230131312be9b788033aac8766ea3cb3c1f8d7c5b9b26a4bd6a83cd695c` | +| `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_WithLockedFolderRestriction::test` | `DetachMeCommandTests.DetachMeForce_WithLockedFolderRestriction` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs:146` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_me_commands_semantics.rs:72 (`detach_me_honors_locked_linked_folder`)` | `translated` | `05fefae0563306af0c491006f18915ff1b250b7972c82c160f20f06e07335887` | +| `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_MultipleLinksSameItem::test` | `DetachMeCommandTests.DetachMeForce_MultipleLinksSameItem` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs:224` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_me_commands_semantics.rs:77 (`detach_me_deduplicates_multiple_links`)` | `translated` | `1ae8a318762625819371fb109fd673e0d31a2c0354add1e65802eb54cb71e303` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_Default::test` | `DetachThisCommandTests.DetachThisForce_Default` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:101 (`detach_this_default`)` | `translated` | `ae8c0fd737f869ef3e2dbd97ae28974b35c6bbc5327151c0074d531efdaaf54e` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStrip::test` | `DetachThisCommandTests.DetachThisForce_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:87` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:109 (`detach_this_honors_item_nostrip`)` | `translated` | `3aa17222f7539814f8329e07de548cca4bb702f4b0409e793ea551327b0c57d0` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStripFolder::test` | `DetachThisCommandTests.DetachThisForce_NoStripFolder` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:159` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:117 (`detach_this_honors_folder_nostrip`)` | `translated` | `16b74c3bf8312ccb885e61f933ec9d292988d2e1fad05e0188006df5630681f8` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStripFolder_LinkException::test` | `DetachThisCommandTests.DetachThisForce_NoStripFolder_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:231` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:122 (`detach_this_honors_folder_link_exception`)` | `translated` | `b86b22a0ab30d0ded0cd6fbc7d34fae77e521861f5672b44a25a77325e594ab4` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById::test` | `DetachThisCommandTests.DetachThisForce_ById` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:305` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:130 (`detach_this_by_id`)` | `translated` | `3c4a211e5fefb44b42f50f6e6e58f8f852c8cf2d732bb6c3f737c3d6a592fa22` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripItemName::test` | `DetachThisCommandTests.DetachThisForce_ById_NostripItemName` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:376` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:138 (`detach_this_by_id_honors_item_nostrip`)` | `translated` | `f32926ca6f4328afdd3ddeb9f7bec8ff2ee01e9563555921ac8c663d20005551` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripFolderName::test` | `DetachThisCommandTests.DetachThisForce_ById_NostripFolderName` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:447` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:150 (`detach_this_by_id_honors_folder_nostrip`)` | `translated` | `bec3216bf016c2543a3410b069abd786167e04a7527253887f158127644656a8` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripFolderName_LinkException::test` | `DetachThisCommandTests.DetachThisForce_ById_NostripFolderName_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:518` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:162 (`detach_this_by_id_honors_link_exception`)` | `translated` | `1b5eb3a0bdef8ea65b800533ab3153dc6b3ea21d2f4f27e4820d0a0df48891a2` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint::test` | `DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:591` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:174 (`detach_this_by_attachment_point`)` | `translated` | `7e8f3a4d8b2cbdb5cc81eea598da6ef6395834b1cb7a629dc8d7ee2bfd80fab5` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip::test` | `DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:664` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:182 (`detach_this_by_attachment_point_honors_nostrip`)` | `translated` | `f6ff482bdb8d28414e01952201e37e49316b3e2345b0ff85dd4cb059193d1816` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip_LinkException::test` | `DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:738` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:190 (`detach_this_by_attachment_point_honors_link_exception`)` | `translated` | `289f8cc48f0e6a412d58258876e4aca08d8116d549642a0011bbdaf9b2223e83` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType::test` | `DetachThisCommandTests.DetachThisForce_ByRlvWearableType` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:813` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:198 (`detach_this_by_wearable`)` | `translated` | `51607294f12279974c2b44b47ba2eadca9846180a39bcde6a28c020dc4466254` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip::test` | `DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:883` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:206 (`detach_this_by_wearable_honors_nostrip`)` | `translated` | `30dec183993b2a644c2812ffc1c863e1714df134942f7827df818d9200e47c38` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip_LinkException::test` | `DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:955` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:214 (`detach_this_by_wearable_honors_link_exception`)` | `translated` | `62f59cf66f21dcac15cf3166dcec2183181c0b434e9eacba796eb7025c4f1ab3` | +| `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_PrivateFolder::test` | `DetachThisCommandTests.DetachThisForce_ByRlvWearableType_PrivateFolder` | `` | `LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs:1028` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_detach_this_commands_semantics.rs:222 (`detach_this_by_wearable_skips_private_folder`)` | `translated` | `dd40588598bd081189e7c4f284af3851a140155e2ede0ae2121dd59a156dc988` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach::case:bb1d34dc76ade75f` | `RemAttachCommandTests.RemAttach` | `"@detach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:177 (`detach_all_attachments`)` | `translated` | `16420d56c60229e8d8b6a2a0d63b1f500112c23cef451d69bb0ed97fe9b63bae` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach::case:c9faa5be8fef55e8` | `RemAttachCommandTests.RemAttach` | `"@remattach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:182 (`remattach_all_attachments`)` | `translated` | `16420d56c60229e8d8b6a2a0d63b1f500112c23cef451d69bb0ed97fe9b63bae` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip::case:bb1d34dc76ade75f` | `RemAttachCommandTests.RemAttach_NoStrip` | `"@detach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:83` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:187 (`detach_honors_nostrip`)` | `translated` | `5b3f1cbe99833e16c6f10ef568618627445babbcdfc9be555b48257bfdffeea7` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip::case:c9faa5be8fef55e8` | `RemAttachCommandTests.RemAttach_NoStrip` | `"@remattach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:84` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:192 (`remattach_honors_nostrip`)` | `translated` | `5b3f1cbe99833e16c6f10ef568618627445babbcdfc9be555b48257bfdffeea7` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip_LinkException::case:bb1d34dc76ade75f` | `RemAttachCommandTests.RemAttach_NoStrip_LinkException` | `"@detach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:154` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:197 (`detach_honors_nostrip_link_exception`)` | `translated` | `96a4b53d9e55dcd656c25af6619a3d0d67f5bc2517a759d722559a4ffb225472` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip_LinkException::case:c9faa5be8fef55e8` | `RemAttachCommandTests.RemAttach_NoStrip_LinkException` | `"@remattach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:155` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:205 (`remattach_honors_nostrip_link_exception`)` | `translated` | `96a4b53d9e55dcd656c25af6619a3d0d67f5bc2517a759d722559a4ffb225472` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ExternalItems::case:bb1d34dc76ade75f` | `RemAttachCommandTests.RemAttach_ExternalItems` | `"@detach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:227` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:213 (`detach_external_items`)` | `translated` | `7545f36532fcb7974a9e009e567b2342754a11da95eb3f17ee04089dcec42664` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ExternalItems::case:c9faa5be8fef55e8` | `RemAttachCommandTests.RemAttach_ExternalItems` | `"@remattach=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:228` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:221 (`remattach_external_items`)` | `translated` | `7545f36532fcb7974a9e009e567b2342754a11da95eb3f17ee04089dcec42664` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder::case:97eb7af1f9c3c62c` | `RemAttachCommandTests.RemAttach_ByFolder` | `"@detach:Clothing/Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:320` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:229 (`detach_by_folder`)` | `translated` | `583d3f596c80411d950038e3ec64032bee75150b8c819741fe89a4ca40eb2553` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder::case:1a04fd408fddaac0` | `RemAttachCommandTests.RemAttach_ByFolder` | `"@remattach:Clothing/Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:321` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:237 (`remattach_by_folder`)` | `translated` | `583d3f596c80411d950038e3ec64032bee75150b8c819741fe89a4ca40eb2553` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip::case:2117c838922f5ba4` | `RemAttachCommandTests.RemAttach_ByFolder_NoStrip` | `"@detach:Clothing/nostrip Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:387` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:245 (`detach_by_folder_honors_nostrip`)` | `translated` | `3a21b8ae807126d6f93ac95e16c47330b4146ace9781e9c9665ad493ee8c48b1` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip::case:11d4ca4fd3e35db1` | `RemAttachCommandTests.RemAttach_ByFolder_NoStrip` | `"@remattach:Clothing/nostrip Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:388` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:250 (`remattach_by_folder_honors_nostrip`)` | `translated` | `3a21b8ae807126d6f93ac95e16c47330b4146ace9781e9c9665ad493ee8c48b1` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException::case:2117c838922f5ba4` | `RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException` | `"@detach:Clothing/nostrip Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:455` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:261 (`detach_by_folder_honors_link_exception`)` | `translated` | `7c00e7dc70b3078d75009cf78a9fece889eee85f237c1a3c79c6249ae5e5327f` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException::case:11d4ca4fd3e35db1` | `RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException` | `"@remattach:Clothing/nostrip Hats=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:456` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:269 (`remattach_by_folder_honors_link_exception`)` | `translated` | `7c00e7dc70b3078d75009cf78a9fece889eee85f237c1a3c79c6249ae5e5327f` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint::case:644d3f75f3570ac3` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint` | `"@detach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:525` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:277 (`detach_by_attachment_point`)` | `translated` | `e09627228c1cf8311e56ac6660389bc1b268db8fd4f883dc40aaf3d2ec00916b` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint::case:53be219b37533fa6` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint` | `"@remattach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:526` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:285 (`remattach_by_attachment_point`)` | `translated` | `e09627228c1cf8311e56ac6660389bc1b268db8fd4f883dc40aaf3d2ec00916b` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip::case:644d3f75f3570ac3` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip` | `"@detach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:607` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:293 (`detach_by_attachment_point_honors_nostrip`)` | `translated` | `ffaaad92700d5d606154abdddd05c24c7584c5c3e55290df61e2b2a71d8148d7` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip::case:53be219b37533fa6` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip` | `"@remattach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:608` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:301 (`remattach_by_attachment_point_honors_nostrip`)` | `translated` | `ffaaad92700d5d606154abdddd05c24c7584c5c3e55290df61e2b2a71d8148d7` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException::case:644d3f75f3570ac3` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException` | `"@detach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:705` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:309 (`detach_by_attachment_point_honors_link_exception`)` | `translated` | `af1b1caf070a186bc2b02b598919b52d47c289d708fde3713e48ce1a40d7c025` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException::case:53be219b37533fa6` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException` | `"@remattach:chest=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:706` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:317 (`remattach_by_attachment_point_honors_link_exception`)` | `translated` | `af1b1caf070a186bc2b02b598919b52d47c289d708fde3713e48ce1a40d7c025` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_None::case:9a124e69f33b279f` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_None` | `"@detach:skull=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:805` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:325 (`detach_by_missing_attachment_point`)` | `translated` | `afed603254ad6048a46e157254f16253063e6c76c9ea16f46a69d8455bc0e6fb` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_None::case:800d7d8ba57071b1` | `RemAttachCommandTests.RemAttach_ByAttachmentPoint_None` | `"@remattach:skull=force"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:806` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:330 (`remattach_by_missing_attachment_point`)` | `translated` | `afed603254ad6048a46e157254f16253063e6c76c9ea16f46a69d8455bc0e6fb` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:871` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:335 (`detach_by_uuid`)` | `translated` | `4b1a8acea7f1bb100bf11e9329672c64b53aba4974558f1c693460eef7f56c2d` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:872` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:343 (`remattach_by_uuid`)` | `translated` | `4b1a8acea7f1bb100bf11e9329672c64b53aba4974558f1c693460eef7f56c2d` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:938` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:351 (`detach_by_uuid_honors_item_nostrip`)` | `translated` | `6857733912b45ef9153b0f58cd74ae6c9dc0034fa10933d153cae88a2c7d9423` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:939` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:356 (`remattach_by_uuid_honors_item_nostrip`)` | `translated` | `6857733912b45ef9153b0f58cd74ae6c9dc0034fa10933d153cae88a2c7d9423` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1005` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:361 (`detach_by_uuid_honors_folder_nostrip`)` | `translated` | `1a3189f931e086ab3d2d3e99c53dba2e9d39dce75a52fd02400c6892aef5d0c4` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1006` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:366 (`remattach_by_uuid_honors_folder_nostrip`)` | `translated` | `1a3189f931e086ab3d2d3e99c53dba2e9d39dce75a52fd02400c6892aef5d0c4` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1073` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:377 (`detach_by_uuid_honors_folder_link_exception`)` | `translated` | `bd7bc72a107b4a21b00977e13b086da192bef2c2e6f0fdb73b8e332016c6ef23` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1074` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:385 (`remattach_by_uuid_honors_folder_link_exception`)` | `translated` | `bd7bc72a107b4a21b00977e13b086da192bef2c2e6f0fdb73b8e332016c6ef23` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1143` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:393 (`detach_by_uuid_honors_restrictions`)` | `translated` | `2ecf40d1d338117ddac4cfd6c7a030e96b7adf72cd90e0d8327787317e1f38d7` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1144` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:398 (`remattach_by_uuid_honors_restrictions`)` | `translated` | `2ecf40d1d338117ddac4cfd6c7a030e96b7adf72cd90e0d8327787317e1f38d7` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_External::case:e5bdbdba9613b46a` | `RemAttachCommandTests.RemAttach_ByUUID_External` | `"detach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1211` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:403 (`detach_external_by_uuid`)` | `translated` | `e0bdc682df3416bdc01855e6e63974e64c21951aac629807352220baf572dded` | +| `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_External::case:7cb3f81460bd8e9f` | `RemAttachCommandTests.RemAttach_ByUUID_External` | `"remattach"` | `LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs:1212` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_attach_commands_semantics.rs:414 (`remattach_external_by_uuid`)` | `translated` | `e0bdc682df3416bdc01855e6e63974e64c21951aac629807352220baf572dded` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit::test` | `RemOutfitCommandTests.RemOutfit` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:130 (`remove_outfit`)` | `translated` | `60bd0e62bbd4613c4d2d1a65705644dc25fd7327408adfc0bb7e95c45d79cdcb` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_PrivateFolders::test` | `RemOutfitCommandTests.RemOutfit_PrivateFolders` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:83` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:138 (`remove_outfit_in_private_folders`)` | `translated` | `d79ac3806f50915390edd0a24b756ef398c1334017f69d16f4cb887dcdd41fb1` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems::test` | `RemOutfitCommandTests.RemOutfit_ExternalItems` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:153` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:146 (`remove_outfit_external_items`)` | `translated` | `0265a9fee1070cbcc458bfcb05fe267991cbdb5480500c1b32aace1eb4935217` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip::test` | `RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:235` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:154 (`remove_outfit_external_items_honors_nostrip`)` | `translated` | `b93d39d919fb70b02ccdb724969f7b983c726c707bca96e1b1ddc6ee248a734f` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip_LinkException::test` | `RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:330` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:162 (`remove_outfit_external_items_honors_link_exception`)` | `translated` | `5ecc44228573645e0a0c78d100dab54b793c6ce8dc50a02d79a919fe6d7c1678` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_ByType::test` | `RemOutfitCommandTests.RemOutfit_ExternalItems_ByType` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:428` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:170 (`remove_outfit_external_items_by_type`)` | `translated` | `8ba106f071f8768af1d6213c04f67dd0aec846ae47552686eba86c489bdb0292` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder::test` | `RemOutfitCommandTests.RemOutfit_Folder` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:508` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:178 (`remove_outfit_folder`)` | `translated` | `45f9e7a9d0ef99ec7d58b59f1c1db7b6065994939717842bb02486b470b357b5` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_PrivateFolder::test` | `RemOutfitCommandTests.RemOutfit_Folder_PrivateFolder` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:573` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:186 (`remove_outfit_private_folder`)` | `translated` | `68f3050a1b667304ff2b252690cc7d1994964dbd2c7633d54e5c6654714c0aed` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStrip::test` | `RemOutfitCommandTests.RemOutfit_Folder_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:640` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:194 (`remove_outfit_folder_honors_item_nostrip`)` | `translated` | `d56b83a72d6d3529af0390674550ce40733c14de6210cf71e277f0e195d1e330` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName::test` | `RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:706` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:199 (`remove_outfit_folder_honors_folder_nostrip`)` | `translated` | `a28f5517a9d05085627d5acaf33441d598912301962f6e99aaff49ef5114af53` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName_LinkException::test` | `RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:772` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:210 (`remove_outfit_folder_honors_link_exception`)` | `translated` | `80efc201f976365e68d32ae1b30db0f10a17cbc65aedc82895ffa679700008da` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific::test` | `RemOutfitCommandTests.RemOutfit_Specific` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:841` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:221 (`remove_outfit_specific`)` | `translated` | `7235143679739442ec942d294a8a68f69b7fb5678ed4e3ca03be35c74e9c71a9` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_PrivateFolder::test` | `RemOutfitCommandTests.RemOutfit_Specific_PrivateFolder` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:907` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:229 (`remove_outfit_specific_private_folder`)` | `translated` | `3feea26f000dc7eb86b1413f1a5bdd5f109c5f9f969918cd1ce2e7f926f26c12` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_NoStrip::test` | `RemOutfitCommandTests.RemOutfit_Specific_NoStrip` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:975` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:237 (`remove_outfit_specific_honors_nostrip`)` | `translated` | `6e4b8bc53933a889df1cf553ca7e0601e5061bb87013a4075c2ff357cc9d987f` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_NoStrip_LinkException::test` | `RemOutfitCommandTests.RemOutfit_Specific_NoStrip_LinkException` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:1042` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:245 (`remove_outfit_specific_honors_link_exception`)` | `translated` | `72b1409f70531d859f15a012cb1fb03d795d2065c5d03b7a263d352ca4b80e98` | +| `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_BodyPart_Specific::test` | `RemOutfitCommandTests.RemOutfit_BodyPart_Specific` | `` | `LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs:1112` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_rem_outfit_commands_semantics.rs:253 (`remove_outfit_does_not_remove_body_part`)` | `translated` | `13804c96395db86821371dc8f2cacd2cb182338f8ea88034afcc5da19e3f0691` | +| `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Default::case:fa77559e30768d15` | `SetDebugCommandTests.SetDebug_Default` | `"RenderResolutionDivisor", "RenderResolutionDivisor Success"` | `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:117 (`set_debug_known_setting`)` | `translated` | `abcee425068df326a3258ab4d881218e6eee52523fa5d306b191308e85dfff3d` | +| `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Default::case:55694f25ed879d95` | `SetDebugCommandTests.SetDebug_Default` | `"Unknown Setting", "Unknown Setting Success"` | `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:129 (`set_debug_unknown_setting`)` | `translated` | `abcee425068df326a3258ab4d881218e6eee52523fa5d306b191308e85dfff3d` | +| `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Invalid::test` | `SetDebugCommandTests.SetDebug_Invalid` | `` | `LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs:32` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:138 (`set_debug_rejects_empty_name`)` | `translated` | `2e0595319ba8e2c9a8280c5b034363ad7998eb740cb6b7fff3d75bb0167c6464` | +| `LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs::SetEnvCommandTests.SetEnv_Default::case:f656b648d00a6d91` | `SetEnvCommandTests.SetEnv_Default` | `"Daytime", "Daytime Success"` | `LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:152 (`set_environment_known_setting`)` | `translated` | `836c1332ca9c4f645e5c9dca8b4a2b967d55fd8148901b05ce5d741e665ab7e1` | +| `LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs::SetEnvCommandTests.SetEnv_Default::case:55694f25ed879d95` | `SetEnvCommandTests.SetEnv_Default` | `"Unknown Setting", "Unknown Setting Success"` | `LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:161 (`set_environment_unknown_setting`)` | `translated` | `836c1332ca9c4f645e5c9dca8b4a2b967d55fd8148901b05ce5d741e665ab7e1` | +| `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByName::test` | `SetGroupCommandTests.SetGroup_ByName` | `` | `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:170 (`set_group_by_name`)` | `translated` | `fae27e58cd981f5471f4c2b8356bb07aa5e76a57aaf0882d0dbfb86360e077e3` | +| `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByNameAndRole::test` | `SetGroupCommandTests.SetGroup_ByNameAndRole` | `` | `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs:32` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:181 (`set_group_by_name_and_role`)` | `translated` | `408442b86bb8259eb9bbb4cf8a5d3b0830c7ba9357fa04cb6e851511a7a24df1` | +| `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ById::test` | `SetGroupCommandTests.SetGroup_ById` | `` | `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs:50` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:192 (`set_group_by_id`)` | `translated` | `27f13c52c8c5e2e4298fee3f4322f9906d5f82e900aa5f46c9a8ffac3a6dfae7` | +| `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByIdAndRole::test` | `SetGroupCommandTests.SetGroup_ByIdAndRole` | `` | `LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs:70` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:203 (`set_group_by_id_and_role`)` | `translated` | `e18fd0c318ebd4f9a189418449568b3a34b8f7d3a0097f100a7253c4d5a31bde` | +| `LibreMetaverse.Tests/RLV/Commands/SetRotCommandTests.cs::SetRotCommandTests.SetRot::test` | `SetRotCommandTests.SetRot` | `` | `LibreMetaverse.Tests/RLV/Commands/SetRotCommandTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:214 (`set_rotation`)` | `translated` | `c3302d63cdda9d72b85dad2749e2684cc26d51c72ddc6ace8275911f8ba67ef4` | +| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_Default::test` | `SitCommandTests.ForceSit_Default` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:28` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:233 (`force_sit`)` | `translated` | `24e45ba898cb8ed0919369d07a39d0b21982fa4fc4c41eb4835ba765c05e2469` | +| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedUnsit_WhileStanding::test` | `SitCommandTests.ForceSit_RestrictedUnsit_WhileStanding` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:50` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:241 (`force_sit_with_unsit_restricted_while_standing`)` | `translated` | `8d179277f6a7f98ead813de7bd02ab5146b46ce240d1d5e4a69037885e5f626a` | +| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedUnsit_WhileSeated::test` | `SitCommandTests.ForceSit_RestrictedUnsit_WhileSeated` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:74` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:250 (`force_sit_rejects_unsit_restriction_while_seated`)` | `translated` | `1f2debd6e644c86698577e1c04db96d6aac43267ceae8de9f28435b62ff92817` | +| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedSit::test` | `SitCommandTests.ForceSit_RestrictedSit` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:95` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:259 (`force_sit_rejects_sit_restriction`)` | `translated` | `8ac0964fc07bb5e860123ce8de1102c2254ffde28f246896d81f7524c3c87021` | +| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedStandTp::test` | `SitCommandTests.ForceSit_RestrictedStandTp` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:115` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:268 (`force_sit_rejects_standtp_restriction`)` | `translated` | `bc0c259477ef5f1e5a76b1081f604ba421c82340f738e37fd52b91a421037cf6` | +| `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_InvalidObject::test` | `SitCommandTests.ForceSit_InvalidObject` | `` | `LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs:135` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:277 (`force_sit_rejects_invalid_object`)` | `translated` | `787bfe6fefe3895b4bcb5da027ffeac70bf67c3c7a295dbbf7e1526156290040` | +| `LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs::SitGroundCommandTests.ForceSitGround::test` | `SitGroundCommandTests.ForceSitGround` | `` | `LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:285 (`force_sit_ground`)` | `translated` | `2319cd49aaae5ac824bc5ffd4f33a5e4f3f684ebec1dc1f1732071eb44ee1cb8` | +| `LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs::SitGroundCommandTests.ForceSitGround_RestrictedSit::test` | `SitGroundCommandTests.ForceSitGround_RestrictedSit` | `` | `LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:292 (`force_sit_ground_rejects_sit_restriction`)` | `translated` | `5ac661e9f7fa93cf6ca76aa69f6d84ac61ebd22f26620203f084777010b6de4d` | +| `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_Default::test` | `TpToCommandTests.TpTo_Default` | `` | `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:306 (`teleport_default`)` | `translated` | `1613e723da60f84dfb54a7345b96566a055a9b7a017e66b0929d6f37c04b62a3` | +| `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_WithRegion::test` | `TpToCommandTests.TpTo_WithRegion` | `` | `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs:31` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:321 (`teleport_with_region`)` | `translated` | `50c5f63c5cb0da221846fd7c0c7f2d471bef2aa2ab203a9b5bdb4eceeb3d97bf` | +| `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_WithRegionAndLookAt::test` | `TpToCommandTests.TpTo_WithRegionAndLookAt` | `` | `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs:49` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:336 (`teleport_with_region_and_look_at`)` | `translated` | `c9030189de7acdad0db5c8f83e49ee0433ec0588a35436ab39cdcf40a4fd4d36` | +| `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_RestrictedUnsit::test` | `TpToCommandTests.TpTo_RestrictedUnsit` | `` | `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs:67` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:352 (`teleport_rejects_unsit_restriction`)` | `translated` | `4dc00a1048593f7468271a4262cf311a3516ea4a53e288eeca69d1297dafc9f2` | +| `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_RestrictedTpLoc::test` | `TpToCommandTests.TpTo_RestrictedTpLoc` | `` | `LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs:83` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:361 (`teleport_rejects_tploc_restriction`)` | `translated` | `3e1ecc1d04973a496edf9d156e52ba76a93ff431181a3ece93c0e4f82884895a` | +| `LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs::UnsitCommandTests.ForceUnSit::test` | `UnsitCommandTests.ForceUnSit` | `` | `LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:370 (`force_unsit`)` | `translated` | `2f91e1112e1c4e97b79a4dc7bcd4d4a85f13125bd636f81147ce5b396366ebed` | +| `LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs::UnsitCommandTests.ForceUnSit_RestrictedUnsit::test` | `UnsitCommandTests.ForceUnSit_RestrictedUnsit` | `` | `LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_commands_semantics.rs:377 (`force_unsit_rejects_unsit_restriction`)` | `translated` | `2ecf210dc83b06018cdcf44cb44bdf43f1040133e7523542a2e1126d6d98004f` | +| `LibreMetaverse.Tests/RLV/Exceptions/AcceptPermissionExceptionTests.cs::AcceptPermissionExceptionTests.AcceptPermission::test` | `AcceptPermissionExceptionTests.AcceptPermission` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AcceptPermissionExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:39 (`accept_permission_add_and_remove`)` | `translated` | `a5ffc51718e89fb872c6df8b8667f6d231618d47a2ffc71d596e8e10e15cb02e` | +| `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs::AcceptTpExceptionTests.CanAutoAcceptTp_User::test` | `AcceptTpExceptionTests.CanAutoAcceptTp_User` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:59 (`accept_tp_specific_user`)` | `translated` | `e988496e81a717eae1a96c5501e748a441fa64f637aaa47a6ae7a8d571c30f6e` | +| `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs::AcceptTpExceptionTests.CanAutoAcceptTp_All::test` | `AcceptTpExceptionTests.CanAutoAcceptTp_All` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs:24` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:78 (`accept_tp_all_users`)` | `translated` | `428ec184c9d09f6ec57ac3429180f327ed1b79e9d9dea9815df3bb6f0f6244fd` | +| `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs::AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_User::test` | `AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_User` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:97 (`accept_tp_request_specific_user`)` | `translated` | `3a5af1a55e74b5e75a04abc11826ded17c327ac2ed99ab2a423674fbb0e61f31` | +| `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs::AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_All::test` | `AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_All` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs:24` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:116 (`accept_tp_request_all_users`)` | `translated` | `8e2cf7c4d17dcec4d7855fc430092699416108966fb5d97c170c13f0bcd04cfe` | +| `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll::test` | `AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_folder_exception_semantics.rs:123 (`attach_all_this_except_subtree`)` | `translated` | `1daa414beb2a767518f335f6ae59e711395375ed9d7912fbbc139fa0998dfdb1` | +| `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive::test` | `AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs:95` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_folder_exception_semantics.rs:137 (`attach_all_this_except_recursive_subtree`)` | `translated` | `6e0c78d6ed78bedca9a8c6a9a83fd9f90f7123da433eb4c560e6f5c0b6fe6d94` | +| `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive_AddRem::test` | `AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive_AddRem` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs:194` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_folder_exception_semantics.rs:148 (`attach_all_this_recursive_exception_removed`)` | `translated` | `9423ed205501604501d31909414ecf6ef99a0d56d4efae100f5576b31b71a858` | +| `LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs::AttachThisExceptExceptionTests.AttachThisExcept_Default::test` | `AttachThisExceptExceptionTests.AttachThisExcept_Default` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_folder_exception_semantics.rs:163 (`attach_this_except_folder`)` | `translated` | `b8e6e55d8f2654429c9826e38ffc8522eec44ab2521891b68616db61ac662db0` | +| `LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs::AttachThisExceptExceptionTests.AttachThisExcept_AddRem::test` | `AttachThisExceptExceptionTests.AttachThisExcept_AddRem` | `` | `LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs:114` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_folder_exception_semantics.rs:174 (`attach_this_exception_removed`)` | `translated` | `05bc7eab5dd02a0a3e60f85eb51b374623aaa29c9ce2b522748a3478b8ee44ea` | +| `LibreMetaverse.Tests/RLV/Exceptions/DenyPermissionExceptionTests.cs::DenyPermissionExceptionTests.DenyPermission::test` | `DenyPermissionExceptionTests.DenyPermission` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DenyPermissionExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:135 (`deny_permission_add_and_remove`)` | `translated` | `c2284b63e7b4a93f8613a3afe34466d14e1c6ed8528656d54ae64ca6d081cdd5` | +| `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll::test` | `DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_folder_exception_semantics.rs:189 (`detach_all_this_except_subtree`)` | `translated` | `75e7ab22f6d9d058580fd83741d65f7e5babb7ad54805eaeb16bec8cd65370ed` | +| `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive::test` | `DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs:73` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_folder_exception_semantics.rs:203 (`detach_all_this_except_recursive_subtree`)` | `translated` | `3fb8bb13d6a917d9be18265d90767488cde66746badc6584025bbbaf84f020ad` | +| `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive_AddRem::test` | `DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive_AddRem` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs:172` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_folder_exception_semantics.rs:214 (`detach_all_this_recursive_exception_removed`)` | `translated` | `fb5fd8a4eda181d22d1756ec0cae700c4b90895a74dc79c24c67c1705cfd37c8` | +| `LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs::DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except::test` | `DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_folder_exception_semantics.rs:229 (`detach_this_except_folder`)` | `translated` | `3222d97d73d8b54bd11212f8cd3de26279040321f0bc330e061ff93880053f3e` | +| `LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs::DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except_AddRem::test` | `DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except_AddRem` | `` | `LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs:95` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_folder_exception_semantics.rs:240 (`detach_this_exception_removed`)` | `translated` | `d25b2c533b9b51428c0c2414d687c466a3c80c4a573dd36763504de19e8dc6f8` | +| `LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs::EditExceptionTests.CanEdit_Exception::test` | `EditExceptionTests.CanEdit_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:145 (`edit_exception_allows_one_object`)` | `translated` | `e435b03faef04dfe06d0cbec76e94cbf30e61ad7bc08502728f9239cf47292f8` | +| `LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs::EditExceptionTests.CanEdit_Specific::test` | `EditExceptionTests.CanEdit_Specific` | `` | `LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs:33` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:170 (`edit_object_restricts_only_one_object`)` | `translated` | `db097167497bc650c6729f0687924adedda7097b4089107fc5ea03716c1cb4e5` | +| `LibreMetaverse.Tests/RLV/Exceptions/EmoteExceptionTests.cs::EmoteExceptionTests.CanEmote::test` | `EmoteExceptionTests.CanEmote` | `` | `LibreMetaverse.Tests/RLV/Exceptions/EmoteExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:195 (`emote_exception_add_and_remove`)` | `translated` | `a643401539d7258ae04ddebaf9c82876f59c4433b11ee61bfe8b416058c9fe38` | +| `LibreMetaverse.Tests/RLV/Exceptions/RecvChatExceptionTests.cs::RecvChatExceptionTests.CanRecvChat_Except::test` | `RecvChatExceptionTests.CanRecvChat_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RecvChatExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:205 (`receive_chat_exception_allows_user_chat_and_emote`)` | `translated` | `b34881785cf2df3d8f4e5ba971adcf2144d8de4db00acfbe136c79457742ec33` | +| `LibreMetaverse.Tests/RLV/Exceptions/RecvEmoteExceptionTests.cs::RecvEmoteExceptionTests.CanRecvChat_RecvEmote_Except::test` | `RecvEmoteExceptionTests.CanRecvChat_RecvEmote_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RecvEmoteExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:225 (`receive_emote_exception_only_allows_selected_user_emotes`)` | `translated` | `d4647d71c02e05405ae2acf7b58522aae559b1c90a4f7a1521c9a9a383220f8a` | +| `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception::test` | `RecvImExceptionTests.CanReceiveIM_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:280 (`receive_im_exception_for_user`)` | `translated` | `2e1afba517b29e8e7f2e0605340eb6e87443282857400eba259f0ebdf4874e23` | +| `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception_SingleGroup::test` | `RecvImExceptionTests.CanReceiveIM_Exception_SingleGroup` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs:22` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:286 (`receive_im_exception_for_group`)` | `translated` | `9ec57daeed225caf960d00f0c83378d1836e86b1896063703ee1c3a38c7b582a` | +| `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception_AllGroups::test` | `RecvImExceptionTests.CanReceiveIM_Exception_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs:33` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:292 (`receive_im_exception_for_all_groups`)` | `translated` | `633b8c680b583a6f8d80335c26f4ebcec77f9d8d5231e49bea562dcb66f00267` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat::test` | `RedirChatExceptionTests.IsRedirChat` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:316 (`redirect_chat_channel`)` | `translated` | `1eb25c5579789db22ee242c4b52c65989bd26dce6d7577021c329c6c49be9414` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_Removed::test` | `RedirChatExceptionTests.IsRedirChat_Removed` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:26` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:322 (`redirect_chat_channel_removed`)` | `translated` | `62e03ff1db1e790d8bc1e38ac1495fc12723ba2eb5c9d6035d73c9fdb91a44ad` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_MultipleChannels::test` | `RedirChatExceptionTests.IsRedirChat_MultipleChannels` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:35` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:337 (`redirect_chat_multiple_channels`)` | `translated` | `c7d0c428d121ab80eee9b6b5855cbe50e7a4cd74e81c369da09df04d55c7554f` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChat::test` | `RedirChatExceptionTests.IsRedirChat_RedirectChat` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:52` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:361 (`redirect_chat_sends_public_message`)` | `translated` | `c4a083e495a578c1ed0855c43680d5b05144bf627f06df48c82e089e6f0699bf` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChatMultiple::test` | `RedirChatExceptionTests.IsRedirChat_RedirectChatMultiple` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:69` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:372 (`redirect_chat_sends_to_multiple_channels`)` | `translated` | `5ff8665440d8d02e0aa900121e591034d51e2b48ca62fdec2fbc9135f8c83428` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChatEmote::test` | `RedirChatExceptionTests.IsRedirChat_RedirectChatEmote` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs:89` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:383 (`redirect_chat_does_not_redirect_emote`)` | `translated` | `5d88009e3e8d365c52315a9b189f6cffdc9d04fdb70aa26bcc03d6bc16227189` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote::test` | `RedirEmoteExceptionTests.IsRedirEmote` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:394 (`redirect_emote_channel`)` | `translated` | `02170a2b3eb0cbb88921517c9742d2fc0baaea7a621e5a3c3264a7a17d5efb61` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_Removed::test` | `RedirEmoteExceptionTests.IsRedirEmote_Removed` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:25` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:400 (`redirect_emote_channel_removed`)` | `translated` | `6ee89cedfd1e2d79d2447f2f48d1e2d1ac96295485b7509fe09f98e3bfcd9766` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_MultipleChannels::test` | `RedirEmoteExceptionTests.IsRedirEmote_MultipleChannels` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:34` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:415 (`redirect_emote_multiple_channels`)` | `translated` | `1a95f4cc5db96cf033fed0c1a4e573b1cb1ac17ef72b76e0ce115c051f10528a` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmote::test` | `RedirEmoteExceptionTests.IsRedirEmote_RedirectEmote` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:51` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:421 (`redirect_emote_sends_emote`)` | `translated` | `525297be5b5ff466fc9a61f2bc87af38bd637cbef8e0c794e897e021d0cca464` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteMultiple::test` | `RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteMultiple` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:68` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:432 (`redirect_emote_sends_to_multiple_channels`)` | `translated` | `fd6af49a90e111ed6424c85565242e1205e13604b529909f7be0260e93f0b1c6` | +| `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteChat::test` | `RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteChat` | `` | `LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs:88` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:454 (`redirect_emote_does_not_redirect_chat`)` | `translated` | `e8b78a6a34e3d3acdfc6d454b46a939d341260362ae5327dc4b70164d41431aa` | +| `LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptExceptionTests.cs::SendChannelExceptExceptionTests.CanSendChannelExcept::test` | `SendChannelExceptExceptionTests.CanSendChannelExcept` | `` | `LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:465 (`send_channel_exception_blocks_only_selected_channel`)` | `translated` | `08c309d08681fe067f67315a72014d0a05c87d6e14632fa04f6f2fb617d61be3` | +| `LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptionTests.cs::SendChannelExceptionTests.CanSendChannel_Exception::test` | `SendChannelExceptionTests.CanSendChannel_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:484 (`send_channel_adds_allowed_channel`)` | `translated` | `49bcacb6fb31d596ce9afc73099f8aaf645156ee222262174e1d7fed08393cf9` | +| `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception::test` | `SendImExceptionTests.CanSendIM_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:497 (`send_im_exception_for_user`)` | `translated` | `8124011921e8d4caf6840e960bd9f98d21df9db476e1726e0d54550cb8527ceb` | +| `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception_SingleGroup::test` | `SendImExceptionTests.CanSendIM_Exception_SingleGroup` | `` | `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs:21` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:503 (`send_im_exception_for_group`)` | `translated` | `b55a4bdba1d33652f3809c3478047afc65757fbe1dec6c5292e17b71a04b206c` | +| `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception_AllGroups::test` | `SendImExceptionTests.CanSendIM_Exception_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs:32` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:513 (`send_im_exception_for_all_groups`)` | `translated` | `4190ff51848f63dce5682317db79da23fa19ad9e53004534382f3eb6e8544788` | +| `LibreMetaverse.Tests/RLV/Exceptions/ShareExceptionTests.cs::ShareExceptionTests.CanShare_Except::test` | `ShareExceptionTests.CanShare_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/ShareExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:542 (`share_exception_for_user`)` | `translated` | `37297059a814bfde94c466e263a429258cce11ae258afd7953d26f65f9178f1d` | +| `LibreMetaverse.Tests/RLV/Exceptions/ShowNameTagsExceptionTests.cs::ShowNameTagsExceptionTests.CanShowNameTags_Except::test` | `ShowNameTagsExceptionTests.CanShowNameTags_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/ShowNameTagsExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:554 (`show_name_tags_exception_for_user`)` | `translated` | `5d1fe4ec1fa289623d473ffae1682ed725735cbdf48bdf5b7fed086237e32a1a` | +| `LibreMetaverse.Tests/RLV/Exceptions/ShowNamesExceptionTests.cs::ShowNamesExceptionTests.CanShowNames_Except::test` | `ShowNamesExceptionTests.CanShowNames_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/ShowNamesExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:566 (`show_names_exception_for_user`)` | `translated` | `b11578e758631037440dd56a683a3ffc25b576eaa25e7388c950d8d647eb2a75` | +| `LibreMetaverse.Tests/RLV/Exceptions/StartImExceptionTests.cs::StartImExceptionTests.CanStartIM_Exception::test` | `StartImExceptionTests.CanStartIM_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/StartImExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:578 (`start_im_exception_for_user`)` | `translated` | `e0001ffc665f0f39833cf2376ea1fcb7559bdb87a48ea60bb348e14b078880e4` | +| `LibreMetaverse.Tests/RLV/Exceptions/TouchMeExceptionTests.cs::TouchMeExceptionTests.TouchMe_default::test` | `TouchMeExceptionTests.TouchMe_default` | `` | `LibreMetaverse.Tests/RLV/Exceptions/TouchMeExceptionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:587 (`touch_me_exception_allows_sender_and_hud`)` | `translated` | `a0f3ffd3c70263738c074e258d9271e0a825f163c40d9c7ee8d20865873eb304` | +| `LibreMetaverse.Tests/RLV/Exceptions/TouchThisExceptionTests.cs::TouchThisExceptionTests.TouchThis_default::test` | `TouchThisExceptionTests.TouchThis_default` | `` | `LibreMetaverse.Tests/RLV/Exceptions/TouchThisExceptionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:644 (`touch_this_exception_blocks_only_selected_prim`)` | `translated` | `e7e6c9e14badb0159f81adc96e17fcf3ebe2cf5351ec6465f03c430de06d85d2` | +| `LibreMetaverse.Tests/RLV/Exceptions/TouchWorldExceptionTests.cs::TouchWorldExceptionTests.TouchWorld_Exception::test` | `TouchWorldExceptionTests.TouchWorld_Exception` | `` | `LibreMetaverse.Tests/RLV/Exceptions/TouchWorldExceptionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:675 (`touch_world_exception_allows_selected_world_prim`)` | `translated` | `ffef2f112b5718bab7b01fc1b624e588c181dadc5c50fd85de4404a501ee6f37` | +| `LibreMetaverse.Tests/RLV/Exceptions/TpLureExceptionTests.cs::TpLureExceptionTests.CanTpLure_Except::test` | `TpLureExceptionTests.CanTpLure_Except` | `` | `LibreMetaverse.Tests/RLV/Exceptions/TpLureExceptionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_exception_semantics.rs:733 (`tp_lure_exception_for_user`)` | `translated` | `a32f4cdda5b48ffcaced683b2e77fc129c1c321951aa2e16623eea022f2aa0b9` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_Normal::test` | `InventoryMapTests.TryGetFolderFromPath_Normal` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:39 (`try_get_folder_from_normal_path`)` | `translated` | `97787ac6b51198e317ed391e91125724ce1b580924c40500f81186812b45f625` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_EmptyPath::test` | `InventoryMapTests.TryGetFolderFromPath_EmptyPath` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:43` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:51 (`try_get_folder_rejects_empty_path`)` | `translated` | `0ffd4f32e285ba94e94f63ac312d3be20bf144b769e8d18af32e15f481042ed7` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlash::test` | `InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlash` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:75` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:57 (`try_get_folder_when_name_contains_slash`)` | `translated` | `90ae520739ea1a2612f491bb110b0870ed4dcb8a983aad9526ed25d8c5cbe687` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlashes::test` | `InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlashes` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:109` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:69 (`try_get_folder_when_names_contain_multiple_slashes`)` | `translated` | `8c0ed3c6cc16b916f9df8d25d55618e82299fd1bcd66983f682219c338853028` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashPrefix::test` | `InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashPrefix` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:144` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:81 (`try_get_folder_with_slash_prefix`)` | `translated` | `8a86081d6b25ae50b3cf8cdcb1c58c8539264931ab74f395dfc7345ee7f4f861` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashSuffix::test` | `InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashSuffix` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:178` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:93 (`try_get_folder_with_slash_suffix`)` | `translated` | `04afafa569b7a10d6add8c1e9d8f26ac502791f1da2dbdb3e37407e945c87872` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashAffix::test` | `InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashAffix` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:212` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:105 (`try_get_folder_with_slash_affix`)` | `translated` | `7eaec38fa6b545f133748b502169fab575308c9c4e60548cfbfd704452bd9761` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_ContendingFoldersWithSlashes::test` | `InventoryMapTests.TryGetFolderFromPath_ContendingFoldersWithSlashes` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:247` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:117 (`try_get_folder_prefers_exact_slash_match`)` | `translated` | `96a8189266746a564072122342f36b3321998f3e0cbe0094f3e4c83d29bc53d5` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_InvalidPath::test` | `InventoryMapTests.TryGetFolderFromPath_InvalidPath` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:287` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:148 (`try_get_folder_rejects_invalid_path`)` | `translated` | `547def910ded67bc7950b211ad929f775d4eff26e351d11612f146b3e863510e` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_IgnoreFolderPrefix::test` | `InventoryMapTests.TryGetFolderFromPath_IgnoreFolderPrefix` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:318` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:154 (`try_get_folder_ignores_tilde_and_plus_prefixes`)` | `translated` | `5039b79496d215d3921427ab6f65867ba7a4ea5239864f1f5a1e38ea3e5bb426` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FailOnHiddenFolder::test` | `InventoryMapTests.TryGetFolderFromPath_FailOnHiddenFolder` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:353` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:166 (`try_get_folder_skips_hidden_folder`)` | `translated` | `bb0c7e531584128d251b06a4ac23b8cfad16ec4b117be79a53dea3c54aed4510` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_AllowHiddenFolder::test` | `InventoryMapTests.TryGetFolderFromPath_AllowHiddenFolder` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:386` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:178 (`try_get_folder_allows_hidden_folder`)` | `translated` | `9217cb5bd9c325fc792303e5ab53cefd71e95a5acf9e5a1601957ba8bf807346` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ById::test` | `InventoryMapTests.FindFoldersContaining_ById` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:423` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:190 (`find_folders_containing_by_prim_id`)` | `translated` | `fc89036c3472dcc2ea4d3fcb55636238e3d2c75b490f46d328b5f91f28301ed0` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByAttachmentType::test` | `InventoryMapTests.FindFoldersContaining_ByAttachmentType` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:463` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:209 (`find_folders_containing_by_attachment_point`)` | `translated` | `90b36c29312b87c824c158987e551ca31522cf53a68f5f6bd3eae8fe03e914ed` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByAttachmentType_SingleResult::test` | `InventoryMapTests.FindFoldersContaining_ByAttachmentType_SingleResult` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:507` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:233 (`find_folders_containing_by_attachment_point_single_result`)` | `translated` | `a973bf8087abb0c68cd80d76949fac2735474bf6ccbe743933051f60527d93ce` | +| `LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByWearType::test` | `InventoryMapTests.FindFoldersContaining_ByWearType` | `` | `LibreMetaverse.Tests/RLV/InventoryMapTests.cs:551` | `` | `LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_map_semantics.rs:252 (`find_folders_containing_by_wearable_type`)` | `translated` | `d6712cbeacd6ddf25a1f76dc1eeb10f4c0d8967a7591c249127f9b6387f0df8a` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CamZoomMin_Default::test` | `PermissionsTests.CamZoomMin_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:26 (`camera_zoom_min_defaults_to_none`)` | `translated` | `662b332d66c72caecc1a179730bc2524b9da16aa85f7289bebd31842610ceccc` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextWorld_Default::test` | `PermissionsTests.CanShowHoverTextWorld_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:18` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:41 (`can_show_hover_text_world_defaults_true`)` | `translated` | `380d1e30bd9ded04329bfd6d65ba447a8dd45a934cfa875628253719bb0e69ce` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextHud_Default::test` | `PermissionsTests.CanShowHoverTextHud_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:27` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:47 (`can_show_hover_text_hud_defaults_true`)` | `translated` | `a0af1f72f417cfa451284b7a3dbbb26d378e7eb9896dde3b6df0d0a2e4773f38` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverText_Default::test` | `PermissionsTests.CanShowHoverText_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:36` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:53 (`can_show_hover_text_defaults_true`)` | `translated` | `c4122dbf650f51bde55dfda412a884347a78d3cd09dd2bb0fcbe4a7e74a1fff6` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextAll_Default::test` | `PermissionsTests.CanShowHoverTextAll_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:46` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:59 (`can_show_all_hover_text_defaults_true`)` | `translated` | `0ed67c5566d038f770eb9f5df6aa0b5394d7d94cf7c397fa8089b419f872c681` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowNameTags_Default::test` | `PermissionsTests.CanShowNameTags_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:56` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:65 (`can_show_name_tags_defaults_true`)` | `translated` | `0781be94eb099d9aed1be2ff313856770d1ec24047d04c81c69219c743b4c8cb` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShare_Default::test` | `PermissionsTests.CanShare_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:65` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:77 (`can_share_defaults_true`)` | `translated` | `e827d549d1d9329b63db159446937735ead13eed5d3eaa59440d3c686182f517` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowNames_Default::test` | `PermissionsTests.CanShowNames_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:74` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:89 (`can_show_names_defaults_true`)` | `translated` | `56492cdd0802c5f8ed2a0f6d56abaf8186e37dd7b888904db52be97f9137279a` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanEdit_Default::test` | `PermissionsTests.CanEdit_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:83` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:101 (`can_edit_defaults_true_for_all_locations_and_ids`)` | `translated` | `417fb9f3eb3e70f3bd33710d11fb25eacd0db0a365b0ed2dec6778d09968f44b` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanRecvChat_Default::test` | `PermissionsTests.CanRecvChat_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:97` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:116 (`can_receive_chat_defaults_true`)` | `translated` | `b1ec48da83249b1141c3af926cd494373c47214d6a145916a8833d49edd155e2` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanAutoAcceptTpRequest_Default::test` | `PermissionsTests.CanAutoAcceptTpRequest_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:107` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:138 (`auto_accept_tp_request_defaults_false`)` | `translated` | `abbcccb4415afdb6558f40a6d4030704f64442f019d065fef8a7a56a407e8642` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanTpRequest_Default::test` | `PermissionsTests.CanTpRequest_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:118` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:151 (`can_tp_request_defaults_true`)` | `translated` | `aefc51023a5274d402dae0e8111a0776622dc431754c3d1f0ce240a50dfd405d` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanAutoAcceptTp_Default::test` | `PermissionsTests.CanAutoAcceptTp_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:127` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:163 (`auto_accept_tp_defaults_false`)` | `translated` | `553245a5381689a7f1c6398cb0ca50510f9089b9bdc797672ae35fb5822fdf8e` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanChat_Default::test` | `PermissionsTests.CanChat_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:138` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:176 (`can_chat_defaults_true`)` | `translated` | `a9b0e4f8713991ce8b9b61d750c086d56da432dbddd533ec63dc0604238831a1` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanSendIM_Default::test` | `PermissionsTests.CanSendIM_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:146` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:185 (`can_send_im_defaults_true`)` | `translated` | `6cc5238ded59b80408c59c9e77ded1162e370c295b846903dbcc87f74175cd55` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanStartIM_Default::test` | `PermissionsTests.CanStartIM_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:155` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:198 (`can_start_im_defaults_true`)` | `translated` | `c6d6db79b0939b33eb5fd29490474575e062f796160f4a69aab34ccefc1842cb` | +| `LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanReceiveIM_Default::test` | `PermissionsTests.CanReceiveIM_Default` | `` | `LibreMetaverse.Tests/RLV/PermissionsTests.cs:163` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_permissions_semantics.rs:210 (`can_receive_im_defaults_true`)` | `translated` | `23c1c79ae9eba016a48f3e9097fc26283223c9e120308d93fe53ce591ee5691c` | +| `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_MultipleTerms::test` | `FindFolderQueryTests.FindFolder_MultipleTerms` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:53 (`find_folder_multiple_terms`)` | `translated` | `a1f04e5ab064772c25feefc21ea57d65b1044f0fa3254aeb2a3bfedf68d8e0ca` | +| `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_SearchOrder::test` | `FindFolderQueryTests.FindFolder_SearchOrder` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs:53` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:62 (`find_folder_search_order`)` | `translated` | `4cba32dd316f49713c18a71bf5a932e1c28c94944add38c25852e8611ef0f987` | +| `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_IgnorePrivate::test` | `FindFolderQueryTests.FindFolder_IgnorePrivate` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs:74` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:68 (`find_folder_ignores_private_folder`)` | `translated` | `54c5ec1f6a6ae5611221e3afdc47db0c2d0ecb0da460dd8f2c506ed34c221ff8` | +| `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_IgnoreTildePrefix::test` | `FindFolderQueryTests.FindFolder_IgnoreTildePrefix` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs:99` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:78 (`find_folder_ignores_tilde_prefixed_folder`)` | `translated` | `9f6635f5e14dbc14d1592a19b62d67748a60201128a75893e47ea1751c83b6d7` | +| `LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs::FindFoldersQueryTests.FindFolders::test` | `FindFoldersQueryTests.FindFolders` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:88 (`find_folders`)` | `translated` | `09dbc17be4b28cc4a63d0f837960586ba7cd03e184f0013b26ed27db15703d84` | +| `LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs::FindFoldersQueryTests.FindFolders_Separator::test` | `FindFoldersQueryTests.FindFolders_Separator` | `` | `LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs:53` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:97 (`find_folders_with_separator`)` | `translated` | `51caa783dded41b99c878066618a10a7fe32c681ef4385c9a72f154870312b1f` | +| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingNothing::test` | `GetAttachQueryTests.GetAttach_WearingNothing` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:106 (`get_attach_wearing_nothing`)` | `translated` | `41fc967c6c174ac39ce3f6de7e273e6db1845bc2ad6acd393f27a6705a3555df` | +| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_ExternalItems::test` | `GetAttachQueryTests.GetAttach_ExternalItems` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:36` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:115 (`get_attach_external_items`)` | `translated` | `3f8e640aad5deeaf00b07af2d12c33b0a93257260d057d7b5dd5488f846f467a` | +| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingSomeItems::test` | `GetAttachQueryTests.GetAttach_WearingSomeItems` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:78` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:150 (`get_attach_wearing_some_items`)` | `translated` | `c209cd826958306f1350a685b29985cb8335a55ebcb9c0bec5c5a21279bb0a1a` | +| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingEverything::test` | `GetAttachQueryTests.GetAttach_WearingEverything` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:105` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:244 (`get_attach_wearing_everything`)` | `translated` | `4adb25030cd3c125242a4b1f770bfd3afdcabd85c23d37c34df9c8f273489e5b` | +| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_Specific_Exists::test` | `GetAttachQueryTests.GetAttach_Specific_Exists` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:141` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:271 (`get_attach_specific_exists`)` | `translated` | `7d8ccf26629911b6b20dc26c5c549975827d7378b4d85259a8b9724a3622892b` | +| `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_Specific_NotExists::test` | `GetAttachQueryTests.GetAttach_Specific_NotExists` | `` | `LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs:175` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:291 (`get_attach_specific_not_exists`)` | `translated` | `08d9852205987a266608ad17c12fa498894d7c3216e873cffb9db4584cfd100d` | +| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:8e1b820c1f2bd3cd` | `GetBlacklistQueryTests.GetBlacklist` | `"@getblacklist", 1234, "sendim,recvim", "recvim,sendim"` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:38 (`get_blacklist_all`)` | `translated` | `3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765` | +| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:64136cd82156035a` | `GetBlacklistQueryTests.GetBlacklist` | `"@getblacklist:im", 1234, "sendim,recvim", "recvim,sendim"` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:48 (`get_blacklist_im_filter`)` | `translated` | `3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765` | +| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:2068bf7f0a131fe8` | `GetBlacklistQueryTests.GetBlacklist` | `"@getblacklist:send", 1234, "sendim,recvim", "sendim"` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:58 (`get_blacklist_send_filter`)` | `translated` | `3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765` | +| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:b86b0c5e67f981c2` | `GetBlacklistQueryTests.GetBlacklist` | `"@getblacklist:tpto", 1234, "sendim,recvim", ""` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:68 (`get_blacklist_unmatched_filter`)` | `translated` | `3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765` | +| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:123b930bb970a1f1` | `GetBlacklistQueryTests.GetBlacklist` | `"@getblacklist", 1234, "", ""` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:78 (`get_blacklist_empty`)` | `translated` | `3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765` | +| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.ManualBlacklist::case:f14641dea0f1de93` | `GetBlacklistQueryTests.ManualBlacklist` | `"@getblacklist", "sendim,recvim", "recvim,sendim"` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:35` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:96 (`manual_blacklist_all`)` | `translated` | `4ef9ab9bc3165b99ef6b9cf6ae563210660e83fccf946376217c300a752c724e` | +| `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.ManualBlacklist::case:d25c660357f6ccff` | `GetBlacklistQueryTests.ManualBlacklist` | `"@getblacklist", "", ""` | `LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs:36` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:102 (`manual_blacklist_empty`)` | `translated` | `4ef9ab9bc3165b99ef6b9cf6ae563210660e83fccf946376217c300a752c724e` | +| `LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs::GetDebugQueryTests.GetDebug_Default::case:fa77559e30768d15` | `GetDebugQueryTests.GetDebug_Default` | `"RenderResolutionDivisor", "RenderResolutionDivisor Success"` | `LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:119 (`get_debug_known_setting`)` | `translated` | `6554db3b0455887c0224a6f91c7830d6cbf38d5520a65a9b17e26280fcc291f7` | +| `LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs::GetDebugQueryTests.GetDebug_Default::case:55694f25ed879d95` | `GetDebugQueryTests.GetDebug_Default` | `"Unknown Setting", "Unknown Setting Success"` | `LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:128 (`get_debug_unknown_setting`)` | `translated` | `6554db3b0455887c0224a6f91c7830d6cbf38d5520a65a9b17e26280fcc291f7` | +| `LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs::GetEnvQueryTests.GetEnv_Default::case:f656b648d00a6d91` | `GetEnvQueryTests.GetEnv_Default` | `"Daytime", "Daytime Success"` | `LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:145 (`get_environment_known_setting`)` | `translated` | `cf4270c6c3417690afcf43982c3bdcf815f46ce81f9b6ccaf59377c633a64881` | +| `LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs::GetEnvQueryTests.GetEnv_Default::case:55694f25ed879d95` | `GetEnvQueryTests.GetEnv_Default` | `"Unknown Setting", "Unknown Setting Success"` | `LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:151 (`get_environment_unknown_setting`)` | `translated` | `cf4270c6c3417690afcf43982c3bdcf815f46ce81f9b6ccaf59377c633a64881` | +| `LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs::GetGroupQueryTests.GetGroup_Default::test` | `GetGroupQueryTests.GetGroup_Default` | `` | `LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:160 (`get_active_group`)` | `translated` | `da65b184d0ef1380274e8e4dfa199c125a1a192b9e76f8fec1d406df18186169` | +| `LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs::GetGroupQueryTests.GetGroup_NoGroup::test` | `GetGroupQueryTests.GetGroup_NoGroup` | `` | `LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs:32` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:169 (`get_group_without_active_group`)` | `translated` | `d1da37ae52bd94dac9cd6e031525b57f31ca7e9dc00a69a6e0c4e753741dc9e8` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv::test` | `GetInvQueryTests.GetInv` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:315 (`get_inventory_root`)` | `translated` | `7476602b4103b47ed7dff44146a7ba90a1d62dc0d502f7b9e37b7863d9441ceb` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits::test` | `GetInvQueryTests.GetInv_Outfits` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:35` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:321 (`get_inventory_outfits`)` | `translated` | `d60a78bb35cc8fcdbdc2465889333b25567ea5e1c9279a8fb7b4162f4a35eae2` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreLeadingSlash::test` | `GetInvQueryTests.GetInv_Outfits_IgnoreLeadingSlash` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:67` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:395 (`get_inventory_ignores_leading_slash`)` | `translated` | `add33ed33e1940f26362332b89486253c6af1a56e601bafab49511b6607ed50a` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreTrailingSlash::test` | `GetInvQueryTests.GetInv_Outfits_IgnoreTrailingSlash` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:91` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:401 (`get_inventory_ignores_trailing_slash`)` | `translated` | `8f89302126be19f89d075d87d5194cc000fb7819f92ea7d54e6a63c1df9ca1ee` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreLeadingAndTrailingSlash::test` | `GetInvQueryTests.GetInv_Outfits_IgnoreLeadingAndTrailingSlash` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:115` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:407 (`get_inventory_ignores_leading_and_trailing_slash`)` | `translated` | `c660447f93fb8508dbe4c874c92fd776a6e13596bbe3036bfb4664e35ee22306` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_Inventory::test` | `GetInvQueryTests.GetInv_Outfits_Inventory` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:139` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:413 (`get_inventory_outfit_items_are_not_folders`)` | `translated` | `7db6f75e2f109d0e8d852d181ddd721f688e27144ad8a5604384b37de9f8c3eb` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Subfolder::test` | `GetInvQueryTests.GetInv_Subfolder` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:168` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:457 (`get_inventory_subfolder`)` | `translated` | `6a5effe8012e9a446021b83f9b5314f6f9b66587222b447fa79028582830b3a1` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Empty::test` | `GetInvQueryTests.GetInv_Empty` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:189` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:463 (`get_inventory_empty_folder`)` | `translated` | `2dd9f242eb71826066482ff4faa80b952ef89f855723cdc0c01cc4714abf8751` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Invalid::test` | `GetInvQueryTests.GetInv_Invalid` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs:210` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:469 (`get_inventory_invalid_folder`)` | `translated` | `92595df155e79568e70bceb1538c23f10de99a6a138a0a5d9b8a2626588fdae9` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn::test` | `GetInvWornQueryTests.GetInvWorn` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:480 (`get_inventory_worn`)` | `translated` | `472d70fb14f393d43f8698bb81d1855426f570d85c9e592fa86607eb79ce366e` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_PartialRoot::test` | `GetInvWornQueryTests.GetInvWorn_PartialRoot` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs:78` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:503 (`get_inventory_worn_partial_root`)` | `translated` | `ce4c640a901a6684a27b2b259c4fc3b25f2d6b870107babff3b930ced64a150b` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_Naked::test` | `GetInvWornQueryTests.GetInvWorn_Naked` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs:128` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:518 (`get_inventory_worn_naked`)` | `translated` | `fa8994189c5d9cda7d613dfb8f6ffbb1808c8bae54a3647530fb872d47c43dd5` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_EmptyFolder::test` | `GetInvWornQueryTests.GetInvWorn_EmptyFolder` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs:173` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:527 (`get_inventory_worn_empty_folder`)` | `translated` | `ab6fc753f4d4170e17f49b708d7e62816f197e83234feda1fdcf63dcdc0bc6c4` | +| `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_PartialWorn::test` | `GetInvWornQueryTests.GetInvWorn_PartialWorn` | `` | `LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs:218` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:536 (`get_inventory_worn_partial_folder`)` | `translated` | `ceb446f2aa6eaa5232a99147d5d993386ee9e2e5fefd93ef582f27a6b8ece948` | +| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingNothing::test` | `GetOutfitQueryTests.GetOutfit_WearingNothing` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:571 (`get_outfit_wearing_nothing`)` | `translated` | `27befef9fdef993d82a641980f2b1ad7f458f07a50c7d008b6d311aeedfb4939` | +| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_ExternalItems::test` | `GetOutfitQueryTests.GetOutfit_ExternalItems` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:37` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:577 (`get_outfit_external_items`)` | `translated` | `f88d149572ae35e880f16a5a92b4a9db73a3f26c5e8e61e4b1c01440151bd64b` | +| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingSomeItems::test` | `GetOutfitQueryTests.GetOutfit_WearingSomeItems` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:78` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:608 (`get_outfit_wearing_some_items`)` | `translated` | `4e9ef77ab72f1fd16c4fad69f00eb80ab46421597d41b61df80b1f87370f42d3` | +| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingEverything::test` | `GetOutfitQueryTests.GetOutfit_WearingEverything` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:105` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:639 (`get_outfit_wearing_everything`)` | `translated` | `a840b239174cdb5dee4beb875bf9129209af3ba310564319528ad5b19764aae0` | +| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_Specific_Exists::test` | `GetOutfitQueryTests.GetOutfit_Specific_Exists` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:145` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:662 (`get_outfit_specific_exists`)` | `translated` | `a402fd67ed8ddfc12d09863f08f9b15b34262ffa12b4b5aa965826eac89abae5` | +| `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_Specific_NotExists::test` | `GetOutfitQueryTests.GetOutfit_Specific_NotExists` | `` | `LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs:171` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:682 (`get_outfit_specific_not_exists`)` | `translated` | `d7e891a620b5e5407fe337f507874b63eb5a21589767a01362bd8bc43d19ba4a` | +| `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_BySender::test` | `GetPathNewQueryTests.GetPathNew_BySender` | `` | `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:702 (`get_path_new_by_sender`)` | `translated` | `e7e87c01e83967a7160509d76f49d2a4b18d34b9b3fbed370c174d64ddb2c2b5` | +| `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByUUID::test` | `GetPathNewQueryTests.GetPathNew_ByUUID` | `` | `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs:59` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:716 (`get_path_new_by_uuid`)` | `translated` | `3a7d242966286258ed075c8e5c69eaf54ba0e71b8607432615a1199f5aeb6dcf` | +| `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByUUID_Unknown::test` | `GetPathNewQueryTests.GetPathNew_ByUUID_Unknown` | `` | `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs:103` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:730 (`get_path_new_by_unknown_uuid`)` | `translated` | `c3c206661594026c36dfcfea110631548cd362d824db268c170e4d04b24b674a` | +| `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByAttach::test` | `GetPathNewQueryTests.GetPathNew_ByAttach` | `` | `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs:152` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:750 (`get_path_new_by_attachment_point`)` | `translated` | `f8858e6141b660cec8a09c016891f2275dd9364157b1aa614b63fca5abb7620c` | +| `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByWorn::test` | `GetPathNewQueryTests.GetPathNew_ByWorn` | `` | `LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs:202` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_inventory_queries_semantics.rs:766 (`get_path_new_by_wearable`)` | `translated` | `eed31d9aaf34578368cc4f590de1da7f47e3f6c5e663215866f7f8e6946f974b` | +| `LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs::GetSitIdQueryTests.GetSitID::test` | `GetSitIdQueryTests.GetSitID` | `` | `LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs:21` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:177 (`get_sit_id_when_not_sitting`)` | `translated` | `bfbf6d62c09c4878504aa529805a29fe9689d1e29e7ca3d44bf2346d6b3fbe6b` | +| `LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs::GetSitIdQueryTests.GetSitID_Default::test` | `GetSitIdQueryTests.GetSitID_Default` | `` | `LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs:37` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:185 (`get_current_sit_id`)` | `translated` | `456f8f22b1d2917c3729ed600bdf0b693c0189bd100b9863f4b42b07259110b0` | +| `LibreMetaverse.Tests/RLV/Queries/GetStatusAllQueryTests.cs::GetStatusAllQueryTests.GetStatusAll::test` | `GetStatusAllQueryTests.GetStatusAll` | `` | `LibreMetaverse.Tests/RLV/Queries/GetStatusAllQueryTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:201 (`get_status_all_senders`)` | `translated` | `ee8fac8485db2b5c01abf8664364ca1e13214243f1e661a04d93df680422d596` | +| `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus::test` | `GetStatusQueryTests.GetStatus` | `` | `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:213 (`get_status_for_sender`)` | `translated` | `c538e68277e93b40374dfd86bde9be00e0b82dfad7f4573cc4b0660f15fa5fe4` | +| `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus_filtered::test` | `GetStatusQueryTests.GetStatus_filtered` | `` | `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs:34` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:225 (`get_status_filtered`)` | `translated` | `574b7f7c37b4e09e4257e5b02d50b222054216e34b6d1dd3fe6b26127c89b562` | +| `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus_customSeparator::test` | `GetStatusQueryTests.GetStatus_customSeparator` | `` | `LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs:55` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:234 (`get_status_custom_separator`)` | `translated` | `3bec2e53ea88857d4a1ae8cd6bc6f235f24e00d0773c24ca75a1892adb803527` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.Notify::test` | `NotifyQueryTests.Notify` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:30 (`notify_every_restriction`)` | `translated` | `082ff4cd00faf29a73aca158d4e24ed9fd3e7844ed6cefbf962d8727846a3c27` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyFiltered::test` | `NotifyQueryTests.NotifyFiltered` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:36` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:54 (`notify_filtered`)` | `translated` | `e00e51aeadd0d7a107105684129a6ae74fbf918be4c563d92d7cdaa223d2c03c` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiCommand::test` | `NotifyQueryTests.NotifyMultiCommand` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:54` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:70 (`notify_multi_command`)` | `translated` | `77f3950214a1bd1e3816fa6f7b0ca69727e9e18be5fb7b37f19490408ca023dc` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiChannels::test` | `NotifyQueryTests.NotifyMultiChannels` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:73` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:92 (`notify_multiple_channels`)` | `translated` | `12a0a6e0a0a6632960de98236670e063f2c1aa16cf6b6c8d718bde0e0abfd9b9` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiChannelsFiltered::test` | `NotifyQueryTests.NotifyMultiChannelsFiltered` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:94` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:109 (`notify_multiple_channels_filtered`)` | `translated` | `bff8ca8465c2299d0d2ef60adfa4164270d08cee7223361bb27b86a7e4daeec9` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:9e893d263294d04d` | `NotifyQueryTests.NotifySynonyms` | `"@camdistmax:123=n", "/camdistmax:123=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:114` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:134 (`notify_camdistmax`)` | `translated` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:fc6b17eb4e9e7a00` | `NotifyQueryTests.NotifySynonyms` | `"@setcam_avdistmax:123=n", "/setcam_avdistmax:123=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:115` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:140 (`notify_setcam_avdistmax`)` | `translated` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:b37376c5865a6fe8` | `NotifyQueryTests.NotifySynonyms` | `"@camdistmin:123=n", "/camdistmin:123=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:116` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:149 (`notify_camdistmin`)` | `translated` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:5d497faea315b624` | `NotifyQueryTests.NotifySynonyms` | `"@setcam_avdistmin:123=n", "/setcam_avdistmin:123=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:117` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:155 (`notify_setcam_avdistmin`)` | `translated` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:282fa0139ccbba29` | `NotifyQueryTests.NotifySynonyms` | `"@camunlock=n", "/camunlock=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:118` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:164 (`notify_camunlock`)` | `translated` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:f08c6eb7b4d12fac` | `NotifyQueryTests.NotifySynonyms` | `"@setcam_unlock=n", "/setcam_unlock=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:119` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:170 (`notify_setcam_unlock`)` | `translated` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:37f0f73ed7492dd0` | `NotifyQueryTests.NotifySynonyms` | `"@camtextures:1cdbc6a2-ae6b-3130-9348-3d3b1ca84c53=n", "/camtextures:1cdbc6a2-ae6b-3130-9348-3d3b1ca84c53=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:120` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:176 (`notify_camtextures`)` | `translated` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:d75917941e63732c` | `NotifyQueryTests.NotifySynonyms` | `"@touchfar:5=n", "/touchfar:5=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:121` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:185 (`notify_touchfar`)` | `translated` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:2f72da33fdbcd8be` | `NotifyQueryTests.NotifySynonyms` | `"@fartouch:5=n", "/fartouch:5=n"` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:122` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:191 (`notify_fartouch`)` | `translated` | `6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyClear_Filtered::test` | `NotifyQueryTests.NotifyClear_Filtered` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:134` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:197 (`notify_clear_filtered`)` | `translated` | `f3e0550a53faca13679421318eee85f010c1b8668e3edfae6e2548d39dbcafd7` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyClear::test` | `NotifyQueryTests.NotifyClear` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:155` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:213 (`notify_clear`)` | `translated` | `61d7419956a83be04eeb13557c6a2120419b2f0f1c529149c4fb57871bb6506e` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyInventoryOffer::test` | `NotifyQueryTests.NotifyInventoryOffer` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:178` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:230 (`notify_inventory_offer`)` | `translated` | `2bbac63ab86ec77f6d0a4558a14ee913a7f44930364476a89e02cd5ec80191b9` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySitStandLegal::test` | `NotifyQueryTests.NotifySitStandLegal` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:199` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:268 (`notify_sit_and_stand_legal`)` | `translated` | `83a07a88a0386982c854a0223b64dd5c417f1a55a038e4ceba8f487983daadaf` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySitStandWithRestrictions::test` | `NotifyQueryTests.NotifySitStandWithRestrictions` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:224` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:292 (`notify_sit_and_stand_illegal`)` | `translated` | `166e2087aa0652bdd427e1908bc338659ec1d4dc8065c016612696d1f5dfd000` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyWear::test` | `NotifyQueryTests.NotifyWear` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:252` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:316 (`notify_wear_legal`)` | `translated` | `9529acb9f3e1c335a50f8de6d63cc5711921de962546ff868811279d05826399` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyWear_Illegal::test` | `NotifyQueryTests.NotifyWear_Illegal` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:275` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:341 (`notify_wear_illegal`)` | `translated` | `65bfc1db698470cf56dd8c6811e85ae373d1fca95cdbf82be66b7e32da311a2f` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyUnWear::test` | `NotifyQueryTests.NotifyUnWear` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:295` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:357 (`notify_unwear_legal`)` | `translated` | `340b60b8038dcd55320dc9aedc16beb9193e731ba7b659ca3cb2951a2d19b7ac` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyUnWear_illegal::test` | `NotifyQueryTests.NotifyUnWear_illegal` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:318` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:388 (`notify_unwear_illegal`)` | `translated` | `e7056e6e145430eb2180edb92593f59c07bcbdfa21629b1ca29ac93b2fca975e` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyAttached::test` | `NotifyQueryTests.NotifyAttached` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:340` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:407 (`notify_attached_legal`)` | `translated` | `dc5239c77b9169cf3833c5a1dc765b381efe833f15b34ac7e57173c0a640942a` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyAttached_Illegal::test` | `NotifyQueryTests.NotifyAttached_Illegal` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:363` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:434 (`notify_attached_illegal`)` | `translated` | `b56de057dece9cb8ece795d13d6bc42e7825d62f09f967f37a4dbf262d2b4456` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyDetached::test` | `NotifyQueryTests.NotifyDetached` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:383` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:465 (`notify_detached_legal`)` | `translated` | `a741cec23a985028b3dc2b09195255276a96e4f07fc4fe5f8cca6c1e3c940d71` | +| `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyDetached_Illegal::test` | `NotifyQueryTests.NotifyDetached_Illegal` | `` | `LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs:407` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_notify_semantics.rs:482 (`notify_detached_illegal`)` | `translated` | `1a4c9475a3b91a975b9861685dcaf899505b4f6727257618f9add9cecd3df54d` | +| `LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs::VersionNumBlQueryTests.VersionNumBL::case:478968a5d14830de` | `VersionNumBlQueryTests.VersionNumBL` | `"", RlvService.RLVVersionNum` | `LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:253 (`version_number_without_blacklist`)` | `translated` | `0dbc89f77a6f293efcca217febb2f6b8d224f9ac5e1d6532a56a7df64a7be6e9` | +| `LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs::VersionNumBlQueryTests.VersionNumBL::case:8c124ee42e9ab944` | `VersionNumBlQueryTests.VersionNumBL` | `"sendim,recvim", RlvService.RLVVersionNum + ",recvim,sendim"` | `LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:262 (`version_number_with_blacklist`)` | `translated` | `0dbc89f77a6f293efcca217febb2f6b8d224f9ac5e1d6532a56a7df64a7be6e9` | +| `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.ManualVersion::test` | `VersionQueryTests.ManualVersion` | `` | `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:271 (`manual_version`)` | `translated` | `6f8493b201d69e1449d8311e434736f6f6b2bad04c9fe9c6adf94a94d9cbe597` | +| `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:442bdc765ad34e20` | `VersionQueryTests.CheckVersions` | `"@version", 1234, RlvService.RLVVersion` | `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs:30` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:293 (`version_query_standard`)` | `translated` | `f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30` | +| `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:968af293ea2a53a1` | `VersionQueryTests.CheckVersions` | `"@versionnew", 1234, RlvService.RLVVersion` | `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs:31` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:299 (`version_query_new`)` | `translated` | `f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30` | +| `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:ae9a221915e6e1bb` | `VersionQueryTests.CheckVersions` | `"@versionnum", 1234, RlvService.RLVVersionNum` | `LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs:32` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_query_basics_semantics.rs:308 (`version_query_number`)` | `translated` | `f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30` | +| `LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs::AddAttachRestrictionTests.AddAttach::test` | `AddAttachRestrictionTests.AddAttach` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:22 (`add_attach_restricts_all_attachment_points`)` | `translated` | `bb2c3495d7b6862fabe1007bcfccc2850d29eef1d9aa4eac6d13d6004dcc4e6b` | +| `LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs::AddAttachRestrictionTests.AddAttach_Specific::test` | `AddAttachRestrictionTests.AddAttach_Specific` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs:39` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:50 (`add_attach_restricts_one_attachment_point`)` | `translated` | `0201965931ebba1c13a23bbb43a8787c1639b0b98851141faffd963173c51035` | +| `LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs::AddOutfitRestrictionTests.AddOutfit::test` | `AddOutfitRestrictionTests.AddOutfit` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:78 (`add_outfit_restricts_all_layers`)` | `translated` | `d4902b4dda0a640d240c88af30431f6d247aae2a74a81126fd91ba1d930de3fb` | +| `LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs::AddOutfitRestrictionTests.AddOutfit_part::test` | `AddOutfitRestrictionTests.AddOutfit_part` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs:56` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:106 (`add_outfit_restricts_one_layer`)` | `translated` | `e7e5467b36484fb54b0336abccf682905fbe5bff9e04195645981815e2ffadeb` | +| `LibreMetaverse.Tests/RLV/Restrictions/AllowIdleRestrictionTests.cs::AllowIdleRestrictionTests.CanAllowIdle::test` | `AllowIdleRestrictionTests.CanAllowIdle` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AllowIdleRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:22 (`allow_idle_restriction`)` | `translated` | `6278bb1a70f024f687080cb8e8a56bbc923f679fb4adb61c6c91c3397a3de7fc` | +| `LibreMetaverse.Tests/RLV/Restrictions/AlwaysRunRestrictionTests.cs::AlwaysRunRestrictionTests.CanAlwaysRun::test` | `AlwaysRunRestrictionTests.CanAlwaysRun` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AlwaysRunRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:31 (`always_run_restriction`)` | `translated` | `9c0a34e0960e3e2a834ccfc1c129a1f5a8f8c6cfd30b322671b4e5c4cd25a24c` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis::test` | `AttachAllThisRestrictionTests.AttachAllThis` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:239 (`attach_all_this`)` | `translated` | `39bc0c4581f8277f4d5c90ec715c40f4715b5ae7007a28a04fe762f2f6adfbfd` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive::test` | `AttachAllThisRestrictionTests.AttachAllThis_Recursive` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:88` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:252 (`attach_all_this_recursive`)` | `translated` | `d051e7783e79bf91a8092cd2d29cf1aacec3b0af86ecf0c7ca590ce25bc8393c` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Path::test` | `AttachAllThisRestrictionTests.AttachAllThis_Recursive_Path` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:168` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:265 (`attach_all_this_recursive_path`)` | `translated` | `b4db2b29ad376777b382f8c6f4f7b62643bb2dd43858de4be69ac2252f18c963` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Worn::test` | `AttachAllThisRestrictionTests.AttachAllThis_Recursive_Worn` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:248` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:278 (`attach_all_this_recursive_worn`)` | `translated` | `6ecfc6ffe71896979a37dac6dd8149a015b8d3e7e952247954333c053da4961e` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached::test` | `AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:327` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:291 (`attach_all_this_recursive_attached`)` | `translated` | `8ac38c77c6bdb03e4cbaa96600bead9a760eb5eec098504b05cfb3a1bdfb8557` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached_AddRem::test` | `AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached_AddRem` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs:425` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:304 (`attach_all_this_recursive_attached_removed`)` | `translated` | `495f288e0fa86059d13a027075700ba6308e9c9d585fa56e3d1adf4a71df912b` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis::test` | `AttachThisRestrictionTests.AttachThis` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:317 (`attach_this`)` | `translated` | `3a8a5acc4ad5cbec76737239ea23330a34f54146a4ff9d5d25082c220527a3e4` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_NotRecursive::test` | `AttachThisRestrictionTests.AttachThis_NotRecursive` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:81` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:330 (`attach_this_not_recursive`)` | `translated` | `a5818b4e30d04aba7d6427b2b94e025d34e82eb3bdcb7ac80a23e55f2382ec29` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByPath::test` | `AttachThisRestrictionTests.AttachThis_ByPath` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:151` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:343 (`attach_this_by_path`)` | `translated` | `93e1721f171e24e540160e738f731b895ebd868d840bcdf7c16ba92f6eb4c49a` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByRlvAttachmentPoint::test` | `AttachThisRestrictionTests.AttachThis_ByRlvAttachmentPoint` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:216` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:356 (`attach_this_by_attachment_point`)` | `translated` | `90a562b2c120daa0ea2612befe9e09649bc2ffac59c2cd360fe4a37dedf85ae3` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByWornLayer::test` | `AttachThisRestrictionTests.AttachThis_ByWornLayer` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:294` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:369 (`attach_this_by_worn_layer`)` | `translated` | `a444d51c2091fa36f1a010e98ad896042aa0262153ea8a833a14dfcbf02de85e` | +| `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByWornLayer_AddRem::test` | `AttachThisRestrictionTests.AttachThis_ByWornLayer_AddRem` | `` | `LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs:369` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:382 (`attach_this_by_worn_layer_removed`)` | `translated` | `dd3d9a0d9b56f08f6be7a6200e1f50e834ecc7613de0cdf44ee89262b3abdb30` | +| `LibreMetaverse.Tests/RLV/Restrictions/ChatNormalTests.cs::ChatNormalTests.CanChatNormal::test` | `ChatNormalTests.CanChatNormal` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ChatNormalTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:40 (`chat_normal_restriction`)` | `translated` | `9a23c49327636e769c7ff2688a0649d441f3531406e8f51e152ec7186a312287` | +| `LibreMetaverse.Tests/RLV/Restrictions/ChatShoutRestrictionTests.cs::ChatShoutRestrictionTests.CanChatShout::test` | `ChatShoutRestrictionTests.CanChatShout` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ChatShoutRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:49 (`chat_shout_restriction`)` | `translated` | `493e1dd87afaaa7f8183e677df5c32d00f150ffcdd53f9afad8684672837aa28` | +| `LibreMetaverse.Tests/RLV/Restrictions/ChatWhisperRestrictionTests.cs::ChatWhisperRestrictionTests.CanChatWhisper::test` | `ChatWhisperRestrictionTests.CanChatWhisper` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ChatWhisperRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:58 (`chat_whisper_restriction`)` | `translated` | `67c5d2cb8b3e9424fbcf08378c2a28368fe07aa83ec028df7cf88b91576d3e9f` | +| `LibreMetaverse.Tests/RLV/Restrictions/DefaultWearRestrictionTests.cs::DefaultWearRestrictionTests.CanDefaultWear::test` | `DefaultWearRestrictionTests.CanDefaultWear` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DefaultWearRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:67 (`default_wear_restriction`)` | `translated` | `64eef4c82d1c5a21bc923cfd44616ddc1a5e6403a9a1c5ad6bd2e5ee06e9704c` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis::test` | `DetachAllThisRestrictionTests.DetachAllThis` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:395 (`detach_all_this`)` | `translated` | `ee74f952bd602bd23cfc7b203940a902e1b30e02cff60c1abc1f74da964c1f7d` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive::test` | `DetachAllThisRestrictionTests.DetachAllThis_Recursive` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:88` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:408 (`detach_all_this_recursive`)` | `translated` | `2b6a646ee82484a6d1901ea4425b0e32fe553827f5bea37b506ffe29d1aec192` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Path::test` | `DetachAllThisRestrictionTests.DetachAllThis_Recursive_Path` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:168` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:421 (`detach_all_this_recursive_path`)` | `translated` | `731244b623f23a8870d011280a062add751607ce2c58be3261485bb61d488297` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Worn::test` | `DetachAllThisRestrictionTests.DetachAllThis_Recursive_Worn` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:245` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:434 (`detach_all_this_recursive_worn`)` | `translated` | `d8424a48e64346edd683b7a68652dd5a0be615658f085b0390699ac7b4db5d2c` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached::test` | `DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:324` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:447 (`detach_all_this_recursive_attached`)` | `translated` | `f399592217e7a4638ea25d469681ab9cc58bf8a937af2bfff8895996f7bbc493` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached_AddRem::test` | `DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached_AddRem` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs:421` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:460 (`detach_all_this_recursive_attached_removed`)` | `translated` | `507273250b932ff93fa34f87190ad1ab289edeed275be6d2259bab05c5b055d1` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach_Default::test` | `DetachRestrictionTests.Detach_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:182 (`detach_default`)` | `translated` | `8c5b165329ab6b46eb3ec7c9a07383e8ea1e54edf0882b43b14166d67cc45617` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach::test` | `DetachRestrictionTests.Detach` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs:33` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:188 (`detach_restricts_sender_prim`)` | `translated` | `50f5419aea3ea41aa9ebedd29202a549deb4ae6089c38965300a46fd5abf94bf` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach_AttachPoint::test` | `DetachRestrictionTests.Detach_AttachPoint` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs:55` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:196 (`detach_restricts_attachment_point`)` | `translated` | `a75fea134b92bca704b2e140135076d699d645c0d2854022d5b20d14be372589` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis::test` | `DetachThisRestrictionTests.DetachThis` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:473 (`detach_this`)` | `translated` | `bf6cdb48a5271d5116db4d0cbf12dbf63fc3cc93862bf718cf849d4abf9eb7cc` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_NotRecursive::test` | `DetachThisRestrictionTests.DetachThis_NotRecursive` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:82` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:486 (`detach_this_not_recursive`)` | `translated` | `a8452e2b0abcf82447394bae981a1d25677147fad17828d8f6d0705264efa429` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByPath::test` | `DetachThisRestrictionTests.DetachThis_ByPath` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:153` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:499 (`detach_this_by_path`)` | `translated` | `e6378e0db310005b8426cabd25969818ed36252e1995de97c6b29d5ab155ee58` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByRlvAttachmentPoint::test` | `DetachThisRestrictionTests.DetachThis_ByRlvAttachmentPoint` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:219` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:512 (`detach_this_by_attachment_point`)` | `translated` | `278e4cbf0f9999efec04fcabade19da97439cca732e0e7e3e3c004e232c27224` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByWornLayer::test` | `DetachThisRestrictionTests.DetachThis_ByWornLayer` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:297` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:525 (`detach_this_by_worn_layer`)` | `translated` | `66b7eba54e34ed58c59d594cdcb85d874c4db9bbbd871e5438c40fd3d47ad3f6` | +| `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByWornLayer_AddRem::test` | `DetachThisRestrictionTests.DetachThis_ByWornLayer_AddRem` | `` | `LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs:371` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs:538 (`detach_this_by_worn_layer_removed`)` | `translated` | `7424bf38db1abd74132618ee3bcf95a79c32942da26086760dc82355a815d37e` | +| `LibreMetaverse.Tests/RLV/Restrictions/EditAttachRestrictionTests.cs::EditAttachRestrictionTests.CanEdit_Attachment::test` | `EditAttachRestrictionTests.CanEdit_Attachment` | `` | `LibreMetaverse.Tests/RLV/Restrictions/EditAttachRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:251 (`edit_attachment_restriction`)` | `translated` | `22bc9e267e270c2c762561851249af4ef64c0b5bd288950a95b1b636b2975b6e` | +| `LibreMetaverse.Tests/RLV/Restrictions/EditRestrictionTests.cs::EditRestrictionTests.CanEditFolderNameSpecifiesToAddInsteadOfReplace::test` | `EditRestrictionTests.CanEditFolderNameSpecifiesToAddInsteadOfReplace` | `` | `LibreMetaverse.Tests/RLV/Restrictions/EditRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:257 (`edit_everywhere_restriction`)` | `translated` | `6d82d0869826bbc935d89967445dfc991619bdaf3fa631550c5d3f91a13c4935` | +| `LibreMetaverse.Tests/RLV/Restrictions/EditWorldRestrictionTests.cs::EditWorldRestrictionTests.CanEdit_World::test` | `EditWorldRestrictionTests.CanEdit_World` | `` | `LibreMetaverse.Tests/RLV/Restrictions/EditWorldRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:263 (`edit_world_restriction`)` | `translated` | `1f335a2c81735bf58294b97ceedfd85192113e69c78a38804f0db923ce7a0241` | +| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch::case:ccd63fc5b9c064fb` | `FarTouchRestrictionTests.CanFarTouch` | `"fartouch"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:35 (`far_touch_fartouch_value`)` | `translated` | `a5568e0040a3c0ac8875a11596b7d0799ac5169b919e4fc65587555b2d3edd52` | +| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch::case:ae3d093c6c7267ac` | `FarTouchRestrictionTests.CanFarTouch` | `"touchfar"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:41 (`far_touch_touchfar_value`)` | `translated` | `a5568e0040a3c0ac8875a11596b7d0799ac5169b919e4fc65587555b2d3edd52` | +| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Synonym::case:ccd63fc5b9c064fb` | `FarTouchRestrictionTests.CanFarTouch_Synonym` | `"fartouch"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:20` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:47 (`far_touch_fartouch_synonym`)` | `translated` | `c7aff866d539ceb26cc028532a901f18b58bb020f34da56444f08c9f4df1eb52` | +| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Synonym::case:ae3d093c6c7267ac` | `FarTouchRestrictionTests.CanFarTouch_Synonym` | `"touchfar"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:21` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:53 (`far_touch_touchfar_synonym`)` | `translated` | `c7aff866d539ceb26cc028532a901f18b58bb020f34da56444f08c9f4df1eb52` | +| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Default::case:ccd63fc5b9c064fb` | `FarTouchRestrictionTests.CanFarTouch_Default` | `"fartouch"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:30` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:59 (`far_touch_fartouch_default`)` | `translated` | `e894c744ea780a0a46cd2387157077c1a62c3c6b982303f3b7bff0b5d950816a` | +| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Default::case:ae3d093c6c7267ac` | `FarTouchRestrictionTests.CanFarTouch_Default` | `"touchfar"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:31` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:65 (`far_touch_touchfar_default`)` | `translated` | `e894c744ea780a0a46cd2387157077c1a62c3c6b982303f3b7bff0b5d950816a` | +| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:5788809ef8877342` | `FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms` | `"fartouch", "fartouch"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:40` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:94 (`far_touch_multiple_fartouch_fartouch`)` | `translated` | `423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905` | +| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:b3ebeae1885ed5db` | `FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms` | `"fartouch", "touchfar"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:41` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:100 (`far_touch_multiple_fartouch_touchfar`)` | `translated` | `423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905` | +| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:07cf5c5cabecfebf` | `FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms` | `"touchfar", "touchfar"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:42` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:106 (`far_touch_multiple_touchfar_touchfar`)` | `translated` | `423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905` | +| `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:8008f95bc76b47e9` | `FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms` | `"touchfar", "fartouch"` | `LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs:43` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:112 (`far_touch_multiple_touchfar_fartouch`)` | `translated` | `423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905` | +| `LibreMetaverse.Tests/RLV/Restrictions/FlyRestrictionTests.cs::FlyRestrictionTests.CanFly::test` | `FlyRestrictionTests.CanFly` | `` | `LibreMetaverse.Tests/RLV/Restrictions/FlyRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:76 (`fly_restriction`)` | `translated` | `5f60149edccece6b8a6827bbdc6f593ffd863961c13b506f1171aa0cf37fd5b7` | +| `LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs::InteractRestrictionTests.CanInteract::test` | `InteractRestrictionTests.CanInteract` | `` | `LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:85 (`interact_restriction`)` | `translated` | `935d319e07b613ba39b06db30cfd18306670f7dc97186db38c0374c3aac6901e` | +| `LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs::InteractRestrictionTests.CanInteract_default::test` | `InteractRestrictionTests.CanInteract_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs:18` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:94 (`interact_restriction_blocks_touch_edit_rez_and_sit`)` | `translated` | `53b9d7f7cfd63a10538060624f81b7a6b1754a7462c230671ed909698dd18923` | +| `LibreMetaverse.Tests/RLV/Restrictions/JumpRestrictionTests.cs::JumpRestrictionTests.CanJump::test` | `JumpRestrictionTests.CanJump` | `` | `LibreMetaverse.Tests/RLV/Restrictions/JumpRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:125 (`jump_restriction`)` | `translated` | `104374c66e6748d101b69ed5343d9972f29e937305cb17f90244ffa74fc7ed35` | +| `LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs::PermissiveRestrictionTests.Permissive_On::test` | `PermissiveRestrictionTests.Permissive_On` | `` | `LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:269 (`permissive_on_command_disables_permissive_mode`)` | `translated` | `923519a1220e5b3007321fb9ee8cc9db27bc0bbc38bed69df0659e4365c610e8` | +| `LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs::PermissiveRestrictionTests.Permissive_Off::test` | `PermissiveRestrictionTests.Permissive_Off` | `` | `LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:277 (`permissive_off_command_restores_permissive_mode`)` | `translated` | `b995698351bf04e00ab5aed459c8ee08292897545b8684338a90eaf42cd6c4aa` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvChatExceptionTests.cs::RecvChatExceptionTests.CanRecvChat::test` | `RecvChatExceptionTests.CanRecvChat` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvChatExceptionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:44 (`receive_chat_blocks_chat_but_not_emote`)` | `translated` | `017906038e211352d7d2751fafbcab5028cd8b189e7aa29a6202ff578976a23c` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvChatFromRestrictionTests.cs::RecvChatFromRestrictionTests.CanRecvChatFrom::test` | `RecvChatFromRestrictionTests.CanRecvChatFrom` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvChatFromRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:62 (`receive_chat_from_one_user`)` | `translated` | `aaf24dc0b8533a7e93cc567fecbb866067b72da1837207869f879647840bfa21` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvChatSecExceptionTests.cs::RecvChatSecExceptionTests.CanRecvChat_Secure::test` | `RecvChatSecExceptionTests.CanRecvChat_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvChatSecExceptionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:85 (`secure_receive_chat_exceptions_are_sender_scoped`)` | `translated` | `cba089ebe607088e37be285918a1d2c674f1acc4cad075733108afea3ad0279b` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteFromRestrictionTests.cs::RecvEmoteFromRestrictionTests.CanRecvChat_RecvEmoteFrom::test` | `RecvEmoteFromRestrictionTests.CanRecvChat_RecvEmoteFrom` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteFromRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:105 (`receive_emote_from_one_user`)` | `translated` | `d07ded724315cf135603d4dc5a684e5a59a5cf8415963acc30d402ad81916ac1` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteRestrictionTests.cs::RecvEmoteRestrictionTests.CanRecvChat_RecvEmote::test` | `RecvEmoteRestrictionTests.CanRecvChat_RecvEmote` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:133 (`receive_emote_restriction`)` | `translated` | `438b72e6c44570580bf41aa7b8ed00afb800eff8836ee971eab9fc6a00fecc19` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteSecRestrictionTests.cs::RecvEmoteSecRestrictionTests.CanRecvChat_RecvEmote_Secure::test` | `RecvEmoteSecRestrictionTests.CanRecvChat_RecvEmote_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteSecRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:151 (`secure_receive_emote_exceptions_are_sender_scoped`)` | `translated` | `9e1f72426762569b1c650fdf80c53e4a590b6476f8539fff6e110101e48459e8` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMFrom::test` | `RecvImFromRestrictionTests.CanReceiveIMFrom` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:181 (`receive_im_from_one_user`)` | `translated` | `ebe072c7e1c8ba440b560c2e4a0aa5151ba546f5b6cd5505012958e901c58201` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMFrom_Group::test` | `RecvImFromRestrictionTests.CanReceiveIMFrom_Group` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs:22` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:190 (`receive_im_from_one_group`)` | `translated` | `d3d155240723ca2d379f00111a3b27acb41786615a2f5b0ad2c968040d7f4447` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMTo_AllGroups::test` | `RecvImFromRestrictionTests.CanReceiveIMTo_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs:34` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:199 (`receive_im_from_all_groups`)` | `translated` | `dd1050e7ef3e9805b88964822485856d6b2e5e98ee647ee08251cbc5bd452208` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvImRestrictionTests.cs::RecvImRestrictionTests.CanReceiveIM::test` | `RecvImRestrictionTests.CanReceiveIM` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:208 (`receive_im_restriction`)` | `translated` | `9c88e79ed2686e571e32ccecbc93c130423b966ff4e65e72f228f1713e5047cd` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure::test` | `RecvImSecRestrictionTests.CanReceiveIM_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:231 (`secure_receive_im_user_exceptions_are_sender_scoped`)` | `translated` | `e549fe9719efd180f8ab8c80b989701cd23ebf07cd004d9a5a18a0cc7db12e64` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure_Group::test` | `RecvImSecRestrictionTests.CanReceiveIM_Secure_Group` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs:27` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:241 (`secure_receive_im_group_exception`)` | `translated` | `13653ee7443d2eca88f2940d0c3804de3685dcf6c9277a4717a42dad4c01fca4` | +| `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure_AllGroups::test` | `RecvImSecRestrictionTests.CanReceiveIM_Secure_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs:42` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:251 (`secure_receive_im_all_groups_exception`)` | `translated` | `d99435b52a3b774ab5d2bb6911824fa45803fe82cfe0b2c192a05473b72463c8` | +| `LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs::RemAttachRestrictionTests.RemAttach::test` | `RemAttachRestrictionTests.RemAttach` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs:13` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:286 (`remove_attachment_restriction`)` | `translated` | `7005409bfff88f7fb75e5cf87f6f52f4c6f048de32f651b844cf62a1cc16f55c` | +| `LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs::RemAttachRestrictionTests.RemAttach_Specific::test` | `RemAttachRestrictionTests.RemAttach_Specific` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs:55` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:311 (`remove_specific_attachment_restriction`)` | `translated` | `407cb5627753c42af2b469644ddc2857416fb4b181bfbb742b199ad7239d5e6f` | +| `LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs::RemOutfitRestrictionTests.RemOutfit::test` | `RemOutfitRestrictionTests.RemOutfit` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs:14` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:345 (`remove_outfit_restriction`)` | `translated` | `2aa5056c8aec09fb28d0da37bf6861220595cacb3190542d865f99034fc1c488` | +| `LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs::RemOutfitRestrictionTests.RemOutfit_part::test` | `RemOutfitRestrictionTests.RemOutfit_part` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs:56` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs, LibreMetaverse.Tests/RLV/SampleInventoryTree.cs` | `tests/compat/tests/rlv_attachment_restrictions_semantics.rs:370 (`remove_specific_outfit_layer_restriction`)` | `translated` | `f0c36209e33c9961b10ff685c8d4a32e279b4852e1c16a0e724f3cd481089576` | +| `LibreMetaverse.Tests/RLV/Restrictions/RezRestrictionTests.cs::RezRestrictionTests.CanRez::test` | `RezRestrictionTests.CanRez` | `` | `LibreMetaverse.Tests/RLV/Restrictions/RezRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:134 (`rez_restriction`)` | `translated` | `5cae348cc241a884803692031c0af4f33fb3a2ce8331129a9866c5364599eccb` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendChannelRestrictionTests.cs::SendChannelRestrictionTests.CanSendChannel::test` | `SendChannelRestrictionTests.CanSendChannel` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendChannelRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:260 (`send_channel_restriction`)` | `translated` | `8496734391f57cf2f2d8156f3b5a9ad9147c959e3bf99f9e76a4072e971a5b42` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs::SendChannelSecRestrictionTests.CanSendChannel_Secure::test` | `SendChannelSecRestrictionTests.CanSendChannel_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:273 (`secure_send_channel_restrictions_are_sender_scoped`)` | `translated` | `5bd9096e9af488d5cdb08ed78120ef46f81f9be1eaf132c49a955eb07ae904eb` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs::SendChannelSecRestrictionTests.CanSendChannel_Secure_Exception::test` | `SendChannelSecRestrictionTests.CanSendChannel_Secure_Exception` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs:26` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:293 (`secure_send_channel_exception`)` | `translated` | `e675121ba9f6ab8f6e4484e66d76d0dd14f8ef39122c8fff2878ba5e6b3a7409` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs::SendChatRestrictionTests.CanSendChat::test` | `SendChatRestrictionTests.CanSendChat` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:143 (`send_chat_restriction`)` | `translated` | `36cfbe5123b4b37ee43f0b4ba6453ebbe2754960825b1a8481e77e4f3a0e8015` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs::SendChatRestrictionTests.CanChat_SendChatRestriction::test` | `SendChatRestrictionTests.CanChat_SendChatRestriction` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs:15` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:152 (`send_chat_restriction_preserves_slash_messages_and_private_channels`)` | `translated` | `793a31da070038e90c41e4bdb1161daaf51376617a7444867f19c7125ad34313` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendGestureRestrictionTests.cs::SendGestureRestrictionTests.CanSendGesture::test` | `SendGestureRestrictionTests.CanSendGesture` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendGestureRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:169 (`send_gesture_restriction`)` | `translated` | `91367110c04e3c6ad173f56f209a166d828560850d3d084893e899bcc756428a` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendImRestrictionTests.cs::SendImRestrictionTests.CanSendIM::test` | `SendImRestrictionTests.CanSendIM` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:312 (`send_im_restriction`)` | `translated` | `c63ab3a41b6b302e7c84c54374c7193335840bafc40f2d0f2b1c3a2787b26203` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure::test` | `SendImSecRestrictionTests.CanSendIM_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:335 (`secure_send_im_user_exceptions_are_sender_scoped`)` | `translated` | `65422234501bcbf151f27e0d45c74726e670665f39d90df23396f79450ba2b91` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure_Group::test` | `SendImSecRestrictionTests.CanSendIM_Secure_Group` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs:27` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:345 (`secure_send_im_group_exception`)` | `translated` | `4ed2e6416a86eb2406e20bbb7e60a380de25577ad034ba613530ed28f6001df9` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure_AllGroups::test` | `SendImSecRestrictionTests.CanSendIM_Secure_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs:42` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:355 (`secure_send_im_all_groups_exception`)` | `translated` | `a4b699c9ada01ca4ce4d535739178e5310affa938d02dfaede6d034488d24f5f` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo::test` | `SendImToRestrictionTests.CanSendIMTo` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:364 (`send_im_to_one_user`)` | `translated` | `38258cda1081160b6b34f8e909adbc683a0f08efce8c63066bcac09835e5cdcc` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo_Group::test` | `SendImToRestrictionTests.CanSendIMTo_Group` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs:23` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:373 (`send_im_to_one_group`)` | `translated` | `1e12f7e3dbbee7d8dfb757fc8797644a353dfaa995e343e59124aa85126d70aa` | +| `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo_AllGroups::test` | `SendImToRestrictionTests.CanSendIMTo_AllGroups` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs:35` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:382 (`send_im_to_all_groups`)` | `translated` | `bc9b87ab7b171c76987ddaf94f05c0ac2ad8dc0c1f24f5dfce2f4125e7b28df5` | +| `LibreMetaverse.Tests/RLV/Restrictions/SetDebugRestrictionTests.cs::SetDebugRestrictionTests.CanSetDebug::test` | `SetDebugRestrictionTests.CanSetDebug` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SetDebugRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:178 (`set_debug_restriction`)` | `translated` | `d4fb9da4879ef8d1be115e00b7a8de959fd58e32722bc9e2985bca8e97dd2ce3` | +| `LibreMetaverse.Tests/RLV/Restrictions/SetEnvRestrictionTests.cs::SetEnvRestrictionTests.CanSetEnv::test` | `SetEnvRestrictionTests.CanSetEnv` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SetEnvRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:187 (`set_env_restriction`)` | `translated` | `bb4c82afd643d267264467282cdfe09095c804079e73dd15179e1aa0b063c08f` | +| `LibreMetaverse.Tests/RLV/Restrictions/SetGroupRestrictionTests.cs::SetGroupRestrictionTests.CanSetGroup::test` | `SetGroupRestrictionTests.CanSetGroup` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SetGroupRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:196 (`set_group_restriction`)` | `translated` | `9d89210cbc5c188985a535ae045e44d296c796f700d4a1e2b7b4d75345cc4a6d` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShareRestrictionTests.cs::ShareRestrictionTests.CanShare::test` | `ShareRestrictionTests.CanShare` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShareRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:391 (`share_restriction`)` | `translated` | `23052e5792ff72624d45b54ccfd02fa5d8025d977010f1e8d34a90d27a4d0e29` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs::ShareSecRestrictionTests.CanShare_Secure_Default::test` | `ShareSecRestrictionTests.CanShare_Secure_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:405 (`secure_share_default`)` | `translated` | `6d61bafb190791ceaccb6c46cde3adf5b5479e6b5e76bafeadd0942400389248` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs::ShareSecRestrictionTests.CanShare_Secure::test` | `ShareSecRestrictionTests.CanShare_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs:24` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:425 (`secure_share_exceptions_are_sender_scoped`)` | `translated` | `e1aed5b3b8efccef47094788c3221e20240c671c1004d6d6bd899e5d9ddd51fa` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextAllRestrictionTests.cs::ShowHoverTextAllRestrictionTests.CanShowHoverTextAll::test` | `ShowHoverTextAllRestrictionTests.CanShowHoverTextAll` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextAllRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:453 (`show_hover_text_all_restriction`)` | `translated` | `6a855738e87477d31dc7867d0c75ba1bf563e2b1e180f54759657a58b7da9793` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextHudRestrictionTests.cs::ShowHoverTextHudRestrictionTests.CanShowHoverTextHud::test` | `ShowHoverTextHudRestrictionTests.CanShowHoverTextHud` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextHudRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:462 (`show_hover_text_hud_restriction`)` | `translated` | `9d08e2a3eb303b14c4b222cae5d52537e81a7d9cfc9fcfe9625d513b6311a6ed` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextRestrictionTests.cs::ShowHoverTextRestrictionTests.CanShowHoverText::test` | `ShowHoverTextRestrictionTests.CanShowHoverText` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:473 (`show_hover_text_one_object_restriction`)` | `translated` | `5642102d6832b227c37c14d0fbfc30921022c5789b811021805db6f3a2120f36` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextWorldRestrictionTests.cs::ShowHoverTextWorldRestrictionTests.CanShowHoverTextWorld::test` | `ShowHoverTextWorldRestrictionTests.CanShowHoverTextWorld` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextWorldRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:484 (`show_hover_text_world_restriction`)` | `translated` | `1be82408fbc87f1525dc7652e01fbbc17a993b70a2268f0b742d035b37cbf70c` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowInvRestrictionTests.cs::ShowInvRestrictionTests.CanShowInv::test` | `ShowInvRestrictionTests.CanShowInv` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowInvRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:205 (`show_inventory_restriction`)` | `translated` | `b7c8bb7ad9d2c02c1c0168531c8ac0636885817a40b13bc006f4f5b20d28591c` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowLocRestrictionTests.cs::ShowLocRestrictionTests.CanShowLoc::test` | `ShowLocRestrictionTests.CanShowLoc` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowLocRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:214 (`show_location_restriction`)` | `translated` | `a8b154f2db967ab72781f31dcd7701d204f66ece1ef95a30cc67d788c78da617` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowMiniMapRestrictionTests.cs::ShowMiniMapRestrictionTests.CanShowMiniMap::test` | `ShowMiniMapRestrictionTests.CanShowMiniMap` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowMiniMapRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:223 (`show_mini_map_restriction`)` | `translated` | `da901135b533aee1b025cf5dd925e857b4734ea00770ced4518f501453ea9736` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowNameTagsRestrictionTests.cs::ShowNameTagsRestrictionTests.CanShowNameTags::test` | `ShowNameTagsRestrictionTests.CanShowNameTags` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNameTagsRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:495 (`show_name_tags_restriction`)` | `translated` | `74e8a6aefdefb9eb41509f6b4438e6854e5ad0ace38ab663f445aae484e94e22` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesRestrictionTests.cs::ShowNamesRestrictionTests.CanShowNames::test` | `ShowNamesRestrictionTests.CanShowNames` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:509 (`show_names_restriction`)` | `translated` | `c44fe98d881a89af5db856e98f7bd7480d9bfb4378730002e518a7d1da412812` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure_Default::test` | `ShowNamesSecRestrictionTests.CanShowNames_Secure_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:523 (`secure_show_names_default`)` | `translated` | `98d2c84d2f226fbb4b03c365f3ab007142d87b1980dda3666ce5ec36909fc599` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure::test` | `ShowNamesSecRestrictionTests.CanShowNames_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs:23` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:543 (`secure_show_names_exceptions_are_sender_scoped`)` | `translated` | `90ae29916dc2b60cd3de336e4a37683de8967f448fef26af360e3d24278773d3` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure_Except::test` | `ShowNamesSecRestrictionTests.CanShowNames_Secure_Except` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs:39` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:567 (`secure_show_names_direct_exception`)` | `translated` | `457772321f7fd1ea88a279e99a4b0a955e462652bac1fb7953b8455f3d67a155` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowNearbyRestrictionTests.cs::ShowNearbyRestrictionTests.CanShowNearby::test` | `ShowNearbyRestrictionTests.CanShowNearby` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowNearbyRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:232 (`show_nearby_restriction`)` | `translated` | `4faa79795b1143934efbd8ebea7a926b270dd5d1e69f8a64f496063d570d868d` | +| `LibreMetaverse.Tests/RLV/Restrictions/ShowWorldMapRestrictionTests.cs::ShowWorldMapRestrictionTests.CanShowWorldMap::test` | `ShowWorldMapRestrictionTests.CanShowWorldMap` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ShowWorldMapRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:241 (`show_world_map_restriction`)` | `translated` | `da16f247df929f83ed21377869790c00cb5922fa6086da3787e90570f5684f67` | +| `LibreMetaverse.Tests/RLV/Restrictions/SitRestrictionTests.cs::SitRestrictionTests.CanSit::test` | `SitRestrictionTests.CanSit` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:250 (`sit_restriction`)` | `translated` | `813906dbfd09bb02c129a794f40a2f5dcda6e73d232e167359a6360a350fa4b4` | +| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Default::test` | `SitTpRestrictionTests.CanSitTp_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:124 (`sit_tp_default`)` | `translated` | `ddcdba94af060ede43f0d585688966ccd923238a2365164b32a301b04d83cdfc` | +| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Single::test` | `SitTpRestrictionTests.CanSitTp_Single` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:18` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:130 (`sit_tp_single`)` | `translated` | `041c57829ab1032eed79e6f47c8b9026124b681fb6ffa4b3c5ac16b16d0b354b` | +| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_SingleSender::test` | `SitTpRestrictionTests.CanSitTp_Multiple_SingleSender` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:27` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:138 (`sit_tp_multiple_single_sender`)` | `translated` | `feed9f3cca3395e1eb5a8d831304a4171e79f6e1d93f03a4aca0e27edba5ed6d` | +| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_SingleSender_WithRemoval::test` | `SitTpRestrictionTests.CanSitTp_Multiple_SingleSender_WithRemoval` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:38` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:146 (`sit_tp_multiple_single_sender_with_removal`)` | `translated` | `4b26c525e0a13fbc79b280f0a6c3b0f9e3e0e664241e9f55a88eda3dd80b203a` | +| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_MultipleSenders::test` | `SitTpRestrictionTests.CanSitTp_Multiple_MultipleSenders` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:52` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:163 (`sit_tp_multiple_senders`)` | `translated` | `cd9e3508d44e2e008609ac0cc12d3e207ec454a3f5c6e36aa325d33be9b6718f` | +| `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Off::test` | `SitTpRestrictionTests.CanSitTp_Off` | `` | `LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs:66` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:173 (`sit_tp_off`)` | `translated` | `e871d15d797e0f8f0b02613c2a421b47b87068c8757bbd0104cd15d406137854` | +| `LibreMetaverse.Tests/RLV/Restrictions/StandTpRestrictionTests.cs::StandTpRestrictionTests.CanStandTp::test` | `StandTpRestrictionTests.CanStandTp` | `` | `LibreMetaverse.Tests/RLV/Restrictions/StandTpRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:259 (`stand_tp_restriction`)` | `translated` | `0f694e59d32c3c97fbee072d591b74c89561f4648bd3440002d8f54db0058a94` | +| `LibreMetaverse.Tests/RLV/Restrictions/StartImRestrictionTests.cs::StartImRestrictionTests.CanStartIM::test` | `StartImRestrictionTests.CanStartIM` | `` | `LibreMetaverse.Tests/RLV/Restrictions/StartImRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:590 (`start_im_restriction`)` | `translated` | `cc8318d5233b947ca96939369de3a2fdc2c21468cc13a87c87908126c6e45500` | +| `LibreMetaverse.Tests/RLV/Restrictions/StartImToRestrictionTests.cs::StartImToRestrictionTests.CanStartIMTo::test` | `StartImToRestrictionTests.CanStartIMTo` | `` | `LibreMetaverse.Tests/RLV/Restrictions/StartImToRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_social_restrictions_semantics.rs:598 (`start_im_to_one_user`)` | `translated` | `0c7e19de2ecf94a6db09ee409ff88ff503e02d8dd8f7f11f427cebc51a3ac09f` | +| `LibreMetaverse.Tests/RLV/Restrictions/TempRunRestrictionTests.cs::TempRunRestrictionTests.CanTempRun::test` | `TempRunRestrictionTests.CanTempRun` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TempRunRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:268 (`temp_run_restriction`)` | `translated` | `8893bb24bf10de7e914874c347ac5b73982d33925a1cf29ae8c361c3087be408` | +| `LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs::TouchAllRestrictionTests.TouchAll::test` | `TouchAllRestrictionTests.TouchAll` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:214 (`touch_all_default_permissions`)` | `translated` | `06da3251125bf4d3b2d542cfba7fa0a7b0c18dc0f97024a57c0e0ddf6cfc8dd6` | +| `LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs::TouchAllRestrictionTests.TouchAll_default::test` | `TouchAllRestrictionTests.TouchAll_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs:24` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:220 (`touch_all_restricted`)` | `translated` | `9526d7bed6473afd41f97fb11ec950caae157865cec8eee719030ca109ab2681` | +| `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs::TouchAttachOtherRestrictionTests.TouchAttachOther_default::test` | `TouchAttachOtherRestrictionTests.TouchAttachOther_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:228 (`touch_attach_other_default`)` | `translated` | `1f8157f5fd5db8b5a4596d5be6a5d780704cac85370204c77eca08da286adb86` | +| `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs::TouchAttachOtherRestrictionTests.TouchAttachOther_Specific::test` | `TouchAttachOtherRestrictionTests.TouchAttachOther_Specific` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs:26` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:236 (`touch_attach_other_specific_user`)` | `translated` | `add9d393d4aaf03768239611a8a64b2ef73fc4c8561dbbc51950a10c006198e6` | +| `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachRestrictionTests.cs::TouchAttachRestrictionTests.TouchAttach_default::test` | `TouchAttachRestrictionTests.TouchAttach_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:266 (`touch_attach_default`)` | `translated` | `4c4c65f8ed4b29367c353a02e52c91e9402788ffd35c75e5a6a40a827710e20a` | +| `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachSelfRestrictionTests.cs::TouchAttachSelfRestrictionTests.TouchAttachSelf_default::test` | `TouchAttachSelfRestrictionTests.TouchAttachSelf_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchAttachSelfRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:274 (`touch_attach_self_default`)` | `translated` | `09f7d7a45a9899746c1c63608f95db89ef2ae4a875437a2b594bb120da8139ff` | +| `LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs::TouchHudRestrictionTests.TouchHud_default::test` | `TouchHudRestrictionTests.TouchHud_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs:12` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:282 (`touch_hud_default`)` | `translated` | `b15afadb1f45b51eb47651a9d890ed2a6b1de8066d986d9b1ccc33da734c0194` | +| `LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs::TouchHudRestrictionTests.TouchHud_specific::test` | `TouchHudRestrictionTests.TouchHud_specific` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs:26` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:290 (`touch_hud_specific_object`)` | `translated` | `4c4e1a9493e5cf34f220ebec54c5373e1b30c81044803deece263dced5f7155d` | +| `LibreMetaverse.Tests/RLV/Restrictions/TouchWorldRestrictionTests.cs::TouchWorldRestrictionTests.TouchWorld_default::test` | `TouchWorldRestrictionTests.TouchWorld_default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TouchWorldRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:299 (`touch_world_default`)` | `translated` | `5995288721c44beaa329b266e15d619f2314c9ca74386145294183c7c509b42a` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpLmRestrictionTests.cs::TpLmRestrictionTests.CanTpLm::test` | `TpLmRestrictionTests.CanTpLm` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLmRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:277 (`tp_landmark_restriction`)` | `translated` | `847bd3264fd831837d8dab25b235450f19591fef3b3bd0315021727453ad64ee` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpLocRestrictionTests.cs::TpLocRestrictionTests.CanTpLoc::test` | `TpLocRestrictionTests.CanTpLoc` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLocRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:286 (`tp_location_restriction`)` | `translated` | `8e5e2ab1b55b710ecce509b141ccac9bcd9ebbad479868496645ac89574bd089` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs::TpLocalRestrictionTests.CanTpLocal_Default::test` | `TpLocalRestrictionTests.CanTpLocal_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:315 (`tp_local_default_distance`)` | `translated` | `4b251429c6561c1d29f19f8fbc33dd0fb11344fe0d10962e789823ffedb3777b` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs::TpLocalRestrictionTests.CanTpLocal::test` | `TpLocalRestrictionTests.CanTpLocal` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs:18` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:321 (`tp_local_explicit_distance`)` | `translated` | `f9dd3daf337533beab1f4c2dce488f44dea5d17880e8f61b33e3c17c1a4c776f` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs::TpLureRestrictionTests.CanTpLure_Default::test` | `TpLureRestrictionTests.CanTpLure_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:327 (`tp_lure_default`)` | `translated` | `595e468736aab4136404842adf36a79f37b9900c3ee3993079621a5a6c96dec1` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs::TpLureRestrictionTests.CanTpLure::test` | `TpLureRestrictionTests.CanTpLure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs:20` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:335 (`tp_lure_restricted`)` | `translated` | `a57f7803128d75a0f1ba35a1c7489f78ca99d7e5e540f06b84725da8a5cd10da` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs::TpLureSecRestrictionTests.CanTpLure_Secure_Default::test` | `TpLureSecRestrictionTests.CanTpLure_Secure_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs:10` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:345 (`secure_tp_lure_default`)` | `translated` | `577c2c8d22ba1aa8d4426832807ea4ed8cd243836b0d38b0ebc9f32a851c34f4` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs::TpLureSecRestrictionTests.CanTpLure_Secure::test` | `TpLureSecRestrictionTests.CanTpLure_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs:24` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:356 (`secure_tp_lure_exceptions_are_sender_scoped`)` | `translated` | `38f2894e39bdd7c3c8e1520fa6ed02573be3dfdef0bc5bd1073d9d2240917804` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs::TpRequestRestrictionTests.CanTpRequest::test` | `TpRequestRestrictionTests.CanTpRequest` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:368 (`tp_request_restricted`)` | `translated` | `08ddf0e6dd1faf1f249bc7f7a9545d9e33efb5a438eacc3606b1495a83cf57db` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs::TpRequestRestrictionTests.CanTpRequest_Except::test` | `TpRequestRestrictionTests.CanTpRequest_Except` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs:22` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:382 (`tp_request_exception`)` | `translated` | `89ccb1dd172928c41079555cb6d7ff3fcbd34594dcff0399670cdebc739ac109` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs::TpRequestSecRestrictionTests.CanTpRequest_Secure_Default::test` | `TpRequestSecRestrictionTests.CanTpRequest_Secure_Default` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs:11` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:401 (`secure_tp_request_default`)` | `translated` | `87cb0ffa95d408d55045ade0966979360c28762e05729893b068801ed3b877ed` | +| `LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs::TpRequestSecRestrictionTests.CanTpRequest_Secure::test` | `TpRequestSecRestrictionTests.CanTpRequest_Secure` | `` | `LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs:25` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs:420 (`secure_tp_request_exceptions_are_sender_scoped`)` | `translated` | `623310f5c9150f6d6527b0db0446e2c33bf873a849a8dc68b78a4173d130da93` | +| `LibreMetaverse.Tests/RLV/Restrictions/UnsitRestrictionTests.cs::UnsitRestrictionTests.CanUnsit::test` | `UnsitRestrictionTests.CanUnsit` | `` | `LibreMetaverse.Tests/RLV/Restrictions/UnsitRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:295 (`unsit_restriction`)` | `translated` | `2341a0d230eace08d612a1ae3f9aac7b5a1d3d914f04b6ada4726523e9bd3a37` | +| `LibreMetaverse.Tests/RLV/Restrictions/ViewNoteRestrictionTests.cs::ViewNoteRestrictionTests.CanViewNote::test` | `ViewNoteRestrictionTests.CanViewNote` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ViewNoteRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:304 (`view_note_restriction`)` | `translated` | `954472ccc5e060f987260c7d8f87f09dcb252e832c22810ed48dd316a173cf5e` | +| `LibreMetaverse.Tests/RLV/Restrictions/ViewScriptRestrictionTests.cs::ViewScriptRestrictionTests.CanViewScript::test` | `ViewScriptRestrictionTests.CanViewScript` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ViewScriptRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:313 (`view_script_restriction`)` | `translated` | `5e9246991c14d80bc83aad4b5944bd9701dc32b354a701a378def8924f7b5315` | +| `LibreMetaverse.Tests/RLV/Restrictions/ViewTextureRestrictionTests.cs::ViewTextureRestrictionTests.CanViewTexture::test` | `ViewTextureRestrictionTests.CanViewTexture` | `` | `LibreMetaverse.Tests/RLV/Restrictions/ViewTextureRestrictionTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_simple_restrictions_semantics.rs:322 (`view_texture_restriction`)` | `translated` | `d1ee89e12ea9c2d971b4d11c82f3129412fd56fa28d2bd2fb923f082eda62571` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Single::test` | `RestrictionsCameraTests.CamZoomMin_Single` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:17` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:64 (`cam_zoom_min_single`)` | `translated` | `5f3010d46f3f18ed57ea52916dd9e8bde27d75c707dbcc0c6d68eb9bbe6c3591` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender::test` | `RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:27` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:74 (`cam_zoom_min_multiple_single_sender`)` | `translated` | `0df818c7a6c90358cb52f59f972e16c769d38f448619dbdfeddd5a602f64d1d9` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender_WithRemoval::test` | `RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender_WithRemoval` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:39` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:88 (`cam_zoom_min_removes_matching_value`)` | `translated` | `ed19a63ef16a600c9367f45d1a704739fd8e20e7811c7055df009676884de7dd` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_MultipleSenders::test` | `RestrictionsCameraTests.CamZoomMin_Multiple_MultipleSenders` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:54` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:104 (`cam_zoom_min_multiple_senders`)` | `translated` | `c8ce609cf7506ae2df6e17126ebe5174f958245bedea26fe39600fb90195bdda` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Off::test` | `RestrictionsCameraTests.CamZoomMin_Off` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:69` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:118 (`cam_zoom_min_off`)` | `translated` | `8f8ec9da2b0196a51dfb3fea709de597bdb440196697523824f78ef359a5482a` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Default::test` | `RestrictionsCameraTests.CamZoomMax_Default` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:81` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:128 (`cam_zoom_max_default`)` | `translated` | `5997b7c86a1b1dac59b7f6c03d38cd09f0fb12619f03f68e1167c85ebe02f7d0` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Single::test` | `RestrictionsCameraTests.CamZoomMax_Single` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:88` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:134 (`cam_zoom_max_single`)` | `translated` | `75530a051696ffd586b5643f0c9b9f1ae1c05bd30f9c3068f94cb30abbdc6d2d` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender::test` | `RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:98` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:144 (`cam_zoom_max_multiple_single_sender`)` | `translated` | `44d6a5b2a9462c83047f5b4ec9f4e66bb518f6547ec08df2b5420850129ff7cb` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender_WithRemoval::test` | `RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender_WithRemoval` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:110` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:158 (`cam_zoom_max_removes_matching_value`)` | `translated` | `4958ce547ff71cf18d31cd557ecaecb8ae0a19b169c2051bd6797769bbcde26e` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_MultipleSenders::test` | `RestrictionsCameraTests.CamZoomMax_Multiple_MultipleSenders` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:125` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:174 (`cam_zoom_max_multiple_senders`)` | `translated` | `76346d0c1f4ecf22d09c1950aef99207d28ffe5576b7bc0be1212b91d6518f2c` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Off::test` | `RestrictionsCameraTests.CamZoomMax_Off` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:140` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:188 (`cam_zoom_max_off`)` | `translated` | `88e2ec791d3f78bb6551b7d37a52cc5dc18c156ddd483bd6ba55288144005e5c` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin::test` | `RestrictionsCameraTests.CamZoomMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:153` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:198 (`cam_zoom_min_command`)` | `translated` | `cf5f8bfbea933b64bc282211f498b01eefab0b31728800e2965a8a489f85b15d` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax::test` | `RestrictionsCameraTests.CamZoomMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:165` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:208 (`cam_zoom_max_command`)` | `translated` | `7441bff0655432365bb702cce92465ab0ab7b7dd195b732312a4e243f975ba48` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFovMin::test` | `RestrictionsCameraTests.SetCamFovMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:177` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:218 (`set_cam_fov_min`)` | `translated` | `b433f776bfa059a889b1a13ebc0841c824715194b6b0634dea1dd5740d5b7bbe` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFovMax::test` | `RestrictionsCameraTests.SetCamFovMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:189` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:228 (`set_cam_fov_max`)` | `translated` | `e0f313a03073b283400130e5a91c8c4157c9b83f9001f1ad1badf15f80821663` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov::test` | `RestrictionsCameraTests.SetCamFov` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:201` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:238 (`set_cam_fov_records_exact_value`)` | `translated` | `02118d87dfda863c31de56267a31beba94ff124ca225f56d67222b6ffaf0c6f9` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov_Restricted::test` | `RestrictionsCameraTests.SetCamFov_Restricted` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:214` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:246 (`set_cam_fov_restricted`)` | `translated` | `34b9c620b61777ece7ad140fc15dde6d2b77d877af597cf2a1b5d5f768cd5fc7` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov_Restricted_Synonym::test` | `RestrictionsCameraTests.SetCamFov_Restricted_Synonym` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:229` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:255 (`set_cam_fov_restricted_by_synonym`)` | `translated` | `d8824c6f673ea7c101d309643ed4dbacc0fd6b17c0bda13f8cbb16b956529db4` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMax::test` | `RestrictionsCameraTests.SetCamAvDistMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:246` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:264 (`set_cam_av_dist_max`)` | `translated` | `61206ccc9664f63057389d0d9540022ba82da88b1e213387a9a7f0d0cec050b3` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMax_Synonym::test` | `RestrictionsCameraTests.SetCamAvDistMax_Synonym` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:255` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:274 (`set_cam_av_dist_max_synonym`)` | `translated` | `9742afe1eb83fe3b63f6ce195bb1fb08058a6272e9817b3d1e09c50ca914a66a` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMin::test` | `RestrictionsCameraTests.SetCamAvDistMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:267` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:284 (`set_cam_av_dist_min`)` | `translated` | `be661f7ae623eafe2c00a7eb80a716ab832cd56be904725cfa01c16ab219d10e` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMin_Synonym::test` | `RestrictionsCameraTests.SetCamAvDistMin_Synonym` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:277` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:294 (`set_cam_av_dist_min_synonym`)` | `translated` | `da29486a2c8bc2801805774269743566457ca1b9b316dc6846cf499b60aa588d` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawAlphaMax::test` | `RestrictionsCameraTests.CamDrawAlphaMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:289` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:304 (`cam_draw_alpha_max`)` | `translated` | `96e0f72499cdf258062ca0610594137c72f232ddf936c0cc929429368957d3ed` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMin::test` | `RestrictionsCameraTests.CamDrawMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:302` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:314 (`cam_draw_min`)` | `translated` | `53a901a99baeb1f8d45a07d1347a6491d66ad8ca76cdef5304c64738e486e7a9` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMin_Small::test` | `RestrictionsCameraTests.CamDrawMin_Small` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:312` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:324 (`cam_draw_min_rejects_too_small_value`)` | `translated` | `3f531bfcd6e08830912fd4d619a8ffc5e3ab40e9d036769f742ae0d06207400e` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMax::test` | `RestrictionsCameraTests.CamDrawMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:325` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:340 (`cam_draw_max`)` | `translated` | `71ab081b330b9fc4cc73a06b214f52e577ab25c0ff15439e18737dfb220d7aaf` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMax_Small::test` | `RestrictionsCameraTests.CamDrawMax_Small` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:335` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:350 (`cam_draw_max_rejects_too_small_value`)` | `translated` | `72d0752ae72ba5288d2b96fca3e0a29c162406b38588160e6801b211c82fac11` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawAlphaMin::test` | `RestrictionsCameraTests.CamDrawAlphaMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:348` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:366 (`cam_draw_alpha_min`)` | `translated` | `697fafc1837d56255cdf5e2a09634dcc740651d45df04a712c030a224a58d0c2` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor::test` | `RestrictionsCameraTests.CamDrawColor` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:362` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:376 (`cam_draw_color`)` | `translated` | `b3bc0346dbcf6c6b03d9c2c38b225e7903754fcbc56c74d098dbdcb617d2426d` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Default::test` | `RestrictionsCameraTests.CamDrawColor_Default` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:375` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:388 (`cam_draw_color_default`)` | `translated` | `fedba7874c0b897309caca0e007cb9fbcbce8cd5155c91ec94bf6d1f391d47a1` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Large::test` | `RestrictionsCameraTests.CamDrawColor_Large` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:382` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:394 (`cam_draw_color_clamps_large_components`)` | `translated` | `6d2f0a4a24e71afbca88f3dfe574ff8ee5825e4df9a08552ac4af22a0a6b9f5e` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Negative::test` | `RestrictionsCameraTests.CamDrawColor_Negative` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:395` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:405 (`cam_draw_color_clamps_negative_components`)` | `translated` | `5f7ae954b3f75c5a86da8222a5eadc42ac3fee6ac4134455fb2a7a2e24101081` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Removal::test` | `RestrictionsCameraTests.CamDrawColor_Removal` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:408` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:416 (`cam_draw_color_removal`)` | `translated` | `81322059c2a6e0054c1d2131e0698c614942eec69958f72315545e9b1517fcb5` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Multi::test` | `RestrictionsCameraTests.CamDrawColor_Multi` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:418` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:430 (`cam_draw_color_averages_multiple_values`)` | `translated` | `21b9615f5a7e809ec83442035588414101fdf3862f282f1a501fb15d904f981e` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CanSetCamUnlock::test` | `RestrictionsCameraTests.CanSetCamUnlock` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:434` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:445 (`set_cam_unlock_toggles_lock`)` | `translated` | `3983d83fb0086bc71a585eeda9b561c738ba1eb99365182115a673ab38e166a1` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CanCamUnlock::test` | `RestrictionsCameraTests.CanCamUnlock` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:448` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:467 (`cam_unlock_synonym_toggles_lock`)` | `translated` | `b116d0b63222b30c67da7c08d48f10701f5def2bdd3584166939d713a86a8cd4` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamAvDist::test` | `RestrictionsCameraTests.CamAvDist` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:462` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:489 (`cam_av_dist`)` | `translated` | `4c5641b0e975136e815bfaf8d9821240f0ac2bc615ed105fa5190dfdbcddc158` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures::case:0fdad12f3bfb0585` | `RestrictionsCameraTests.SetCamTextures` | `"setcam_textures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:476` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:499 (`set_cam_textures_empty_uuid`)` | `translated` | `4b5058bfacb3e7f282bb83d0068ff9c7c7464b0d4119f879d670ddaf34d469b6` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures::case:19c11fd923cc347d` | `RestrictionsCameraTests.SetCamTextures` | `"camtextures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:477` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:505 (`cam_textures_empty_uuid`)` | `translated` | `4b5058bfacb3e7f282bb83d0068ff9c7c7464b0d4119f879d670ddaf34d469b6` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Single::case:0fdad12f3bfb0585` | `RestrictionsCameraTests.SetCamTextures_Single` | `"setcam_textures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:486` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:511 (`set_cam_textures_single`)` | `translated` | `abe9a6cff61faf1afbd29c4b073d34d67cf5e77058df44b68cbed7e1d9569814` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Single::case:19c11fd923cc347d` | `RestrictionsCameraTests.SetCamTextures_Single` | `"camtextures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:487` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:520 (`cam_textures_single`)` | `translated` | `abe9a6cff61faf1afbd29c4b073d34d67cf5e77058df44b68cbed7e1d9569814` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:1c2423e3f02a5f03` | `RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms` | `"setcam_textures", "setcam_textures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:498` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:552 (`set_cam_textures_then_set_cam_textures`)` | `translated` | `42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:57689650dc307766` | `RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms` | `"setcam_textures", "camtextures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:499` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:561 (`set_cam_textures_then_cam_textures`)` | `translated` | `42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:081becc69dc8e183` | `RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms` | `"camtextures", "camtextures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:500` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:570 (`cam_textures_then_cam_textures`)` | `translated` | `42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:d96d157e365ded15` | `RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms` | `"camtextures", "setcam_textures"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:501` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:579 (`cam_textures_then_set_cam_textures`)` | `translated` | `42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamAvDistMin::test` | `RestrictionsCameraTests.GetCamAvDistMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:534` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:588 (`get_cam_av_dist_min`)` | `translated` | `60d28627494c147228930839a18016e3cbfa8eb042167965647794902eb340a6` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamAvDistMax::test` | `RestrictionsCameraTests.GetCamAvDistMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:557` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:597 (`get_cam_av_dist_max`)` | `translated` | `a7cf7887d2934984cc13e10f3afa3248a5e677c9fac680af2a68c3a27d76c3da` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFovMin::test` | `RestrictionsCameraTests.GetCamFovMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:578` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:606 (`get_cam_fov_min`)` | `translated` | `25a040ca69bf4c2a303d45314fec99e70371bf6ac46e1793384e0a626deb4e75` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFovMax::test` | `RestrictionsCameraTests.GetCamFovMax` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:600` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:615 (`get_cam_fov_max`)` | `translated` | `19153fa188ef6bd763235a03048771d1a1d824c1aeaf64841b7e6e70c35813ae` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamZoomMin::test` | `RestrictionsCameraTests.GetCamZoomMin` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:622` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:624 (`get_cam_zoom_min`)` | `translated` | `8cd72b3f1922b913c6bde59b928f362fa191574dc1df3cfb4668d4ccf00515a9` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFov::test` | `RestrictionsCameraTests.GetCamFov` | `` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:644` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:633 (`get_cam_fov`)` | `translated` | `f4031d095b9a7e87d1f1d94e52c15c3c9b2b43aa1ba039c83e391e58ea994c40` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:6e89e27b90f28739` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_zoommin=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:664` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:642 (`camera_settings_default_get_zoom_min`)` | `translated` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:82ff323c4cfaad18` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_fov=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:665` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:651 (`camera_settings_default_get_fov`)` | `translated` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:c64b136643c55ed8` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_fovmax=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:666` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:657 (`camera_settings_default_get_fov_max`)` | `translated` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:32ad2cfbbfcf0638` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_avdistmin=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:667` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:666 (`camera_settings_default_get_av_dist_min`)` | `translated` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:21855f1f68a52025` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_avdistmax=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:668` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:675 (`camera_settings_default_get_av_dist_max`)` | `translated` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | +| `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:065ec3bc69e3f2b0` | `RestrictionsCameraTests.CameraSettings_Default` | `"@getcam_fovmin=1234"` | `LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs:669` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_camera_semantics.rs:684 (`camera_settings_default_get_fov_min`)` | `translated` | `4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_EmptyByDefault::test` | `RlvBlacklistTests.GetBlacklist_EmptyByDefault` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:9` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:46 (`blacklist_is_empty_by_default`)` | `translated` | `9bd5c937815547d2d4b9dcfcb5c35d69e224cc4dc256273735c69b8be150c3a8` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_ValidBehavior_AddsToBlacklist::test` | `RlvBlacklistTests.BlacklistBehavior_ValidBehavior_AddsToBlacklist` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:19` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:59 (`blacklist_adds_valid_behavior`)` | `translated` | `dbf7650afeab51abc22fc48881a06e4908f373b6b0077fe58fc4d4e50ea0e0f5` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_CaseInsensitive_NormalizesToLowercase::test` | `RlvBlacklistTests.BlacklistBehavior_CaseInsensitive_NormalizesToLowercase` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:34` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:72 (`blacklist_normalizes_to_lowercase`)` | `translated` | `dbc4161b4cd5dd7f3609b11f1c6f4f6e1e243b2ba65a444afa67c70cf649c5d3` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_DuplicateBehavior_OnlyAddsOnce::test` | `RlvBlacklistTests.BlacklistBehavior_DuplicateBehavior_OnlyAddsOnce` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:50` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:84 (`blacklist_deduplicates_case_insensitively`)` | `translated` | `53644a5123b90e32f162a9106c945a57d05b17de1a8ab0bf1930283deaf28018` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:12ae32cb1ec02d01` | `RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `""` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:67` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:100 (`blacklist_rejects_empty_behavior`)` | `translated` | `d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:52109349dabf6910` | `RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `" "` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:68` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:106 (`blacklist_rejects_spaces_behavior`)` | `translated` | `d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:729e2865c247816a` | `RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `"\t"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:69` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:112 (`blacklist_rejects_tab_behavior`)` | `translated` | `d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:d7a5e915306d21dc` | `RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `"\n"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:70` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:118 (`blacklist_rejects_newline_behavior`)` | `translated` | `d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_ExistingBehavior_RemovesFromBlacklist::test` | `RlvBlacklistTests.UnBlacklistBehavior_ExistingBehavior_RemovesFromBlacklist` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:78` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:124 (`unblacklist_removes_existing_behavior`)` | `translated` | `47501ced70145add192d357c6a2647ca4a923bdaab3b1eff1c3857cebc5020db` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_CaseInsensitive_RemovesCorrectBehavior::test` | `RlvBlacklistTests.UnBlacklistBehavior_CaseInsensitive_RemovesCorrectBehavior` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:93` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:136 (`unblacklist_is_case_insensitive`)` | `translated` | `b5f4a87e8dc603a08a9f1225a35e44962d4240a3e5b9e605c948d19b268ed1bd` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NonExistentBehavior_DoesNothing::test` | `RlvBlacklistTests.UnBlacklistBehavior_NonExistentBehavior_DoesNothing` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:108` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:148 (`unblacklist_nonexistent_behavior_does_nothing`)` | `translated` | `495314ef0e42ec419b804108907c02ffe9520a1657344f391aa491f91129ecc5` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:12ae32cb1ec02d01` | `RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `""` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:123` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:163 (`unblacklist_rejects_empty_behavior`)` | `translated` | `9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:52109349dabf6910` | `RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `" "` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:124` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:169 (`unblacklist_rejects_spaces_behavior`)` | `translated` | `9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:729e2865c247816a` | `RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `"\t"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:125` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:175 (`unblacklist_rejects_tab_behavior`)` | `translated` | `9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:d7a5e915306d21dc` | `RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException` | `"\n"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:126` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:181 (`unblacklist_rejects_newline_behavior`)` | `translated` | `9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_BlacklistedBehavior_ReturnsTrue::test` | `RlvBlacklistTests.IsBlacklisted_BlacklistedBehavior_ReturnsTrue` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:134` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:187 (`is_blacklisted_returns_true_for_added_behavior`)` | `translated` | `2cfeda6f45d63514216d0ffccdee89ee4b7f78e775f43fb12ee78324f9cfde35` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_CaseInsensitive_ReturnsTrue::test` | `RlvBlacklistTests.IsBlacklisted_CaseInsensitive_ReturnsTrue` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:145` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:200 (`is_blacklisted_is_case_insensitive`)` | `translated` | `1b4c6ed072b97dd9abcc0f730533691d8a65122d1839d40736e98a0f5c43f07d` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NonBlacklistedBehavior_ReturnsFalse::test` | `RlvBlacklistTests.IsBlacklisted_NonBlacklistedBehavior_ReturnsFalse` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:158` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:210 (`is_blacklisted_returns_false_for_missing_behavior`)` | `translated` | `f4cc9018c5d111b06dc8c2ce0d6ed042eb063331f35ef1665e65f4d8606d3cd3` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:12ae32cb1ec02d01` | `RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse` | `""` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:168` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:223 (`is_blacklisted_returns_false_for_empty_behavior`)` | `translated` | `ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:52109349dabf6910` | `RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse` | `" "` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:169` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:229 (`is_blacklisted_returns_false_for_spaces_behavior`)` | `translated` | `ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:729e2865c247816a` | `RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse` | `"\t"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:170` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:235 (`is_blacklisted_returns_false_for_tab_behavior`)` | `translated` | `ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:d7a5e915306d21dc` | `RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse` | `"\n"` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:171` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:241 (`is_blacklisted_returns_false_for_newline_behavior`)` | `translated` | `ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_MultipleItems_ReturnsOrderedCollection::test` | `RlvBlacklistTests.GetBlacklist_MultipleItems_ReturnsOrderedCollection` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:178` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:247 (`get_blacklist_returns_ordered_collection`)` | `translated` | `db9bd586b7a4f79ffd2d2c48c8131ccd4bd44d8de444696e9a7c53614ef37ed5` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_ReturnsImmutableCopy::test` | `RlvBlacklistTests.GetBlacklist_ReturnsImmutableCopy` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:197` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:258 (`get_blacklist_returns_independent_copy`)` | `translated` | `64db7441c81ea4f0d2e52e79b479cf658fbd2c2d1d23b918edcfa03db1233a3a` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistWorkflow_AddMultipleBehaviors_WorksCorrectly::test` | `RlvBlacklistTests.BlacklistWorkflow_AddMultipleBehaviors_WorksCorrectly` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:215` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:270 (`blacklist_workflow_adds_and_removes_behaviors`)` | `translated` | `75d84bd0b26b16821ba107bef2bbb2ae58a2726496a757092b24dff6170f8872` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_IntegrationWithRestrictionsBase_WorksCorrectly::test` | `RlvBlacklistTests.SeedBlacklist_IntegrationWithRestrictionsBase_WorksCorrectly` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:252` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:306 (`seed_blacklist_adds_each_comma_separated_behavior`)` | `translated` | `f7347786e3a579dc0102dc20fb73823362866ea71658777aa6835a28a58daea9` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_EmptyString_ResultsInEmptyBlacklist::test` | `RlvBlacklistTests.SeedBlacklist_EmptyString_ResultsInEmptyBlacklist` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:268` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:318 (`seed_blacklist_empty_string_adds_nothing`)` | `translated` | `63555a93fbcc2b7691fdd2b79fe0db8cb305beef2c153b80f0040ba8f4f7117e` | +| `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_WithSpaces_HandlesCorrectly::test` | `RlvBlacklistTests.SeedBlacklist_WithSpaces_HandlesCorrectly` | `` | `LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs:279` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_blacklist_semantics.rs:326 (`seed_blacklist_trims_spaces`)` | `translated` | `ddd764a51e179fa6c349ab2a62bdedde1e62e4ff2ae33aa41a4ebb2359974404` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:7da68a0c44d86b61` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"(spine)", RlvAttachmentPoint.Spine` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:8` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:13 (`attachment_point_spine`)` | `translated` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:d4dfd612ab268dc7` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"(spine)(spine)", RlvAttachmentPoint.Spine` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:9` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:22 (`attachment_point_repeated_spine`)` | `translated` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:58d5bce9d704814b` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"My (mouth) item (spine) has a lot of tags", RlvAttachmentPoint.Spine` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:10` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:31 (`attachment_point_uses_last_known_tag`)` | `translated` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:7c453569c08c0a0f` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"My item (l upper leg) and some random unknown tag (unknown)", RlvAttachmentPoint.LeftUpperLeg` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:11` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:40 (`attachment_point_ignores_unknown_tag`)` | `translated` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:ace2eedabcda99e6` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"Central item (avatar center)", RlvAttachmentPoint.AvatarCenter` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:12` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:49 (`attachment_point_avatar_center`)` | `translated` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:1a967cd76f5fa058` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName` | `"Central item (root)", RlvAttachmentPoint.AvatarCenter` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:13` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:58 (`attachment_point_root_alias`)` | `translated` | `2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:f6b796736de6a5d8` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive` | `"(SPINE)", RlvAttachmentPoint.Spine` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:20` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:67 (`attachment_point_uppercase_spine`)` | `translated` | `cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:787d37133953ab32` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive` | `"(Spine)", RlvAttachmentPoint.Spine` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:21` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:76 (`attachment_point_titlecase_spine`)` | `translated` | `cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:d2056032186a0a97` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive` | `"Central item (Avatar center)", RlvAttachmentPoint.AvatarCenter` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:22` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:85 (`attachment_point_titlecase_avatar_center`)` | `translated` | `cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:c1f038c1236211aa` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive` | `"Another item (l upper leg)", RlvAttachmentPoint.LeftUpperLeg` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:23` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:94 (`attachment_point_lowercase_left_upper_leg`)` | `translated` | `cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:564c3e282f3b402f` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid` | `"(unknown)(hand tag)(spine tag)"` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:30` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:103 (`attachment_point_rejects_unknown_tags`)` | `translated` | `c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:1d03935868fa6124` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid` | `"Hat"` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:31` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:109 (`attachment_point_rejects_untagged_name`)` | `translated` | `c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34` | +| `LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:12ae32cb1ec02d01` | `RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid` | `""` | `LibreMetaverse.Tests/RLV/RlvCommonTests.cs:32` | `` | `` | `tests/compat/tests/rlv_common_semantics.rs:115 (`attachment_point_rejects_empty_name`)` | `translated` | `c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_NoRestrictions_ReturnsEmptyCollection::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_NoRestrictions_ReturnsEmptyCollection` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:16` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:40 (`tracked_prim_ids_empty`)` | `translated` | `327086a5aa514ddf8b2cc40891f7ae5e8039788f5cbfeda86f04bd9161f39ded` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_SingleRestriction_ReturnsSingleId::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_SingleRestriction_ReturnsSingleId` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:26` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:46 (`tracked_prim_ids_single_restriction`)` | `translated` | `85a822c9e2e8beb2e70748513a397b8ccbb2977c0581b0519bd8ad43e699ad57` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleRestrictionsFromSameObject_ReturnsSingleId::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleRestrictionsFromSameObject_ReturnsSingleId` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:41` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:54 (`tracked_prim_ids_deduplicates_one_object`)` | `translated` | `933070f933b0a5a39b3d0cd5fd9be9423a538609d0106b352a7d9c339665d6d1` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleObjects_ReturnsAllUniqueIds::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleObjects_ReturnsAllUniqueIds` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:58` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:62 (`tracked_prim_ids_multiple_objects`)` | `translated` | `8c2afe66145e4815e73d7849f83cfec50e4a7a49793cc757917cd608c9387419` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MixedRestrictionsAndExceptions_ReturnsAllUniqueIds::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_MixedRestrictionsAndExceptions_ReturnsAllUniqueIds` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:79` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:76 (`tracked_prim_ids_include_restrictions_and_exceptions`)` | `translated` | `25ea3c36aba93d5183816962bf49bfdbc3e17e6b06d73a41dee5b51407a84746` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_AfterRemovingRestriction_DoesNotReturnRemovedObjectId::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_AfterRemovingRestriction_DoesNotReturnRemovedObjectId` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:97` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:88 (`tracked_prim_ids_after_removing_restriction`)` | `translated` | `af3d5328e5c829bd2de2b72c3f4ede6f083efa789ccef1d73d752612a177360f` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_AfterClearingAllRestrictions_ReturnsEmptyCollection::test` | `RlvRestrictionManagerTests.GetTrackedPrimIds_AfterClearingAllRestrictions_ReturnsEmptyCollection` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:116` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:100 (`tracked_prim_ids_after_clear`)` | `translated` | `191a8cc3dba7e68155083a6892f1b4a29ab589023e22cffbc8cd69c005884cca` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_EmptyInput_NoEffect::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_EmptyInput_NoEffect` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:136` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:108 (`remove_restrictions_empty_input`)` | `translated` | `8718e08bb2bf951a94803b4947943b5f7f9eb85e906b4ac6c639cb8cd065cf9d` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_NonExistentId_NoEffect::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_NonExistentId_NoEffect` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:152` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:118 (`remove_restrictions_missing_id`)` | `translated` | `882d2315f40317cce9c9a026eda498325b6227886652795ed45e87cc4e5697ac` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_SingleObject_RemovesAllRestrictionsFromObject::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_SingleObject_RemovesAllRestrictionsFromObject` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:170` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:128 (`remove_restrictions_single_object`)` | `translated` | `73ab6ee30a336372f6aef5bc4a99dbb58215b9445daea5d9708d0ea9cabe8bd1` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_MultipleObjects_RemovesOnlySpecifiedObjects::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_MultipleObjects_RemovesOnlySpecifiedObjects` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:193` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:141 (`remove_restrictions_multiple_objects`)` | `translated` | `03b6a6a3e02f6a6a5f296ff1d6cca31c9fc53982cbc9c27e73cfb698ed82acf5` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_PartialMatch_RemovesOnlyMatchingObjects::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_PartialMatch_RemovesOnlyMatchingObjects` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:220` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:156 (`remove_restrictions_partial_match`)` | `translated` | `00a26d807882b2bbb375c5ce7cf1074d3227acd891e859602e78abbdc6eefb6a` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithNotificationRestrictions_SendsNotifications::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithNotificationRestrictions_SendsNotifications` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:242` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:168 (`remove_restrictions_sends_notification`)` | `translated` | `ba82b183dfdb01b36f9b45520e1808290c360f327d4afa833ba3b8c7a7cecffb` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:265` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:187 (`remove_restrictions_complex_types`)` | `translated` | `631de2d39fa56b29014fae4ce3b57c480f540ad41ce08a0037b7f8bbfcb3c502` | +| `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent::test` | `RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent` | `` | `LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs:294` | `` | `LibreMetaverse.Tests/RLV/RlvTestBase.cs` | `tests/compat/tests/rlv_restriction_manager_semantics.rs:235 (`remove_restrictions_triggers_update_event`)` | `translated` | `318f1f4207b04d01076d3498aceea781c4889b05cdbef199cdbea43dde355f4c` | | `LibreMetaverse.Tests/ReaderWriterLockTests.cs::ReaderWriterLockTests.MultipleReadersOneWriter_ReaderConcurrencyAndWriterExclusion::test` | `ReaderWriterLockTests.MultipleReadersOneWriter_ReaderConcurrencyAndWriterExclusion` | `` | `LibreMetaverse.Tests/ReaderWriterLockTests.cs:12` | `` | `` | `tests/compat/tests/types_utilities.rs:592 (`multiple_readers_one_writer_reader_concurrency_and_writer_exclusion`)` | `translated` | `bf63804480951667455038244228f77c30454a365b496f062051f7b34e7b2618` | | `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_WeeklySchedule_ParsesDaysAndTime::test` | `RegionScheduleTests.GetRegionRestartScheduleAsync_WeeklySchedule_ParsesDaysAndTime` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:64` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:285 (`get_region_restart_schedule_weekly_parses_days_and_time`)` | `translated` | `0f64aab66c6a6d807b3d2bbc46b636a85900e4f76e35d5e3dd8cd0d8b295618b` | | `LibreMetaverse.Tests/RegionScheduleTests.cs::RegionScheduleTests.GetRegionRestartScheduleAsync_DailySchedule_ReturnsAllDays::test` | `RegionScheduleTests.GetRegionRestartScheduleAsync_DailySchedule_ReturnsAllDays` | `` | `LibreMetaverse.Tests/RegionScheduleTests.cs:79` | `Estate` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/world_capability_semantics.rs:308 (`get_region_restart_schedule_daily_returns_all_days`)` | `translated` | `cd966b6e3ba470c91ac958bf6c71aeb34f4dab060ad5334cb6060e1954b5c6d0` | diff --git a/tests/compat/src/lib.rs b/tests/compat/src/lib.rs index 1b675ec..93a554d 100644 --- a/tests/compat/src/lib.rs +++ b/tests/compat/src/lib.rs @@ -1,5 +1,7 @@ //! Shared deterministic fixtures used by translated compatibility tests. +pub mod rlv_support; + use std::collections::BTreeMap; use std::future::Future; use std::io; diff --git a/tests/compat/src/rlv_support.rs b/tests/compat/src/rlv_support.rs new file mode 100644 index 0000000..8ae1b3a --- /dev/null +++ b/tests/compat/src/rlv_support.rs @@ -0,0 +1,491 @@ +//! Recording callbacks shared by the RLV translations. + +use libremetaverse_rlv::{ + AttachmentRequest, CameraSettings, IRlvActionCallbacks, IRlvQueryCallbacks, InventoryMap, + RlvAttachmentPoint, RlvInventoryItem, RlvService, RlvSharedFolder, +}; +use libremetaverse_types::Error; +use libremetaverse_types::compat::{CancellationToken, Guid}; +use std::collections::{BTreeMap, HashMap}; +use std::future::Future; +use std::pin::Pin; +use std::sync::{Arc, Mutex}; + +pub const SENDER_NAME: &str = "Sender 1"; +pub const SENDER_ID: &str = "ffffffff-ffff-4fff-8fff-ffffffffffff"; + +/// Parses a UUID literal used by the pinned RLV fixtures. +/// +/// # Panics +/// +/// Panics when `value` is not a 32-digit hexadecimal UUID, ignoring hyphens. +#[must_use] +pub fn guid(value: &str) -> Guid { + let digits: Vec<_> = value.bytes().filter(|byte| *byte != b'-').collect(); + assert_eq!(digits.len(), 32, "valid RLV test UUID"); + let mut bytes = [0; 16]; + for (index, pair) in digits.chunks_exact(2).enumerate() { + let digit = |byte| match byte { + b'0'..=b'9' => byte - b'0', + b'a'..=b'f' => byte - b'a' + 10, + b'A'..=b'F' => byte - b'A' + 10, + _ => panic!("valid RLV test UUID"), + }; + bytes[index] = digit(pair[0]) << 4 | digit(pair[1]); + } + Guid(bytes) +} + +#[derive(Clone, Debug, PartialEq)] +pub struct AttachmentCall { + pub item_id: Guid, + pub point: RlvAttachmentPoint, + pub replace: bool, +} + +#[derive(Clone, Debug, PartialEq)] +pub struct TeleportCall { + pub x: f32, + pub y: f32, + pub z: f32, + pub region: Option, + pub look_at: Option>, +} + +#[derive(Clone, Debug, Default, PartialEq)] +pub struct ActionLog { + pub adjusted_heights: Vec<(f32, f32, f32)>, + pub attachments: Vec>, + pub detachments: Vec>, + pub removed_outfits: Vec>, + pub instant_messages: Vec<(Guid, String)>, + pub replies: Vec<(i32, String)>, + pub camera_fovs: Vec, + pub debug_settings: Vec<(String, String)>, + pub environment_settings: Vec<(String, String)>, + pub group_ids: Vec<(Guid, Option)>, + pub group_names: Vec<(String, Option)>, + pub rotations: Vec, + pub sits: Vec, + pub sit_ground_count: usize, + pub teleports: Vec, + pub unsit_count: usize, +} + +#[derive(Clone, Default)] +pub struct RecordingActions(pub Arc>); + +type ActionFuture<'a> = Pin> + Send + 'a>>; + +impl IRlvActionCallbacks for RecordingActions { + fn adjust_height( + &self, + distance: f32, + factor: f32, + delta: f32, + _: CancellationToken, + ) -> ActionFuture<'_> { + self.0 + .lock() + .unwrap() + .adjusted_heights + .push((distance, factor, delta)); + Box::pin(async { Ok(()) }) + } + + fn attach(&self, requests: Vec, _: CancellationToken) -> ActionFuture<'_> { + let calls = requests + .iter() + .map(|request| AttachmentCall { + item_id: request.item_id(), + point: request.attachment_point(), + replace: request.replace_existing_attachments(), + }) + .collect(); + self.0.lock().unwrap().attachments.push(calls); + Box::pin(async { Ok(()) }) + } + + fn detach(&self, item_ids: Vec, _: CancellationToken) -> ActionFuture<'_> { + self.0.lock().unwrap().detachments.push(item_ids); + Box::pin(async { Ok(()) }) + } + + fn rem_outfit(&self, item_ids: Vec, _: CancellationToken) -> ActionFuture<'_> { + self.0.lock().unwrap().removed_outfits.push(item_ids); + Box::pin(async { Ok(()) }) + } + + fn send_instant_message( + &self, + target: Guid, + message: String, + _: CancellationToken, + ) -> ActionFuture<'_> { + self.0 + .lock() + .unwrap() + .instant_messages + .push((target, message)); + Box::pin(async { Ok(()) }) + } + + fn send_reply(&self, channel: i32, message: String, _: CancellationToken) -> ActionFuture<'_> { + self.0.lock().unwrap().replies.push((channel, message)); + Box::pin(async { Ok(()) }) + } + + fn set_cam_fov(&self, value: f32, _: CancellationToken) -> ActionFuture<'_> { + self.0.lock().unwrap().camera_fovs.push(value); + Box::pin(async { Ok(()) }) + } + + fn set_debug(&self, name: String, value: String, _: CancellationToken) -> ActionFuture<'_> { + self.0.lock().unwrap().debug_settings.push((name, value)); + Box::pin(async { Ok(()) }) + } + + fn set_env(&self, name: String, value: String, _: CancellationToken) -> ActionFuture<'_> { + self.0 + .lock() + .unwrap() + .environment_settings + .push((name, value)); + Box::pin(async { Ok(()) }) + } + + fn set_group_with_guid_string_cancellation_token( + &self, + id: Guid, + role: Option, + _: CancellationToken, + ) -> ActionFuture<'_> { + self.0.lock().unwrap().group_ids.push((id, role)); + Box::pin(async { Ok(()) }) + } + + fn set_group_with_string_string_cancellation_token( + &self, + name: String, + role: Option, + _: CancellationToken, + ) -> ActionFuture<'_> { + self.0.lock().unwrap().group_names.push((name, role)); + Box::pin(async { Ok(()) }) + } + + fn set_rot(&self, angle: f32, _: CancellationToken) -> ActionFuture<'_> { + self.0.lock().unwrap().rotations.push(angle); + Box::pin(async { Ok(()) }) + } + + fn sit(&self, target: Guid, _: CancellationToken) -> ActionFuture<'_> { + self.0.lock().unwrap().sits.push(target); + Box::pin(async { Ok(()) }) + } + + fn sit_ground(&self, _: CancellationToken) -> ActionFuture<'_> { + self.0.lock().unwrap().sit_ground_count += 1; + Box::pin(async { Ok(()) }) + } + + fn tp_to( + &self, + x: f32, + y: f32, + z: f32, + region: Option, + look_at: Option>, + _: CancellationToken, + ) -> ActionFuture<'_> { + self.0.lock().unwrap().teleports.push(TeleportCall { + x, + y, + z, + region, + look_at, + }); + Box::pin(async { Ok(()) }) + } + + fn unsit(&self, _: CancellationToken) -> ActionFuture<'_> { + self.0.lock().unwrap().unsit_count += 1; + Box::pin(async { Ok(()) }) + } +} + +#[derive(Default)] +pub struct QueryState { + pub is_sitting: bool, + pub object_exists: HashMap, + pub active_group: Option, + pub camera_settings: Option<[f32; 6]>, + pub debug_settings: BTreeMap, + pub environment_settings: BTreeMap, + pub inventory_map: Option, + pub sit_id: Option, +} + +#[derive(Clone, Default)] +pub struct RecordingQueries(pub Arc>); + +type QueryFuture<'a, T> = Pin> + Send + 'a>>; + +impl IRlvQueryCallbacks for RecordingQueries { + fn is_sitting(&self, _: CancellationToken) -> QueryFuture<'_, bool> { + let value = self.0.lock().unwrap().is_sitting; + Box::pin(async move { Ok(value) }) + } + + fn object_exists(&self, id: Guid, _: CancellationToken) -> QueryFuture<'_, bool> { + let value = self + .0 + .lock() + .unwrap() + .object_exists + .get(&id) + .copied() + .unwrap_or(false); + Box::pin(async move { Ok(value) }) + } + + fn try_get_active_group_name(&self, _: CancellationToken) -> QueryFuture<'_, (bool, String)> { + let value = self.0.lock().unwrap().active_group.clone(); + Box::pin(async move { Ok(value.map_or((false, String::new()), |name| (true, name))) }) + } + + fn try_get_camera_settings( + &self, + _: CancellationToken, + ) -> QueryFuture<'_, (bool, Option)> { + let values = self.0.lock().unwrap().camera_settings; + Box::pin(async move { + let Some([av_min, av_max, fov_min, fov_max, zoom_min, current_fov]) = values else { + return Ok((false, None)); + }; + Ok(( + true, + Some(CameraSettings::new( + av_min, + av_max, + fov_min, + fov_max, + zoom_min, + current_fov, + )?), + )) + }) + } + + fn try_get_debug_setting_value( + &self, + name: String, + _: CancellationToken, + ) -> QueryFuture<'_, (bool, String)> { + let value = self.0.lock().unwrap().debug_settings.get(&name).cloned(); + Box::pin(async move { Ok(value.map_or((false, String::new()), |value| (true, value))) }) + } + + fn try_get_environment_setting_value( + &self, + name: String, + _: CancellationToken, + ) -> QueryFuture<'_, (bool, String)> { + let value = self + .0 + .lock() + .unwrap() + .environment_settings + .get(&name) + .cloned(); + Box::pin(async move { Ok(value.map_or((false, String::new()), |value| (true, value))) }) + } + + fn try_get_inventory_map( + &self, + _: CancellationToken, + ) -> QueryFuture<'_, (bool, Option)> { + let value = self.0.lock().unwrap().inventory_map.take(); + Box::pin(async move { Ok((value.is_some(), value)) }) + } + + fn try_get_sit_id(&self, _: CancellationToken) -> QueryFuture<'_, (bool, Guid)> { + let value = self.0.lock().unwrap().sit_id; + Box::pin(async move { Ok(value.map_or((false, Guid([0; 16])), |id| (true, id))) }) + } +} + +pub struct RlvHarness { + pub service: RlvService, + pub actions: Arc>, + pub queries: Arc>, +} + +impl RlvHarness { + /// Builds the same enabled service and two narrow callback fakes as the C# base fixture. + /// + /// # Errors + /// + /// Returns the standardized constructor error while the public RLV service is a shim. + pub fn new() -> Result { + let action_callbacks = RecordingActions::default(); + let query_callbacks = RecordingQueries::default(); + let actions = Arc::clone(&action_callbacks.0); + let queries = Arc::clone(&query_callbacks.0); + let service = RlvService::new(Box::new(query_callbacks), Box::new(action_callbacks), true)?; + Ok(Self { + service, + actions, + queries, + }) + } + + /// Processes a command using the base fixture sender identity. + /// + /// # Errors + /// + /// Returns the public RLV service error for the command. + pub async fn process(&self, command: &str) -> Result { + self.service + .process_message(command.into(), guid(SENDER_ID), SENDER_NAME.into(), None) + .await + } + + /// Processes a command using an explicit sender identity. + /// + /// # Errors + /// + /// Returns the public RLV service error for the command. + pub async fn process_from( + &self, + command: &str, + sender_id: &str, + sender_name: &str, + ) -> Result { + self.service + .process_message(command.into(), guid(sender_id), sender_name.into(), None) + .await + } +} + +pub struct SampleInventoryTree { + pub root: RlvSharedFolder, + pub clothing: RlvSharedFolder, + pub hats: RlvSharedFolder, + pub sub_hats: RlvSharedFolder, + pub accessories: RlvSharedFolder, + pub fancy_hat: RlvInventoryItem, + pub party_hat: RlvInventoryItem, + pub business_pants: RlvInventoryItem, + pub retro_pants: RlvInventoryItem, + pub happy_shirt: RlvInventoryItem, + pub glasses: RlvInventoryItem, + pub watch: RlvInventoryItem, +} + +impl SampleInventoryTree { + /// Builds the exact `#RLV` hierarchy shared by the upstream fixtures. + /// + /// # Errors + /// + /// Returns a mapped constructor or collection error. + pub fn build() -> Result { + let root = + RlvSharedFolder::new(guid("aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"), "#RLV".into())?; + let clothing = root.add_child( + guid("bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb"), + "Clothing".into(), + )?; + let hats = + clothing.add_child(guid("dddddddd-dddd-4ddd-8ddd-dddddddddddd"), "Hats".into())?; + let sub_hats = hats.add_child( + guid("ffffffff-0000-4000-8000-000000000000"), + "Sub Hats".into(), + )?; + root.add_child( + guid("eeeeeeee-eeee-4eee-8eee-eeeeeeeeeeee"), + ".private".into(), + )?; + let accessories = root.add_child( + guid("cccccccc-cccc-4ccc-8ccc-cccccccccccc"), + "Accessories".into(), + )?; + let watch = accessories.add_item( + guid("c0000000-cccc-4ccc-8ccc-cccccccccccc"), + "Watch".into(), + false, + None, + None, + None, + None, + )?; + let glasses = accessories.add_item( + guid("c1111111-cccc-4ccc-8ccc-cccccccccccc"), + "Glasses".into(), + false, + None, + None, + None, + None, + )?; + let business_pants = clothing.add_item( + guid("b0000000-bbbb-4bbb-8bbb-bbbbbbbbbbbb"), + "Business Pants (Pelvis)".into(), + false, + None, + None, + None, + None, + )?; + let happy_shirt = clothing.add_item( + guid("b1111111-bbbb-4bbb-8bbb-bbbbbbbbbbbb"), + "Happy Shirt".into(), + false, + None, + None, + None, + None, + )?; + let retro_pants = clothing.add_item( + guid("b2222222-bbbb-4bbb-8bbb-bbbbbbbbbbbb"), + "Retro Pants".into(), + false, + None, + None, + None, + None, + )?; + let party_hat = hats.add_item( + guid("d0000000-dddd-4ddd-8ddd-dddddddddddd"), + "Party Hat (Spine)".into(), + false, + None, + None, + None, + None, + )?; + let fancy_hat = hats.add_item( + guid("d1111111-dddd-4ddd-8ddd-dddddddddddd"), + "Fancy Hat (chin)".into(), + false, + None, + None, + None, + None, + )?; + Ok(Self { + root, + clothing, + hats, + sub_hats, + accessories, + fancy_hat, + party_hat, + business_pants, + retro_pants, + happy_shirt, + glasses, + watch, + }) + } +} diff --git a/tests/compat/tests/generated_parity.rs b/tests/compat/tests/generated_parity.rs index 87b8c33..5f64cb1 100644 --- a/tests/compat/tests/generated_parity.rs +++ b/tests/compat/tests/generated_parity.rs @@ -1,620 +1,3 @@ // @generated by tools/generate_surface.py; do not edit by hand. // Source: LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba // Pending cases are catalog entries, not fake executable Rust tests. - -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight::test fb3adb86988b10b2d3fe9223324f8a3c1ba7b8c2ea909ee6b57b38c590fed372 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight_WithDelta::test 1f37a125fd9df8585740d37c711888dfcd92460d86c19077f771d7f3fab54264 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:eee2b1b757fc196e 17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:e6bc1820d9335b07 17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:fb63a8c8c9b75b99 17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:eee2b1b757fc196e f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:e6bc1820d9335b07 f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:fb63a8c8c9b75b99 f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:eee2b1b757fc196e 6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:e6bc1820d9335b07 6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:fb63a8c8c9b75b99 6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:eee2b1b757fc196e cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:e6bc1820d9335b07 cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:fb63a8c8c9b75b99 cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:bc5a9cb6a299a551 be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:0f04a34ae77465d3 be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:1560d5268a46ddf1 be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:bc5a9cb6a299a551 dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:0f04a34ae77465d3 dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:1560d5268a46ddf1 dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:bc5a9cb6a299a551 cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:0f04a34ae77465d3 cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:1560d5268a46ddf1 cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:bc5a9cb6a299a551 780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:0f04a34ae77465d3 780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:1560d5268a46ddf1 780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:bc5a9cb6a299a551 4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:0f04a34ae77465d3 4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:1560d5268a46ddf1 4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:bc5a9cb6a299a551 91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:0f04a34ae77465d3 91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:1560d5268a46ddf1 91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:5e4fd9176ccab2f0 2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:1112c98c6420210d 2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:0dd9d8fadf48e313 2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:5e4fd9176ccab2f0 1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:1112c98c6420210d 1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:0dd9d8fadf48e313 1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:2a7ad8f0a57b741d 751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:da775b6e5cf13e70 751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:e59967ec103647cc 751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:5e4fd9176ccab2f0 6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:1112c98c6420210d 6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:0dd9d8fadf48e313 6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:2a7ad8f0a57b741d 5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:da775b6e5cf13e70 5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:e59967ec103647cc 5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:5e4fd9176ccab2f0 268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:1112c98c6420210d 268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:0dd9d8fadf48e313 268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:6882162efd904e15 3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:45b5361aae1131d0 3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:f66e403049f440cf 3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:6882162efd904e15 3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:45b5361aae1131d0 3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:f66e403049f440cf 3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:a2681d046a6f6fef 67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:34172d9d6ebbcf53 67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:30379630ffa50e68 67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:6882162efd904e15 c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:45b5361aae1131d0 c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:f66e403049f440cf c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:6882162efd904e15 059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:45b5361aae1131d0 059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:f66e403049f440cf 059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:6882162efd904e15 9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:45b5361aae1131d0 9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:f66e403049f440cf 9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:6882162efd904e15 1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:45b5361aae1131d0 1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:f66e403049f440cf 1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear::test 865d022233930e9582fec5b0e99063f15506a339c430755aba83706b594182ad -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_CaseInSensitive::test b70296f9d2b6c9eb8c6dd6e560056ab8320d746a991fafec858812fc2ebb3141 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_SenderBased::test 1ae70737411e18626227c0b15181572c1c623eefce0a8fa1a874b2229c44c38e -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_Filtered::test e0f0b5a42c3baf92fef6a8d4fc2c60dbd6963db6f844fed55b06968f0c9e543f -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive::test 45405dbca6c2b8bb9f439736d53c2ff60056252f4cdf6296bedcc14d2be9248e -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_EnforceRestrictions::test 6186f5923009fb984daef726e8df44aff7cb65f74c2e381dd8cc9968f5534e43 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_PrivateTargetDir::test 300a323967b6258d1202190bbd3de7b91699231f7a5afa86204ba627cb61215f -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_PrivateSubFolders::test e688b64d13f0a07f4bfeae0715fbfbf98c1d1fa64b0aefbd0e4e3d3d4dd98eee -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders::test 22cf1a159861c98c8a0f14ac63bafcbef21466c2ac01e615fe9ca4630d16f956 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders_LinkException::test cbe38368a6d4c59d72291195688d0c70898be5c3cceb02f09c5d386c3668fb07 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripItemName::test ea0fab47cb1829338948f605919fcf1dca4f88d7965cdca4c7f457e399e4fbfc -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Default::test 8fe4eacf8cc5841e638d69540e2ab080efc3e64534346ece854429d0476f8a84 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Nostrip::test 754bd01f2f0b77c05ee5d1548f76337da93d980a48ad0922d80f34707c4fe68b -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Nostrip_LinkException::test 0cce15f7cfda160733c305b0867be31875e1814b38e2e980525d960e0214ad51 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById::test 2f657ffed317d4d7f97f6111942ea8214996872da6294f7c66d07890647f7f63 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip::test 48ab7aec02efd652478ca3110dd39011fd9b79a1e0a1336f53e9f77b2f56e635 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip_LinkException::test 5d882f00bfe73cecfc3e96c26ff18a20c00481619996b25ed2ce851eff9a86ce -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint::test 30e6806d5c484bf2a2f9a3b1fcdb5e88272874b0e755462c3b0bfa97326d180c -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip::test 657125be7aec668f72e744cc87cae38f022c8ccf9e8980c8ef4bea7e0557fdd1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip_LinkException::test fe019191a9a3df9a43fd500db775ba5f874f4b767096365cba390480b2b2189f -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType::test ccf302d870f323790af63873fcbb172f084c4e7400a728e480378706b5fb9947 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip::test 1947e7c9cfe8bb931ee7ad50c6f505515feeb9d30b236702a2d68fb4734a30f0 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip_LinkException::test 50ec101ab557e78d947ac7f9878acd4df4957482f358a7ce02371df8754add94 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_PrivateFolder::test 2ba745b093f0348d8754f74073c6a6a0f18383b5ce4a73721b39b01f0306a994 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce::test fde065233689ec75c12e9607acf06c5859a91efea58e143ecc508ebec784a567 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_WithNoStripItemName_SpecialException::test ee511230131312be9b788033aac8766ea3cb3c1f8d7c5b9b26a4bd6a83cd695c -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_WithLockedFolderRestriction::test 05fefae0563306af0c491006f18915ff1b250b7972c82c160f20f06e07335887 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_MultipleLinksSameItem::test 1ae8a318762625819371fb109fd673e0d31a2c0354add1e65802eb54cb71e303 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_Default::test ae8c0fd737f869ef3e2dbd97ae28974b35c6bbc5327151c0074d531efdaaf54e -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStrip::test 3aa17222f7539814f8329e07de548cca4bb702f4b0409e793ea551327b0c57d0 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStripFolder::test 16b74c3bf8312ccb885e61f933ec9d292988d2e1fad05e0188006df5630681f8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStripFolder_LinkException::test b86b22a0ab30d0ded0cd6fbc7d34fae77e521861f5672b44a25a77325e594ab4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById::test 3c4a211e5fefb44b42f50f6e6e58f8f852c8cf2d732bb6c3f737c3d6a592fa22 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripItemName::test f32926ca6f4328afdd3ddeb9f7bec8ff2ee01e9563555921ac8c663d20005551 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripFolderName::test bec3216bf016c2543a3410b069abd786167e04a7527253887f158127644656a8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripFolderName_LinkException::test 1b5eb3a0bdef8ea65b800533ab3153dc6b3ea21d2f4f27e4820d0a0df48891a2 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint::test 7e8f3a4d8b2cbdb5cc81eea598da6ef6395834b1cb7a629dc8d7ee2bfd80fab5 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip::test f6ff482bdb8d28414e01952201e37e49316b3e2345b0ff85dd4cb059193d1816 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip_LinkException::test 289f8cc48f0e6a412d58258876e4aca08d8116d549642a0011bbdaf9b2223e83 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType::test 51607294f12279974c2b44b47ba2eadca9846180a39bcde6a28c020dc4466254 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip::test 30dec183993b2a644c2812ffc1c863e1714df134942f7827df818d9200e47c38 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip_LinkException::test 62f59cf66f21dcac15cf3166dcec2183181c0b434e9eacba796eb7025c4f1ab3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_PrivateFolder::test dd40588598bd081189e7c4f284af3851a140155e2ede0ae2121dd59a156dc988 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach::case:bb1d34dc76ade75f 16420d56c60229e8d8b6a2a0d63b1f500112c23cef451d69bb0ed97fe9b63bae -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach::case:c9faa5be8fef55e8 16420d56c60229e8d8b6a2a0d63b1f500112c23cef451d69bb0ed97fe9b63bae -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip::case:bb1d34dc76ade75f 5b3f1cbe99833e16c6f10ef568618627445babbcdfc9be555b48257bfdffeea7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip::case:c9faa5be8fef55e8 5b3f1cbe99833e16c6f10ef568618627445babbcdfc9be555b48257bfdffeea7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip_LinkException::case:bb1d34dc76ade75f 96a4b53d9e55dcd656c25af6619a3d0d67f5bc2517a759d722559a4ffb225472 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip_LinkException::case:c9faa5be8fef55e8 96a4b53d9e55dcd656c25af6619a3d0d67f5bc2517a759d722559a4ffb225472 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ExternalItems::case:bb1d34dc76ade75f 7545f36532fcb7974a9e009e567b2342754a11da95eb3f17ee04089dcec42664 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ExternalItems::case:c9faa5be8fef55e8 7545f36532fcb7974a9e009e567b2342754a11da95eb3f17ee04089dcec42664 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder::case:97eb7af1f9c3c62c 583d3f596c80411d950038e3ec64032bee75150b8c819741fe89a4ca40eb2553 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder::case:1a04fd408fddaac0 583d3f596c80411d950038e3ec64032bee75150b8c819741fe89a4ca40eb2553 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip::case:2117c838922f5ba4 3a21b8ae807126d6f93ac95e16c47330b4146ace9781e9c9665ad493ee8c48b1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip::case:11d4ca4fd3e35db1 3a21b8ae807126d6f93ac95e16c47330b4146ace9781e9c9665ad493ee8c48b1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException::case:2117c838922f5ba4 7c00e7dc70b3078d75009cf78a9fece889eee85f237c1a3c79c6249ae5e5327f -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException::case:11d4ca4fd3e35db1 7c00e7dc70b3078d75009cf78a9fece889eee85f237c1a3c79c6249ae5e5327f -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint::case:644d3f75f3570ac3 e09627228c1cf8311e56ac6660389bc1b268db8fd4f883dc40aaf3d2ec00916b -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint::case:53be219b37533fa6 e09627228c1cf8311e56ac6660389bc1b268db8fd4f883dc40aaf3d2ec00916b -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip::case:644d3f75f3570ac3 ffaaad92700d5d606154abdddd05c24c7584c5c3e55290df61e2b2a71d8148d7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip::case:53be219b37533fa6 ffaaad92700d5d606154abdddd05c24c7584c5c3e55290df61e2b2a71d8148d7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException::case:644d3f75f3570ac3 af1b1caf070a186bc2b02b598919b52d47c289d708fde3713e48ce1a40d7c025 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException::case:53be219b37533fa6 af1b1caf070a186bc2b02b598919b52d47c289d708fde3713e48ce1a40d7c025 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_None::case:9a124e69f33b279f afed603254ad6048a46e157254f16253063e6c76c9ea16f46a69d8455bc0e6fb -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_None::case:800d7d8ba57071b1 afed603254ad6048a46e157254f16253063e6c76c9ea16f46a69d8455bc0e6fb -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID::case:e5bdbdba9613b46a 4b1a8acea7f1bb100bf11e9329672c64b53aba4974558f1c693460eef7f56c2d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID::case:7cb3f81460bd8e9f 4b1a8acea7f1bb100bf11e9329672c64b53aba4974558f1c693460eef7f56c2d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName::case:e5bdbdba9613b46a 6857733912b45ef9153b0f58cd74ae6c9dc0034fa10933d153cae88a2c7d9423 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName::case:7cb3f81460bd8e9f 6857733912b45ef9153b0f58cd74ae6c9dc0034fa10933d153cae88a2c7d9423 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName::case:e5bdbdba9613b46a 1a3189f931e086ab3d2d3e99c53dba2e9d39dce75a52fd02400c6892aef5d0c4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName::case:7cb3f81460bd8e9f 1a3189f931e086ab3d2d3e99c53dba2e9d39dce75a52fd02400c6892aef5d0c4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException::case:e5bdbdba9613b46a bd7bc72a107b4a21b00977e13b086da192bef2c2e6f0fdb73b8e332016c6ef23 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException::case:7cb3f81460bd8e9f bd7bc72a107b4a21b00977e13b086da192bef2c2e6f0fdb73b8e332016c6ef23 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions::case:e5bdbdba9613b46a 2ecf40d1d338117ddac4cfd6c7a030e96b7adf72cd90e0d8327787317e1f38d7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions::case:7cb3f81460bd8e9f 2ecf40d1d338117ddac4cfd6c7a030e96b7adf72cd90e0d8327787317e1f38d7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_External::case:e5bdbdba9613b46a e0bdc682df3416bdc01855e6e63974e64c21951aac629807352220baf572dded -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_External::case:7cb3f81460bd8e9f e0bdc682df3416bdc01855e6e63974e64c21951aac629807352220baf572dded -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit::test 60bd0e62bbd4613c4d2d1a65705644dc25fd7327408adfc0bb7e95c45d79cdcb -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_PrivateFolders::test d79ac3806f50915390edd0a24b756ef398c1334017f69d16f4cb887dcdd41fb1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems::test 0265a9fee1070cbcc458bfcb05fe267991cbdb5480500c1b32aace1eb4935217 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip::test b93d39d919fb70b02ccdb724969f7b983c726c707bca96e1b1ddc6ee248a734f -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip_LinkException::test 5ecc44228573645e0a0c78d100dab54b793c6ce8dc50a02d79a919fe6d7c1678 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_ByType::test 8ba106f071f8768af1d6213c04f67dd0aec846ae47552686eba86c489bdb0292 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder::test 45f9e7a9d0ef99ec7d58b59f1c1db7b6065994939717842bb02486b470b357b5 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_PrivateFolder::test 68f3050a1b667304ff2b252690cc7d1994964dbd2c7633d54e5c6654714c0aed -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStrip::test d56b83a72d6d3529af0390674550ce40733c14de6210cf71e277f0e195d1e330 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName::test a28f5517a9d05085627d5acaf33441d598912301962f6e99aaff49ef5114af53 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName_LinkException::test 80efc201f976365e68d32ae1b30db0f10a17cbc65aedc82895ffa679700008da -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific::test 7235143679739442ec942d294a8a68f69b7fb5678ed4e3ca03be35c74e9c71a9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_PrivateFolder::test 3feea26f000dc7eb86b1413f1a5bdd5f109c5f9f969918cd1ce2e7f926f26c12 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_NoStrip::test 6e4b8bc53933a889df1cf553ca7e0601e5061bb87013a4075c2ff357cc9d987f -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_NoStrip_LinkException::test 72b1409f70531d859f15a012cb1fb03d795d2065c5d03b7a263d352ca4b80e98 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_BodyPart_Specific::test 13804c96395db86821371dc8f2cacd2cb182338f8ea88034afcc5da19e3f0691 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Default::case:fa77559e30768d15 abcee425068df326a3258ab4d881218e6eee52523fa5d306b191308e85dfff3d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Default::case:55694f25ed879d95 abcee425068df326a3258ab4d881218e6eee52523fa5d306b191308e85dfff3d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Invalid::test 2e0595319ba8e2c9a8280c5b034363ad7998eb740cb6b7fff3d75bb0167c6464 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs::SetEnvCommandTests.SetEnv_Default::case:f656b648d00a6d91 836c1332ca9c4f645e5c9dca8b4a2b967d55fd8148901b05ce5d741e665ab7e1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs::SetEnvCommandTests.SetEnv_Default::case:55694f25ed879d95 836c1332ca9c4f645e5c9dca8b4a2b967d55fd8148901b05ce5d741e665ab7e1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByName::test fae27e58cd981f5471f4c2b8356bb07aa5e76a57aaf0882d0dbfb86360e077e3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByNameAndRole::test 408442b86bb8259eb9bbb4cf8a5d3b0830c7ba9357fa04cb6e851511a7a24df1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ById::test 27f13c52c8c5e2e4298fee3f4322f9906d5f82e900aa5f46c9a8ffac3a6dfae7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByIdAndRole::test e18fd0c318ebd4f9a189418449568b3a34b8f7d3a0097f100a7253c4d5a31bde -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SetRotCommandTests.cs::SetRotCommandTests.SetRot::test c3302d63cdda9d72b85dad2749e2684cc26d51c72ddc6ace8275911f8ba67ef4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_Default::test 24e45ba898cb8ed0919369d07a39d0b21982fa4fc4c41eb4835ba765c05e2469 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedUnsit_WhileStanding::test 8d179277f6a7f98ead813de7bd02ab5146b46ce240d1d5e4a69037885e5f626a -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedUnsit_WhileSeated::test 1f2debd6e644c86698577e1c04db96d6aac43267ceae8de9f28435b62ff92817 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedSit::test 8ac0964fc07bb5e860123ce8de1102c2254ffde28f246896d81f7524c3c87021 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedStandTp::test bc0c259477ef5f1e5a76b1081f604ba421c82340f738e37fd52b91a421037cf6 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_InvalidObject::test 787bfe6fefe3895b4bcb5da027ffeac70bf67c3c7a295dbbf7e1526156290040 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs::SitGroundCommandTests.ForceSitGround::test 2319cd49aaae5ac824bc5ffd4f33a5e4f3f684ebec1dc1f1732071eb44ee1cb8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs::SitGroundCommandTests.ForceSitGround_RestrictedSit::test 5ac661e9f7fa93cf6ca76aa69f6d84ac61ebd22f26620203f084777010b6de4d -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_Default::test 1613e723da60f84dfb54a7345b96566a055a9b7a017e66b0929d6f37c04b62a3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_WithRegion::test 50c5f63c5cb0da221846fd7c0c7f2d471bef2aa2ab203a9b5bdb4eceeb3d97bf -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_WithRegionAndLookAt::test c9030189de7acdad0db5c8f83e49ee0433ec0588a35436ab39cdcf40a4fd4d36 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_RestrictedUnsit::test 4dc00a1048593f7468271a4262cf311a3516ea4a53e288eeca69d1297dafc9f2 -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_RestrictedTpLoc::test 3e1ecc1d04973a496edf9d156e52ba76a93ff431181a3ece93c0e4f82884895a -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs::UnsitCommandTests.ForceUnSit::test 2f91e1112e1c4e97b79a4dc7bcd4d4a85f13125bd636f81147ce5b396366ebed -// pending-parity-case: LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs::UnsitCommandTests.ForceUnSit_RestrictedUnsit::test 2ecf210dc83b06018cdcf44cb44bdf43f1040133e7523542a2e1126d6d98004f -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/AcceptPermissionExceptionTests.cs::AcceptPermissionExceptionTests.AcceptPermission::test a5ffc51718e89fb872c6df8b8667f6d231618d47a2ffc71d596e8e10e15cb02e -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs::AcceptTpExceptionTests.CanAutoAcceptTp_User::test e988496e81a717eae1a96c5501e748a441fa64f637aaa47a6ae7a8d571c30f6e -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs::AcceptTpExceptionTests.CanAutoAcceptTp_All::test 428ec184c9d09f6ec57ac3429180f327ed1b79e9d9dea9815df3bb6f0f6244fd -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs::AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_User::test 3a5af1a55e74b5e75a04abc11826ded17c327ac2ed99ab2a423674fbb0e61f31 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs::AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_All::test 8e2cf7c4d17dcec4d7855fc430092699416108966fb5d97c170c13f0bcd04cfe -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll::test 1daa414beb2a767518f335f6ae59e711395375ed9d7912fbbc139fa0998dfdb1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive::test 6e0c78d6ed78bedca9a8c6a9a83fd9f90f7123da433eb4c560e6f5c0b6fe6d94 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive_AddRem::test 9423ed205501604501d31909414ecf6ef99a0d56d4efae100f5576b31b71a858 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs::AttachThisExceptExceptionTests.AttachThisExcept_Default::test b8e6e55d8f2654429c9826e38ffc8522eec44ab2521891b68616db61ac662db0 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs::AttachThisExceptExceptionTests.AttachThisExcept_AddRem::test 05bc7eab5dd02a0a3e60f85eb51b374623aaa29c9ce2b522748a3478b8ee44ea -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/DenyPermissionExceptionTests.cs::DenyPermissionExceptionTests.DenyPermission::test c2284b63e7b4a93f8613a3afe34466d14e1c6ed8528656d54ae64ca6d081cdd5 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll::test 75e7ab22f6d9d058580fd83741d65f7e5babb7ad54805eaeb16bec8cd65370ed -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive::test 3fb8bb13d6a917d9be18265d90767488cde66746badc6584025bbbaf84f020ad -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive_AddRem::test fb5fd8a4eda181d22d1756ec0cae700c4b90895a74dc79c24c67c1705cfd37c8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs::DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except::test 3222d97d73d8b54bd11212f8cd3de26279040321f0bc330e061ff93880053f3e -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs::DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except_AddRem::test d25b2c533b9b51428c0c2414d687c466a3c80c4a573dd36763504de19e8dc6f8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs::EditExceptionTests.CanEdit_Exception::test e435b03faef04dfe06d0cbec76e94cbf30e61ad7bc08502728f9239cf47292f8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs::EditExceptionTests.CanEdit_Specific::test db097167497bc650c6729f0687924adedda7097b4089107fc5ea03716c1cb4e5 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/EmoteExceptionTests.cs::EmoteExceptionTests.CanEmote::test a643401539d7258ae04ddebaf9c82876f59c4433b11ee61bfe8b416058c9fe38 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RecvChatExceptionTests.cs::RecvChatExceptionTests.CanRecvChat_Except::test b34881785cf2df3d8f4e5ba971adcf2144d8de4db00acfbe136c79457742ec33 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RecvEmoteExceptionTests.cs::RecvEmoteExceptionTests.CanRecvChat_RecvEmote_Except::test d4647d71c02e05405ae2acf7b58522aae559b1c90a4f7a1521c9a9a383220f8a -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception::test 2e1afba517b29e8e7f2e0605340eb6e87443282857400eba259f0ebdf4874e23 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception_SingleGroup::test 9ec57daeed225caf960d00f0c83378d1836e86b1896063703ee1c3a38c7b582a -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception_AllGroups::test 633b8c680b583a6f8d80335c26f4ebcec77f9d8d5231e49bea562dcb66f00267 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat::test 1eb25c5579789db22ee242c4b52c65989bd26dce6d7577021c329c6c49be9414 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_Removed::test 62e03ff1db1e790d8bc1e38ac1495fc12723ba2eb5c9d6035d73c9fdb91a44ad -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_MultipleChannels::test c7d0c428d121ab80eee9b6b5855cbe50e7a4cd74e81c369da09df04d55c7554f -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChat::test c4a083e495a578c1ed0855c43680d5b05144bf627f06df48c82e089e6f0699bf -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChatMultiple::test 5ff8665440d8d02e0aa900121e591034d51e2b48ca62fdec2fbc9135f8c83428 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChatEmote::test 5d88009e3e8d365c52315a9b189f6cffdc9d04fdb70aa26bcc03d6bc16227189 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote::test 02170a2b3eb0cbb88921517c9742d2fc0baaea7a621e5a3c3264a7a17d5efb61 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_Removed::test 6ee89cedfd1e2d79d2447f2f48d1e2d1ac96295485b7509fe09f98e3bfcd9766 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_MultipleChannels::test 1a95f4cc5db96cf033fed0c1a4e573b1cb1ac17ef72b76e0ce115c051f10528a -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmote::test 525297be5b5ff466fc9a61f2bc87af38bd637cbef8e0c794e897e021d0cca464 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteMultiple::test fd6af49a90e111ed6424c85565242e1205e13604b529909f7be0260e93f0b1c6 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteChat::test e8b78a6a34e3d3acdfc6d454b46a939d341260362ae5327dc4b70164d41431aa -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptExceptionTests.cs::SendChannelExceptExceptionTests.CanSendChannelExcept::test 08c309d08681fe067f67315a72014d0a05c87d6e14632fa04f6f2fb617d61be3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptionTests.cs::SendChannelExceptionTests.CanSendChannel_Exception::test 49bcacb6fb31d596ce9afc73099f8aaf645156ee222262174e1d7fed08393cf9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception::test 8124011921e8d4caf6840e960bd9f98d21df9db476e1726e0d54550cb8527ceb -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception_SingleGroup::test b55a4bdba1d33652f3809c3478047afc65757fbe1dec6c5292e17b71a04b206c -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception_AllGroups::test 4190ff51848f63dce5682317db79da23fa19ad9e53004534382f3eb6e8544788 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/ShareExceptionTests.cs::ShareExceptionTests.CanShare_Except::test 37297059a814bfde94c466e263a429258cce11ae258afd7953d26f65f9178f1d -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/ShowNameTagsExceptionTests.cs::ShowNameTagsExceptionTests.CanShowNameTags_Except::test 5d1fe4ec1fa289623d473ffae1682ed725735cbdf48bdf5b7fed086237e32a1a -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/ShowNamesExceptionTests.cs::ShowNamesExceptionTests.CanShowNames_Except::test b11578e758631037440dd56a683a3ffc25b576eaa25e7388c950d8d647eb2a75 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/StartImExceptionTests.cs::StartImExceptionTests.CanStartIM_Exception::test e0001ffc665f0f39833cf2376ea1fcb7559bdb87a48ea60bb348e14b078880e4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/TouchMeExceptionTests.cs::TouchMeExceptionTests.TouchMe_default::test a0f3ffd3c70263738c074e258d9271e0a825f163c40d9c7ee8d20865873eb304 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/TouchThisExceptionTests.cs::TouchThisExceptionTests.TouchThis_default::test e7e6c9e14badb0159f81adc96e17fcf3ebe2cf5351ec6465f03c430de06d85d2 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/TouchWorldExceptionTests.cs::TouchWorldExceptionTests.TouchWorld_Exception::test ffef2f112b5718bab7b01fc1b624e588c181dadc5c50fd85de4404a501ee6f37 -// pending-parity-case: LibreMetaverse.Tests/RLV/Exceptions/TpLureExceptionTests.cs::TpLureExceptionTests.CanTpLure_Except::test a32f4cdda5b48ffcaced683b2e77fc129c1c321951aa2e16623eea022f2aa0b9 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_Normal::test 97787ac6b51198e317ed391e91125724ce1b580924c40500f81186812b45f625 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_EmptyPath::test 0ffd4f32e285ba94e94f63ac312d3be20bf144b769e8d18af32e15f481042ed7 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlash::test 90ae520739ea1a2612f491bb110b0870ed4dcb8a983aad9526ed25d8c5cbe687 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlashes::test 8c0ed3c6cc16b916f9df8d25d55618e82299fd1bcd66983f682219c338853028 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashPrefix::test 8a86081d6b25ae50b3cf8cdcb1c58c8539264931ab74f395dfc7345ee7f4f861 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashSuffix::test 04afafa569b7a10d6add8c1e9d8f26ac502791f1da2dbdb3e37407e945c87872 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashAffix::test 7eaec38fa6b545f133748b502169fab575308c9c4e60548cfbfd704452bd9761 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_ContendingFoldersWithSlashes::test 96a8189266746a564072122342f36b3321998f3e0cbe0094f3e4c83d29bc53d5 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_InvalidPath::test 547def910ded67bc7950b211ad929f775d4eff26e351d11612f146b3e863510e -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_IgnoreFolderPrefix::test 5039b79496d215d3921427ab6f65867ba7a4ea5239864f1f5a1e38ea3e5bb426 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FailOnHiddenFolder::test bb0c7e531584128d251b06a4ac23b8cfad16ec4b117be79a53dea3c54aed4510 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_AllowHiddenFolder::test 9217cb5bd9c325fc792303e5ab53cefd71e95a5acf9e5a1601957ba8bf807346 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ById::test fc89036c3472dcc2ea4d3fcb55636238e3d2c75b490f46d328b5f91f28301ed0 -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByAttachmentType::test 90b36c29312b87c824c158987e551ca31522cf53a68f5f6bd3eae8fe03e914ed -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByAttachmentType_SingleResult::test a973bf8087abb0c68cd80d76949fac2735474bf6ccbe743933051f60527d93ce -// pending-parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByWearType::test d6712cbeacd6ddf25a1f76dc1eeb10f4c0d8967a7591c249127f9b6387f0df8a -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CamZoomMin_Default::test 662b332d66c72caecc1a179730bc2524b9da16aa85f7289bebd31842610ceccc -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextWorld_Default::test 380d1e30bd9ded04329bfd6d65ba447a8dd45a934cfa875628253719bb0e69ce -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextHud_Default::test a0af1f72f417cfa451284b7a3dbbb26d378e7eb9896dde3b6df0d0a2e4773f38 -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverText_Default::test c4122dbf650f51bde55dfda412a884347a78d3cd09dd2bb0fcbe4a7e74a1fff6 -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextAll_Default::test 0ed67c5566d038f770eb9f5df6aa0b5394d7d94cf7c397fa8089b419f872c681 -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowNameTags_Default::test 0781be94eb099d9aed1be2ff313856770d1ec24047d04c81c69219c743b4c8cb -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShare_Default::test e827d549d1d9329b63db159446937735ead13eed5d3eaa59440d3c686182f517 -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowNames_Default::test 56492cdd0802c5f8ed2a0f6d56abaf8186e37dd7b888904db52be97f9137279a -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanEdit_Default::test 417fb9f3eb3e70f3bd33710d11fb25eacd0db0a365b0ed2dec6778d09968f44b -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanRecvChat_Default::test b1ec48da83249b1141c3af926cd494373c47214d6a145916a8833d49edd155e2 -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanAutoAcceptTpRequest_Default::test abbcccb4415afdb6558f40a6d4030704f64442f019d065fef8a7a56a407e8642 -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanTpRequest_Default::test aefc51023a5274d402dae0e8111a0776622dc431754c3d1f0ce240a50dfd405d -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanAutoAcceptTp_Default::test 553245a5381689a7f1c6398cb0ca50510f9089b9bdc797672ae35fb5822fdf8e -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanChat_Default::test a9b0e4f8713991ce8b9b61d750c086d56da432dbddd533ec63dc0604238831a1 -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanSendIM_Default::test 6cc5238ded59b80408c59c9e77ded1162e370c295b846903dbcc87f74175cd55 -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanStartIM_Default::test c6d6db79b0939b33eb5fd29490474575e062f796160f4a69aab34ccefc1842cb -// pending-parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanReceiveIM_Default::test 23c1c79ae9eba016a48f3e9097fc26283223c9e120308d93fe53ce591ee5691c -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_MultipleTerms::test a1f04e5ab064772c25feefc21ea57d65b1044f0fa3254aeb2a3bfedf68d8e0ca -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_SearchOrder::test 4cba32dd316f49713c18a71bf5a932e1c28c94944add38c25852e8611ef0f987 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_IgnorePrivate::test 54c5ec1f6a6ae5611221e3afdc47db0c2d0ecb0da460dd8f2c506ed34c221ff8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_IgnoreTildePrefix::test 9f6635f5e14dbc14d1592a19b62d67748a60201128a75893e47ea1751c83b6d7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs::FindFoldersQueryTests.FindFolders::test 09dbc17be4b28cc4a63d0f837960586ba7cd03e184f0013b26ed27db15703d84 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs::FindFoldersQueryTests.FindFolders_Separator::test 51caa783dded41b99c878066618a10a7fe32c681ef4385c9a72f154870312b1f -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingNothing::test 41fc967c6c174ac39ce3f6de7e273e6db1845bc2ad6acd393f27a6705a3555df -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_ExternalItems::test 3f8e640aad5deeaf00b07af2d12c33b0a93257260d057d7b5dd5488f846f467a -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingSomeItems::test c209cd826958306f1350a685b29985cb8335a55ebcb9c0bec5c5a21279bb0a1a -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingEverything::test 4adb25030cd3c125242a4b1f770bfd3afdcabd85c23d37c34df9c8f273489e5b -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_Specific_Exists::test 7d8ccf26629911b6b20dc26c5c549975827d7378b4d85259a8b9724a3622892b -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_Specific_NotExists::test 08d9852205987a266608ad17c12fa498894d7c3216e873cffb9db4584cfd100d -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:8e1b820c1f2bd3cd 3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:64136cd82156035a 3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:2068bf7f0a131fe8 3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:b86b0c5e67f981c2 3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:123b930bb970a1f1 3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.ManualBlacklist::case:f14641dea0f1de93 4ef9ab9bc3165b99ef6b9cf6ae563210660e83fccf946376217c300a752c724e -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.ManualBlacklist::case:d25c660357f6ccff 4ef9ab9bc3165b99ef6b9cf6ae563210660e83fccf946376217c300a752c724e -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs::GetDebugQueryTests.GetDebug_Default::case:fa77559e30768d15 6554db3b0455887c0224a6f91c7830d6cbf38d5520a65a9b17e26280fcc291f7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs::GetDebugQueryTests.GetDebug_Default::case:55694f25ed879d95 6554db3b0455887c0224a6f91c7830d6cbf38d5520a65a9b17e26280fcc291f7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs::GetEnvQueryTests.GetEnv_Default::case:f656b648d00a6d91 cf4270c6c3417690afcf43982c3bdcf815f46ce81f9b6ccaf59377c633a64881 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs::GetEnvQueryTests.GetEnv_Default::case:55694f25ed879d95 cf4270c6c3417690afcf43982c3bdcf815f46ce81f9b6ccaf59377c633a64881 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs::GetGroupQueryTests.GetGroup_Default::test da65b184d0ef1380274e8e4dfa199c125a1a192b9e76f8fec1d406df18186169 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs::GetGroupQueryTests.GetGroup_NoGroup::test d1da37ae52bd94dac9cd6e031525b57f31ca7e9dc00a69a6e0c4e753741dc9e8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv::test 7476602b4103b47ed7dff44146a7ba90a1d62dc0d502f7b9e37b7863d9441ceb -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits::test d60a78bb35cc8fcdbdc2465889333b25567ea5e1c9279a8fb7b4162f4a35eae2 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreLeadingSlash::test add33ed33e1940f26362332b89486253c6af1a56e601bafab49511b6607ed50a -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreTrailingSlash::test 8f89302126be19f89d075d87d5194cc000fb7819f92ea7d54e6a63c1df9ca1ee -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreLeadingAndTrailingSlash::test c660447f93fb8508dbe4c874c92fd776a6e13596bbe3036bfb4664e35ee22306 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_Inventory::test 7db6f75e2f109d0e8d852d181ddd721f688e27144ad8a5604384b37de9f8c3eb -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Subfolder::test 6a5effe8012e9a446021b83f9b5314f6f9b66587222b447fa79028582830b3a1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Empty::test 2dd9f242eb71826066482ff4faa80b952ef89f855723cdc0c01cc4714abf8751 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Invalid::test 92595df155e79568e70bceb1538c23f10de99a6a138a0a5d9b8a2626588fdae9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn::test 472d70fb14f393d43f8698bb81d1855426f570d85c9e592fa86607eb79ce366e -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_PartialRoot::test ce4c640a901a6684a27b2b259c4fc3b25f2d6b870107babff3b930ced64a150b -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_Naked::test fa8994189c5d9cda7d613dfb8f6ffbb1808c8bae54a3647530fb872d47c43dd5 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_EmptyFolder::test ab6fc753f4d4170e17f49b708d7e62816f197e83234feda1fdcf63dcdc0bc6c4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_PartialWorn::test ceb446f2aa6eaa5232a99147d5d993386ee9e2e5fefd93ef582f27a6b8ece948 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingNothing::test 27befef9fdef993d82a641980f2b1ad7f458f07a50c7d008b6d311aeedfb4939 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_ExternalItems::test f88d149572ae35e880f16a5a92b4a9db73a3f26c5e8e61e4b1c01440151bd64b -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingSomeItems::test 4e9ef77ab72f1fd16c4fad69f00eb80ab46421597d41b61df80b1f87370f42d3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingEverything::test a840b239174cdb5dee4beb875bf9129209af3ba310564319528ad5b19764aae0 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_Specific_Exists::test a402fd67ed8ddfc12d09863f08f9b15b34262ffa12b4b5aa965826eac89abae5 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_Specific_NotExists::test d7e891a620b5e5407fe337f507874b63eb5a21589767a01362bd8bc43d19ba4a -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_BySender::test e7e87c01e83967a7160509d76f49d2a4b18d34b9b3fbed370c174d64ddb2c2b5 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByUUID::test 3a7d242966286258ed075c8e5c69eaf54ba0e71b8607432615a1199f5aeb6dcf -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByUUID_Unknown::test c3c206661594026c36dfcfea110631548cd362d824db268c170e4d04b24b674a -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByAttach::test f8858e6141b660cec8a09c016891f2275dd9364157b1aa614b63fca5abb7620c -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByWorn::test eed31d9aaf34578368cc4f590de1da7f47e3f6c5e663215866f7f8e6946f974b -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs::GetSitIdQueryTests.GetSitID::test bfbf6d62c09c4878504aa529805a29fe9689d1e29e7ca3d44bf2346d6b3fbe6b -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs::GetSitIdQueryTests.GetSitID_Default::test 456f8f22b1d2917c3729ed600bdf0b693c0189bd100b9863f4b42b07259110b0 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetStatusAllQueryTests.cs::GetStatusAllQueryTests.GetStatusAll::test ee8fac8485db2b5c01abf8664364ca1e13214243f1e661a04d93df680422d596 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus::test c538e68277e93b40374dfd86bde9be00e0b82dfad7f4573cc4b0660f15fa5fe4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus_filtered::test 574b7f7c37b4e09e4257e5b02d50b222054216e34b6d1dd3fe6b26127c89b562 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus_customSeparator::test 3bec2e53ea88857d4a1ae8cd6bc6f235f24e00d0773c24ca75a1892adb803527 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.Notify::test 082ff4cd00faf29a73aca158d4e24ed9fd3e7844ed6cefbf962d8727846a3c27 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyFiltered::test e00e51aeadd0d7a107105684129a6ae74fbf918be4c563d92d7cdaa223d2c03c -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiCommand::test 77f3950214a1bd1e3816fa6f7b0ca69727e9e18be5fb7b37f19490408ca023dc -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiChannels::test 12a0a6e0a0a6632960de98236670e063f2c1aa16cf6b6c8d718bde0e0abfd9b9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiChannelsFiltered::test bff8ca8465c2299d0d2ef60adfa4164270d08cee7223361bb27b86a7e4daeec9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:9e893d263294d04d 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:fc6b17eb4e9e7a00 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:b37376c5865a6fe8 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:5d497faea315b624 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:282fa0139ccbba29 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:f08c6eb7b4d12fac 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:37f0f73ed7492dd0 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:d75917941e63732c 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:2f72da33fdbcd8be 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyClear_Filtered::test f3e0550a53faca13679421318eee85f010c1b8668e3edfae6e2548d39dbcafd7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyClear::test 61d7419956a83be04eeb13557c6a2120419b2f0f1c529149c4fb57871bb6506e -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyInventoryOffer::test 2bbac63ab86ec77f6d0a4558a14ee913a7f44930364476a89e02cd5ec80191b9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySitStandLegal::test 83a07a88a0386982c854a0223b64dd5c417f1a55a038e4ceba8f487983daadaf -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySitStandWithRestrictions::test 166e2087aa0652bdd427e1908bc338659ec1d4dc8065c016612696d1f5dfd000 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyWear::test 9529acb9f3e1c335a50f8de6d63cc5711921de962546ff868811279d05826399 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyWear_Illegal::test 65bfc1db698470cf56dd8c6811e85ae373d1fca95cdbf82be66b7e32da311a2f -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyUnWear::test 340b60b8038dcd55320dc9aedc16beb9193e731ba7b659ca3cb2951a2d19b7ac -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyUnWear_illegal::test e7056e6e145430eb2180edb92593f59c07bcbdfa21629b1ca29ac93b2fca975e -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyAttached::test dc5239c77b9169cf3833c5a1dc765b381efe833f15b34ac7e57173c0a640942a -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyAttached_Illegal::test b56de057dece9cb8ece795d13d6bc42e7825d62f09f967f37a4dbf262d2b4456 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyDetached::test a741cec23a985028b3dc2b09195255276a96e4f07fc4fe5f8cca6c1e3c940d71 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyDetached_Illegal::test 1a4c9475a3b91a975b9861685dcaf899505b4f6727257618f9add9cecd3df54d -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs::VersionNumBlQueryTests.VersionNumBL::case:478968a5d14830de 0dbc89f77a6f293efcca217febb2f6b8d224f9ac5e1d6532a56a7df64a7be6e9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs::VersionNumBlQueryTests.VersionNumBL::case:8c124ee42e9ab944 0dbc89f77a6f293efcca217febb2f6b8d224f9ac5e1d6532a56a7df64a7be6e9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.ManualVersion::test 6f8493b201d69e1449d8311e434736f6f6b2bad04c9fe9c6adf94a94d9cbe597 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:442bdc765ad34e20 f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:968af293ea2a53a1 f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30 -// pending-parity-case: LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:ae9a221915e6e1bb f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs::AddAttachRestrictionTests.AddAttach::test bb2c3495d7b6862fabe1007bcfccc2850d29eef1d9aa4eac6d13d6004dcc4e6b -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs::AddAttachRestrictionTests.AddAttach_Specific::test 0201965931ebba1c13a23bbb43a8787c1639b0b98851141faffd963173c51035 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs::AddOutfitRestrictionTests.AddOutfit::test d4902b4dda0a640d240c88af30431f6d247aae2a74a81126fd91ba1d930de3fb -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs::AddOutfitRestrictionTests.AddOutfit_part::test e7e5467b36484fb54b0336abccf682905fbe5bff9e04195645981815e2ffadeb -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AllowIdleRestrictionTests.cs::AllowIdleRestrictionTests.CanAllowIdle::test 6278bb1a70f024f687080cb8e8a56bbc923f679fb4adb61c6c91c3397a3de7fc -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AlwaysRunRestrictionTests.cs::AlwaysRunRestrictionTests.CanAlwaysRun::test 9c0a34e0960e3e2a834ccfc1c129a1f5a8f8c6cfd30b322671b4e5c4cd25a24c -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis::test 39bc0c4581f8277f4d5c90ec715c40f4715b5ae7007a28a04fe762f2f6adfbfd -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive::test d051e7783e79bf91a8092cd2d29cf1aacec3b0af86ecf0c7ca590ce25bc8393c -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Path::test b4db2b29ad376777b382f8c6f4f7b62643bb2dd43858de4be69ac2252f18c963 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Worn::test 6ecfc6ffe71896979a37dac6dd8149a015b8d3e7e952247954333c053da4961e -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached::test 8ac38c77c6bdb03e4cbaa96600bead9a760eb5eec098504b05cfb3a1bdfb8557 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached_AddRem::test 495f288e0fa86059d13a027075700ba6308e9c9d585fa56e3d1adf4a71df912b -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis::test 3a8a5acc4ad5cbec76737239ea23330a34f54146a4ff9d5d25082c220527a3e4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_NotRecursive::test a5818b4e30d04aba7d6427b2b94e025d34e82eb3bdcb7ac80a23e55f2382ec29 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByPath::test 93e1721f171e24e540160e738f731b895ebd868d840bcdf7c16ba92f6eb4c49a -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByRlvAttachmentPoint::test 90a562b2c120daa0ea2612befe9e09649bc2ffac59c2cd360fe4a37dedf85ae3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByWornLayer::test a444d51c2091fa36f1a010e98ad896042aa0262153ea8a833a14dfcbf02de85e -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByWornLayer_AddRem::test dd3d9a0d9b56f08f6be7a6200e1f50e834ecc7613de0cdf44ee89262b3abdb30 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ChatNormalTests.cs::ChatNormalTests.CanChatNormal::test 9a23c49327636e769c7ff2688a0649d441f3531406e8f51e152ec7186a312287 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ChatShoutRestrictionTests.cs::ChatShoutRestrictionTests.CanChatShout::test 493e1dd87afaaa7f8183e677df5c32d00f150ffcdd53f9afad8684672837aa28 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ChatWhisperRestrictionTests.cs::ChatWhisperRestrictionTests.CanChatWhisper::test 67c5d2cb8b3e9424fbcf08378c2a28368fe07aa83ec028df7cf88b91576d3e9f -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DefaultWearRestrictionTests.cs::DefaultWearRestrictionTests.CanDefaultWear::test 64eef4c82d1c5a21bc923cfd44616ddc1a5e6403a9a1c5ad6bd2e5ee06e9704c -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis::test ee74f952bd602bd23cfc7b203940a902e1b30e02cff60c1abc1f74da964c1f7d -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive::test 2b6a646ee82484a6d1901ea4425b0e32fe553827f5bea37b506ffe29d1aec192 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Path::test 731244b623f23a8870d011280a062add751607ce2c58be3261485bb61d488297 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Worn::test d8424a48e64346edd683b7a68652dd5a0be615658f085b0390699ac7b4db5d2c -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached::test f399592217e7a4638ea25d469681ab9cc58bf8a937af2bfff8895996f7bbc493 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached_AddRem::test 507273250b932ff93fa34f87190ad1ab289edeed275be6d2259bab05c5b055d1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach_Default::test 8c5b165329ab6b46eb3ec7c9a07383e8ea1e54edf0882b43b14166d67cc45617 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach::test 50f5419aea3ea41aa9ebedd29202a549deb4ae6089c38965300a46fd5abf94bf -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach_AttachPoint::test a75fea134b92bca704b2e140135076d699d645c0d2854022d5b20d14be372589 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis::test bf6cdb48a5271d5116db4d0cbf12dbf63fc3cc93862bf718cf849d4abf9eb7cc -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_NotRecursive::test a8452e2b0abcf82447394bae981a1d25677147fad17828d8f6d0705264efa429 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByPath::test e6378e0db310005b8426cabd25969818ed36252e1995de97c6b29d5ab155ee58 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByRlvAttachmentPoint::test 278e4cbf0f9999efec04fcabade19da97439cca732e0e7e3e3c004e232c27224 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByWornLayer::test 66b7eba54e34ed58c59d594cdcb85d874c4db9bbbd871e5438c40fd3d47ad3f6 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByWornLayer_AddRem::test 7424bf38db1abd74132618ee3bcf95a79c32942da26086760dc82355a815d37e -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/EditAttachRestrictionTests.cs::EditAttachRestrictionTests.CanEdit_Attachment::test 22bc9e267e270c2c762561851249af4ef64c0b5bd288950a95b1b636b2975b6e -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/EditRestrictionTests.cs::EditRestrictionTests.CanEditFolderNameSpecifiesToAddInsteadOfReplace::test 6d82d0869826bbc935d89967445dfc991619bdaf3fa631550c5d3f91a13c4935 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/EditWorldRestrictionTests.cs::EditWorldRestrictionTests.CanEdit_World::test 1f335a2c81735bf58294b97ceedfd85192113e69c78a38804f0db923ce7a0241 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch::case:ccd63fc5b9c064fb a5568e0040a3c0ac8875a11596b7d0799ac5169b919e4fc65587555b2d3edd52 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch::case:ae3d093c6c7267ac a5568e0040a3c0ac8875a11596b7d0799ac5169b919e4fc65587555b2d3edd52 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Synonym::case:ccd63fc5b9c064fb c7aff866d539ceb26cc028532a901f18b58bb020f34da56444f08c9f4df1eb52 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Synonym::case:ae3d093c6c7267ac c7aff866d539ceb26cc028532a901f18b58bb020f34da56444f08c9f4df1eb52 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Default::case:ccd63fc5b9c064fb e894c744ea780a0a46cd2387157077c1a62c3c6b982303f3b7bff0b5d950816a -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Default::case:ae3d093c6c7267ac e894c744ea780a0a46cd2387157077c1a62c3c6b982303f3b7bff0b5d950816a -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:5788809ef8877342 423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:b3ebeae1885ed5db 423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:07cf5c5cabecfebf 423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:8008f95bc76b47e9 423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/FlyRestrictionTests.cs::FlyRestrictionTests.CanFly::test 5f60149edccece6b8a6827bbdc6f593ffd863961c13b506f1171aa0cf37fd5b7 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs::InteractRestrictionTests.CanInteract::test 935d319e07b613ba39b06db30cfd18306670f7dc97186db38c0374c3aac6901e -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs::InteractRestrictionTests.CanInteract_default::test 53b9d7f7cfd63a10538060624f81b7a6b1754a7462c230671ed909698dd18923 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/JumpRestrictionTests.cs::JumpRestrictionTests.CanJump::test 104374c66e6748d101b69ed5343d9972f29e937305cb17f90244ffa74fc7ed35 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs::PermissiveRestrictionTests.Permissive_On::test 923519a1220e5b3007321fb9ee8cc9db27bc0bbc38bed69df0659e4365c610e8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs::PermissiveRestrictionTests.Permissive_Off::test b995698351bf04e00ab5aed459c8ee08292897545b8684338a90eaf42cd6c4aa -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvChatExceptionTests.cs::RecvChatExceptionTests.CanRecvChat::test 017906038e211352d7d2751fafbcab5028cd8b189e7aa29a6202ff578976a23c -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvChatFromRestrictionTests.cs::RecvChatFromRestrictionTests.CanRecvChatFrom::test aaf24dc0b8533a7e93cc567fecbb866067b72da1837207869f879647840bfa21 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvChatSecExceptionTests.cs::RecvChatSecExceptionTests.CanRecvChat_Secure::test cba089ebe607088e37be285918a1d2c674f1acc4cad075733108afea3ad0279b -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteFromRestrictionTests.cs::RecvEmoteFromRestrictionTests.CanRecvChat_RecvEmoteFrom::test d07ded724315cf135603d4dc5a684e5a59a5cf8415963acc30d402ad81916ac1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteRestrictionTests.cs::RecvEmoteRestrictionTests.CanRecvChat_RecvEmote::test 438b72e6c44570580bf41aa7b8ed00afb800eff8836ee971eab9fc6a00fecc19 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteSecRestrictionTests.cs::RecvEmoteSecRestrictionTests.CanRecvChat_RecvEmote_Secure::test 9e1f72426762569b1c650fdf80c53e4a590b6476f8539fff6e110101e48459e8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMFrom::test ebe072c7e1c8ba440b560c2e4a0aa5151ba546f5b6cd5505012958e901c58201 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMFrom_Group::test d3d155240723ca2d379f00111a3b27acb41786615a2f5b0ad2c968040d7f4447 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMTo_AllGroups::test dd1050e7ef3e9805b88964822485856d6b2e5e98ee647ee08251cbc5bd452208 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImRestrictionTests.cs::RecvImRestrictionTests.CanReceiveIM::test 9c88e79ed2686e571e32ccecbc93c130423b966ff4e65e72f228f1713e5047cd -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure::test e549fe9719efd180f8ab8c80b989701cd23ebf07cd004d9a5a18a0cc7db12e64 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure_Group::test 13653ee7443d2eca88f2940d0c3804de3685dcf6c9277a4717a42dad4c01fca4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure_AllGroups::test d99435b52a3b774ab5d2bb6911824fa45803fe82cfe0b2c192a05473b72463c8 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs::RemAttachRestrictionTests.RemAttach::test 7005409bfff88f7fb75e5cf87f6f52f4c6f048de32f651b844cf62a1cc16f55c -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs::RemAttachRestrictionTests.RemAttach_Specific::test 407cb5627753c42af2b469644ddc2857416fb4b181bfbb742b199ad7239d5e6f -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs::RemOutfitRestrictionTests.RemOutfit::test 2aa5056c8aec09fb28d0da37bf6861220595cacb3190542d865f99034fc1c488 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs::RemOutfitRestrictionTests.RemOutfit_part::test f0c36209e33c9961b10ff685c8d4a32e279b4852e1c16a0e724f3cd481089576 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/RezRestrictionTests.cs::RezRestrictionTests.CanRez::test 5cae348cc241a884803692031c0af4f33fb3a2ce8331129a9866c5364599eccb -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendChannelRestrictionTests.cs::SendChannelRestrictionTests.CanSendChannel::test 8496734391f57cf2f2d8156f3b5a9ad9147c959e3bf99f9e76a4072e971a5b42 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs::SendChannelSecRestrictionTests.CanSendChannel_Secure::test 5bd9096e9af488d5cdb08ed78120ef46f81f9be1eaf132c49a955eb07ae904eb -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs::SendChannelSecRestrictionTests.CanSendChannel_Secure_Exception::test e675121ba9f6ab8f6e4484e66d76d0dd14f8ef39122c8fff2878ba5e6b3a7409 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs::SendChatRestrictionTests.CanSendChat::test 36cfbe5123b4b37ee43f0b4ba6453ebbe2754960825b1a8481e77e4f3a0e8015 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs::SendChatRestrictionTests.CanChat_SendChatRestriction::test 793a31da070038e90c41e4bdb1161daaf51376617a7444867f19c7125ad34313 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendGestureRestrictionTests.cs::SendGestureRestrictionTests.CanSendGesture::test 91367110c04e3c6ad173f56f209a166d828560850d3d084893e899bcc756428a -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImRestrictionTests.cs::SendImRestrictionTests.CanSendIM::test c63ab3a41b6b302e7c84c54374c7193335840bafc40f2d0f2b1c3a2787b26203 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure::test 65422234501bcbf151f27e0d45c74726e670665f39d90df23396f79450ba2b91 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure_Group::test 4ed2e6416a86eb2406e20bbb7e60a380de25577ad034ba613530ed28f6001df9 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure_AllGroups::test a4b699c9ada01ca4ce4d535739178e5310affa938d02dfaede6d034488d24f5f -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo::test 38258cda1081160b6b34f8e909adbc683a0f08efce8c63066bcac09835e5cdcc -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo_Group::test 1e12f7e3dbbee7d8dfb757fc8797644a353dfaa995e343e59124aa85126d70aa -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo_AllGroups::test bc9b87ab7b171c76987ddaf94f05c0ac2ad8dc0c1f24f5dfce2f4125e7b28df5 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SetDebugRestrictionTests.cs::SetDebugRestrictionTests.CanSetDebug::test d4fb9da4879ef8d1be115e00b7a8de959fd58e32722bc9e2985bca8e97dd2ce3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SetEnvRestrictionTests.cs::SetEnvRestrictionTests.CanSetEnv::test bb4c82afd643d267264467282cdfe09095c804079e73dd15179e1aa0b063c08f -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SetGroupRestrictionTests.cs::SetGroupRestrictionTests.CanSetGroup::test 9d89210cbc5c188985a535ae045e44d296c796f700d4a1e2b7b4d75345cc4a6d -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShareRestrictionTests.cs::ShareRestrictionTests.CanShare::test 23052e5792ff72624d45b54ccfd02fa5d8025d977010f1e8d34a90d27a4d0e29 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs::ShareSecRestrictionTests.CanShare_Secure_Default::test 6d61bafb190791ceaccb6c46cde3adf5b5479e6b5e76bafeadd0942400389248 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs::ShareSecRestrictionTests.CanShare_Secure::test e1aed5b3b8efccef47094788c3221e20240c671c1004d6d6bd899e5d9ddd51fa -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextAllRestrictionTests.cs::ShowHoverTextAllRestrictionTests.CanShowHoverTextAll::test 6a855738e87477d31dc7867d0c75ba1bf563e2b1e180f54759657a58b7da9793 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextHudRestrictionTests.cs::ShowHoverTextHudRestrictionTests.CanShowHoverTextHud::test 9d08e2a3eb303b14c4b222cae5d52537e81a7d9cfc9fcfe9625d513b6311a6ed -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextRestrictionTests.cs::ShowHoverTextRestrictionTests.CanShowHoverText::test 5642102d6832b227c37c14d0fbfc30921022c5789b811021805db6f3a2120f36 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextWorldRestrictionTests.cs::ShowHoverTextWorldRestrictionTests.CanShowHoverTextWorld::test 1be82408fbc87f1525dc7652e01fbbc17a993b70a2268f0b742d035b37cbf70c -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowInvRestrictionTests.cs::ShowInvRestrictionTests.CanShowInv::test b7c8bb7ad9d2c02c1c0168531c8ac0636885817a40b13bc006f4f5b20d28591c -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowLocRestrictionTests.cs::ShowLocRestrictionTests.CanShowLoc::test a8b154f2db967ab72781f31dcd7701d204f66ece1ef95a30cc67d788c78da617 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowMiniMapRestrictionTests.cs::ShowMiniMapRestrictionTests.CanShowMiniMap::test da901135b533aee1b025cf5dd925e857b4734ea00770ced4518f501453ea9736 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNameTagsRestrictionTests.cs::ShowNameTagsRestrictionTests.CanShowNameTags::test 74e8a6aefdefb9eb41509f6b4438e6854e5ad0ace38ab663f445aae484e94e22 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNamesRestrictionTests.cs::ShowNamesRestrictionTests.CanShowNames::test c44fe98d881a89af5db856e98f7bd7480d9bfb4378730002e518a7d1da412812 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure_Default::test 98d2c84d2f226fbb4b03c365f3ab007142d87b1980dda3666ce5ec36909fc599 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure::test 90ae29916dc2b60cd3de336e4a37683de8967f448fef26af360e3d24278773d3 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure_Except::test 457772321f7fd1ea88a279e99a4b0a955e462652bac1fb7953b8455f3d67a155 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNearbyRestrictionTests.cs::ShowNearbyRestrictionTests.CanShowNearby::test 4faa79795b1143934efbd8ebea7a926b270dd5d1e69f8a64f496063d570d868d -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowWorldMapRestrictionTests.cs::ShowWorldMapRestrictionTests.CanShowWorldMap::test da16f247df929f83ed21377869790c00cb5922fa6086da3787e90570f5684f67 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitRestrictionTests.cs::SitRestrictionTests.CanSit::test 813906dbfd09bb02c129a794f40a2f5dcda6e73d232e167359a6360a350fa4b4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Default::test ddcdba94af060ede43f0d585688966ccd923238a2365164b32a301b04d83cdfc -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Single::test 041c57829ab1032eed79e6f47c8b9026124b681fb6ffa4b3c5ac16b16d0b354b -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_SingleSender::test feed9f3cca3395e1eb5a8d831304a4171e79f6e1d93f03a4aca0e27edba5ed6d -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_SingleSender_WithRemoval::test 4b26c525e0a13fbc79b280f0a6c3b0f9e3e0e664241e9f55a88eda3dd80b203a -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_MultipleSenders::test cd9e3508d44e2e008609ac0cc12d3e207ec454a3f5c6e36aa325d33be9b6718f -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Off::test e871d15d797e0f8f0b02613c2a421b47b87068c8757bbd0104cd15d406137854 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/StandTpRestrictionTests.cs::StandTpRestrictionTests.CanStandTp::test 0f694e59d32c3c97fbee072d591b74c89561f4648bd3440002d8f54db0058a94 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/StartImRestrictionTests.cs::StartImRestrictionTests.CanStartIM::test cc8318d5233b947ca96939369de3a2fdc2c21468cc13a87c87908126c6e45500 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/StartImToRestrictionTests.cs::StartImToRestrictionTests.CanStartIMTo::test 0c7e19de2ecf94a6db09ee409ff88ff503e02d8dd8f7f11f427cebc51a3ac09f -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TempRunRestrictionTests.cs::TempRunRestrictionTests.CanTempRun::test 8893bb24bf10de7e914874c347ac5b73982d33925a1cf29ae8c361c3087be408 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs::TouchAllRestrictionTests.TouchAll::test 06da3251125bf4d3b2d542cfba7fa0a7b0c18dc0f97024a57c0e0ddf6cfc8dd6 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs::TouchAllRestrictionTests.TouchAll_default::test 9526d7bed6473afd41f97fb11ec950caae157865cec8eee719030ca109ab2681 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs::TouchAttachOtherRestrictionTests.TouchAttachOther_default::test 1f8157f5fd5db8b5a4596d5be6a5d780704cac85370204c77eca08da286adb86 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs::TouchAttachOtherRestrictionTests.TouchAttachOther_Specific::test add9d393d4aaf03768239611a8a64b2ef73fc4c8561dbbc51950a10c006198e6 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAttachRestrictionTests.cs::TouchAttachRestrictionTests.TouchAttach_default::test 4c4c65f8ed4b29367c353a02e52c91e9402788ffd35c75e5a6a40a827710e20a -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAttachSelfRestrictionTests.cs::TouchAttachSelfRestrictionTests.TouchAttachSelf_default::test 09f7d7a45a9899746c1c63608f95db89ef2ae4a875437a2b594bb120da8139ff -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs::TouchHudRestrictionTests.TouchHud_default::test b15afadb1f45b51eb47651a9d890ed2a6b1de8066d986d9b1ccc33da734c0194 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs::TouchHudRestrictionTests.TouchHud_specific::test 4c4e1a9493e5cf34f220ebec54c5373e1b30c81044803deece263dced5f7155d -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchWorldRestrictionTests.cs::TouchWorldRestrictionTests.TouchWorld_default::test 5995288721c44beaa329b266e15d619f2314c9ca74386145294183c7c509b42a -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLmRestrictionTests.cs::TpLmRestrictionTests.CanTpLm::test 847bd3264fd831837d8dab25b235450f19591fef3b3bd0315021727453ad64ee -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLocRestrictionTests.cs::TpLocRestrictionTests.CanTpLoc::test 8e5e2ab1b55b710ecce509b141ccac9bcd9ebbad479868496645ac89574bd089 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs::TpLocalRestrictionTests.CanTpLocal_Default::test 4b251429c6561c1d29f19f8fbc33dd0fb11344fe0d10962e789823ffedb3777b -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs::TpLocalRestrictionTests.CanTpLocal::test f9dd3daf337533beab1f4c2dce488f44dea5d17880e8f61b33e3c17c1a4c776f -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs::TpLureRestrictionTests.CanTpLure_Default::test 595e468736aab4136404842adf36a79f37b9900c3ee3993079621a5a6c96dec1 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs::TpLureRestrictionTests.CanTpLure::test a57f7803128d75a0f1ba35a1c7489f78ca99d7e5e540f06b84725da8a5cd10da -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs::TpLureSecRestrictionTests.CanTpLure_Secure_Default::test 577c2c8d22ba1aa8d4426832807ea4ed8cd243836b0d38b0ebc9f32a851c34f4 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs::TpLureSecRestrictionTests.CanTpLure_Secure::test 38f2894e39bdd7c3c8e1520fa6ed02573be3dfdef0bc5bd1073d9d2240917804 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs::TpRequestRestrictionTests.CanTpRequest::test 08ddf0e6dd1faf1f249bc7f7a9545d9e33efb5a438eacc3606b1495a83cf57db -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs::TpRequestRestrictionTests.CanTpRequest_Except::test 89ccb1dd172928c41079555cb6d7ff3fcbd34594dcff0399670cdebc739ac109 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs::TpRequestSecRestrictionTests.CanTpRequest_Secure_Default::test 87cb0ffa95d408d55045ade0966979360c28762e05729893b068801ed3b877ed -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs::TpRequestSecRestrictionTests.CanTpRequest_Secure::test 623310f5c9150f6d6527b0db0446e2c33bf873a849a8dc68b78a4173d130da93 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/UnsitRestrictionTests.cs::UnsitRestrictionTests.CanUnsit::test 2341a0d230eace08d612a1ae3f9aac7b5a1d3d914f04b6ada4726523e9bd3a37 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ViewNoteRestrictionTests.cs::ViewNoteRestrictionTests.CanViewNote::test 954472ccc5e060f987260c7d8f87f09dcb252e832c22810ed48dd316a173cf5e -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ViewScriptRestrictionTests.cs::ViewScriptRestrictionTests.CanViewScript::test 5e9246991c14d80bc83aad4b5944bd9701dc32b354a701a378def8924f7b5315 -// pending-parity-case: LibreMetaverse.Tests/RLV/Restrictions/ViewTextureRestrictionTests.cs::ViewTextureRestrictionTests.CanViewTexture::test d1ee89e12ea9c2d971b4d11c82f3129412fd56fa28d2bd2fb923f082eda62571 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Single::test 5f3010d46f3f18ed57ea52916dd9e8bde27d75c707dbcc0c6d68eb9bbe6c3591 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender::test 0df818c7a6c90358cb52f59f972e16c769d38f448619dbdfeddd5a602f64d1d9 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender_WithRemoval::test ed19a63ef16a600c9367f45d1a704739fd8e20e7811c7055df009676884de7dd -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_MultipleSenders::test c8ce609cf7506ae2df6e17126ebe5174f958245bedea26fe39600fb90195bdda -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Off::test 8f8ec9da2b0196a51dfb3fea709de597bdb440196697523824f78ef359a5482a -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Default::test 5997b7c86a1b1dac59b7f6c03d38cd09f0fb12619f03f68e1167c85ebe02f7d0 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Single::test 75530a051696ffd586b5643f0c9b9f1ae1c05bd30f9c3068f94cb30abbdc6d2d -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender::test 44d6a5b2a9462c83047f5b4ec9f4e66bb518f6547ec08df2b5420850129ff7cb -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender_WithRemoval::test 4958ce547ff71cf18d31cd557ecaecb8ae0a19b169c2051bd6797769bbcde26e -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_MultipleSenders::test 76346d0c1f4ecf22d09c1950aef99207d28ffe5576b7bc0be1212b91d6518f2c -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Off::test 88e2ec791d3f78bb6551b7d37a52cc5dc18c156ddd483bd6ba55288144005e5c -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin::test cf5f8bfbea933b64bc282211f498b01eefab0b31728800e2965a8a489f85b15d -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax::test 7441bff0655432365bb702cce92465ab0ab7b7dd195b732312a4e243f975ba48 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFovMin::test b433f776bfa059a889b1a13ebc0841c824715194b6b0634dea1dd5740d5b7bbe -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFovMax::test e0f313a03073b283400130e5a91c8c4157c9b83f9001f1ad1badf15f80821663 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov::test 02118d87dfda863c31de56267a31beba94ff124ca225f56d67222b6ffaf0c6f9 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov_Restricted::test 34b9c620b61777ece7ad140fc15dde6d2b77d877af597cf2a1b5d5f768cd5fc7 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov_Restricted_Synonym::test d8824c6f673ea7c101d309643ed4dbacc0fd6b17c0bda13f8cbb16b956529db4 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMax::test 61206ccc9664f63057389d0d9540022ba82da88b1e213387a9a7f0d0cec050b3 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMax_Synonym::test 9742afe1eb83fe3b63f6ce195bb1fb08058a6272e9817b3d1e09c50ca914a66a -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMin::test be661f7ae623eafe2c00a7eb80a716ab832cd56be904725cfa01c16ab219d10e -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMin_Synonym::test da29486a2c8bc2801805774269743566457ca1b9b316dc6846cf499b60aa588d -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawAlphaMax::test 96e0f72499cdf258062ca0610594137c72f232ddf936c0cc929429368957d3ed -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMin::test 53a901a99baeb1f8d45a07d1347a6491d66ad8ca76cdef5304c64738e486e7a9 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMin_Small::test 3f531bfcd6e08830912fd4d619a8ffc5e3ab40e9d036769f742ae0d06207400e -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMax::test 71ab081b330b9fc4cc73a06b214f52e577ab25c0ff15439e18737dfb220d7aaf -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMax_Small::test 72d0752ae72ba5288d2b96fca3e0a29c162406b38588160e6801b211c82fac11 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawAlphaMin::test 697fafc1837d56255cdf5e2a09634dcc740651d45df04a712c030a224a58d0c2 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor::test b3bc0346dbcf6c6b03d9c2c38b225e7903754fcbc56c74d098dbdcb617d2426d -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Default::test fedba7874c0b897309caca0e007cb9fbcbce8cd5155c91ec94bf6d1f391d47a1 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Large::test 6d2f0a4a24e71afbca88f3dfe574ff8ee5825e4df9a08552ac4af22a0a6b9f5e -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Negative::test 5f7ae954b3f75c5a86da8222a5eadc42ac3fee6ac4134455fb2a7a2e24101081 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Removal::test 81322059c2a6e0054c1d2131e0698c614942eec69958f72315545e9b1517fcb5 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Multi::test 21b9615f5a7e809ec83442035588414101fdf3862f282f1a501fb15d904f981e -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CanSetCamUnlock::test 3983d83fb0086bc71a585eeda9b561c738ba1eb99365182115a673ab38e166a1 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CanCamUnlock::test b116d0b63222b30c67da7c08d48f10701f5def2bdd3584166939d713a86a8cd4 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamAvDist::test 4c5641b0e975136e815bfaf8d9821240f0ac2bc615ed105fa5190dfdbcddc158 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures::case:0fdad12f3bfb0585 4b5058bfacb3e7f282bb83d0068ff9c7c7464b0d4119f879d670ddaf34d469b6 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures::case:19c11fd923cc347d 4b5058bfacb3e7f282bb83d0068ff9c7c7464b0d4119f879d670ddaf34d469b6 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Single::case:0fdad12f3bfb0585 abe9a6cff61faf1afbd29c4b073d34d67cf5e77058df44b68cbed7e1d9569814 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Single::case:19c11fd923cc347d abe9a6cff61faf1afbd29c4b073d34d67cf5e77058df44b68cbed7e1d9569814 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:1c2423e3f02a5f03 42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:57689650dc307766 42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:081becc69dc8e183 42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:d96d157e365ded15 42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamAvDistMin::test 60d28627494c147228930839a18016e3cbfa8eb042167965647794902eb340a6 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamAvDistMax::test a7cf7887d2934984cc13e10f3afa3248a5e677c9fac680af2a68c3a27d76c3da -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFovMin::test 25a040ca69bf4c2a303d45314fec99e70371bf6ac46e1793384e0a626deb4e75 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFovMax::test 19153fa188ef6bd763235a03048771d1a1d824c1aeaf64841b7e6e70c35813ae -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamZoomMin::test 8cd72b3f1922b913c6bde59b928f362fa191574dc1df3cfb4668d4ccf00515a9 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFov::test f4031d095b9a7e87d1f1d94e52c15c3c9b2b43aa1ba039c83e391e58ea994c40 -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:6e89e27b90f28739 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:82ff323c4cfaad18 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:c64b136643c55ed8 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:32ad2cfbbfcf0638 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:21855f1f68a52025 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe -// pending-parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:065ec3bc69e3f2b0 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_EmptyByDefault::test 9bd5c937815547d2d4b9dcfcb5c35d69e224cc4dc256273735c69b8be150c3a8 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_ValidBehavior_AddsToBlacklist::test dbf7650afeab51abc22fc48881a06e4908f373b6b0077fe58fc4d4e50ea0e0f5 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_CaseInsensitive_NormalizesToLowercase::test dbc4161b4cd5dd7f3609b11f1c6f4f6e1e243b2ba65a444afa67c70cf649c5d3 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_DuplicateBehavior_OnlyAddsOnce::test 53644a5123b90e32f162a9106c945a57d05b17de1a8ab0bf1930283deaf28018 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:12ae32cb1ec02d01 d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:52109349dabf6910 d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:729e2865c247816a d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:d7a5e915306d21dc d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_ExistingBehavior_RemovesFromBlacklist::test 47501ced70145add192d357c6a2647ca4a923bdaab3b1eff1c3857cebc5020db -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_CaseInsensitive_RemovesCorrectBehavior::test b5f4a87e8dc603a08a9f1225a35e44962d4240a3e5b9e605c948d19b268ed1bd -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NonExistentBehavior_DoesNothing::test 495314ef0e42ec419b804108907c02ffe9520a1657344f391aa491f91129ecc5 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:12ae32cb1ec02d01 9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:52109349dabf6910 9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:729e2865c247816a 9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:d7a5e915306d21dc 9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_BlacklistedBehavior_ReturnsTrue::test 2cfeda6f45d63514216d0ffccdee89ee4b7f78e775f43fb12ee78324f9cfde35 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_CaseInsensitive_ReturnsTrue::test 1b4c6ed072b97dd9abcc0f730533691d8a65122d1839d40736e98a0f5c43f07d -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NonBlacklistedBehavior_ReturnsFalse::test f4cc9018c5d111b06dc8c2ce0d6ed042eb063331f35ef1665e65f4d8606d3cd3 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:12ae32cb1ec02d01 ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:52109349dabf6910 ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:729e2865c247816a ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:d7a5e915306d21dc ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_MultipleItems_ReturnsOrderedCollection::test db9bd586b7a4f79ffd2d2c48c8131ccd4bd44d8de444696e9a7c53614ef37ed5 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_ReturnsImmutableCopy::test 64db7441c81ea4f0d2e52e79b479cf658fbd2c2d1d23b918edcfa03db1233a3a -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistWorkflow_AddMultipleBehaviors_WorksCorrectly::test 75d84bd0b26b16821ba107bef2bbb2ae58a2726496a757092b24dff6170f8872 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_IntegrationWithRestrictionsBase_WorksCorrectly::test f7347786e3a579dc0102dc20fb73823362866ea71658777aa6835a28a58daea9 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_EmptyString_ResultsInEmptyBlacklist::test 63555a93fbcc2b7691fdd2b79fe0db8cb305beef2c153b80f0040ba8f4f7117e -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_WithSpaces_HandlesCorrectly::test ddd764a51e179fa6c349ab2a62bdedde1e62e4ff2ae33aa41a4ebb2359974404 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:7da68a0c44d86b61 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:d4dfd612ab268dc7 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:58d5bce9d704814b 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:7c453569c08c0a0f 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:ace2eedabcda99e6 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:1a967cd76f5fa058 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:f6b796736de6a5d8 cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:787d37133953ab32 cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:d2056032186a0a97 cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:c1f038c1236211aa cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:564c3e282f3b402f c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:1d03935868fa6124 c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:12ae32cb1ec02d01 c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_NoRestrictions_ReturnsEmptyCollection::test 327086a5aa514ddf8b2cc40891f7ae5e8039788f5cbfeda86f04bd9161f39ded -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_SingleRestriction_ReturnsSingleId::test 85a822c9e2e8beb2e70748513a397b8ccbb2977c0581b0519bd8ad43e699ad57 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleRestrictionsFromSameObject_ReturnsSingleId::test 933070f933b0a5a39b3d0cd5fd9be9423a538609d0106b352a7d9c339665d6d1 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleObjects_ReturnsAllUniqueIds::test 8c2afe66145e4815e73d7849f83cfec50e4a7a49793cc757917cd608c9387419 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MixedRestrictionsAndExceptions_ReturnsAllUniqueIds::test 25ea3c36aba93d5183816962bf49bfdbc3e17e6b06d73a41dee5b51407a84746 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_AfterRemovingRestriction_DoesNotReturnRemovedObjectId::test af3d5328e5c829bd2de2b72c3f4ede6f083efa789ccef1d73d752612a177360f -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_AfterClearingAllRestrictions_ReturnsEmptyCollection::test 191a8cc3dba7e68155083a6892f1b4a29ab589023e22cffbc8cd69c005884cca -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_EmptyInput_NoEffect::test 8718e08bb2bf951a94803b4947943b5f7f9eb85e906b4ac6c639cb8cd065cf9d -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_NonExistentId_NoEffect::test 882d2315f40317cce9c9a026eda498325b6227886652795ed45e87cc4e5697ac -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_SingleObject_RemovesAllRestrictionsFromObject::test 73ab6ee30a336372f6aef5bc4a99dbb58215b9445daea5d9708d0ea9cabe8bd1 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_MultipleObjects_RemovesOnlySpecifiedObjects::test 03b6a6a3e02f6a6a5f296ff1d6cca31c9fc53982cbc9c27e73cfb698ed82acf5 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_PartialMatch_RemovesOnlyMatchingObjects::test 00a26d807882b2bbb375c5ce7cf1074d3227acd891e859602e78abbdc6eefb6a -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithNotificationRestrictions_SendsNotifications::test ba82b183dfdb01b36f9b45520e1808290c360f327d4afa833ba3b8c7a7cecffb -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly::test 631de2d39fa56b29014fae4ce3b57c480f540ad41ce08a0037b7f8bbfcb3c502 -// pending-parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent::test 318f1f4207b04d01076d3498aceea781c4889b05cdbef199cdbea43dde355f4c diff --git a/tests/compat/tests/rlv_attach_commands_semantics.rs b/tests/compat/tests/rlv_attach_commands_semantics.rs new file mode 100644 index 0000000..9bf3872 --- /dev/null +++ b/tests/compat/tests/rlv_attach_commands_semantics.rs @@ -0,0 +1,1096 @@ +//! Exact Rust translations of `AttachCommandTests` and `AttachAllCommandTests`. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{ + AttachmentCall, RlvHarness, SampleInventoryTree, guid, +}; +use libremetaverse_rlv::{InventoryMap, RlvAttachmentPoint, RlvWearableType}; + +const BUSINESS: &str = "b0000000-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const HAPPY: &str = "b1111111-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const RETRO: &str = "b2222222-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const PARTY: &str = "d0000000-dddd-4ddd-8ddd-dddddddddddd"; +const FANCY: &str = "d1111111-dddd-4ddd-8ddd-dddddddddddd"; +const GLASSES: &str = "c1111111-cccc-4ccc-8ccc-cccccccccccc"; +const PRIM1: &str = "11111111-0001-4aaa-8aaa-ffffffffffff"; +const PRIM2: &str = "11111111-0002-4aaa-8aaa-ffffffffffff"; + +#[derive(Clone, Copy)] +enum AttachSetup { + Default, + AlreadyAttached, + PositionFromFolder, + AddFolder, + PrivateParent, + HiddenSubfolder, + RecursiveAddFolder, + PrivateSource, + ThisDefault, + ThisById, + ThisAddFolder, + ThisFolderPoint, + ThisHidden, + ThisAttachmentPoint, + ThisWearable, + AllThis, + AllThisHidden, + AllThisAddFolder, + AllThisAttachmentPoint, + AllThisWearable, +} + +#[allow(clippy::too_many_lines)] +fn run(command: &str, path: &str, setup: AttachSetup) -> Vec { + let h = RlvHarness::new().expect("RlvService constructor"); + let mut tree = SampleInventoryTree::build().unwrap(); + match setup { + AttachSetup::Default => {} + AttachSetup::AlreadyAttached => { + tree.business_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Groin))); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Chest))); + tree.retro_pants + .set_worn_on(Some(Some(RlvWearableType::Pants))); + } + AttachSetup::PositionFromFolder => { + tree.hats.set_name("Hats (spine)".into()); + tree.fancy_hat.set_name("Fancy Hat (skull)".into()); + } + AttachSetup::AddFolder => tree.hats.set_name("+Hats".into()), + AttachSetup::PrivateParent => tree.clothing.set_name(".clothing".into()), + AttachSetup::HiddenSubfolder => tree.hats.set_name(".hats".into()), + AttachSetup::RecursiveAddFolder => tree.hats.set_name("+hats".into()), + AttachSetup::PrivateSource => tree.clothing.set_name(".auto_attach".into()), + AttachSetup::ThisDefault => { + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat.set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::ThisById | AttachSetup::AllThis => { + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Chest))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::ThisAddFolder => { + tree.clothing.set_name("+clothing".into()); + tree.business_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Pelvis))); + tree.business_pants + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::ThisFolderPoint => { + tree.party_hat.set_name("Party Hat".into()); + tree.hats.set_name("(skull) hats".into()); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat.set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::ThisHidden => { + tree.hats.set_name(".hats".into()); + tree.fancy_hat.set_name("Fancy Hat (chin)".into()); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat.set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::ThisAttachmentPoint => { + tree.happy_shirt.set_name("Happy Shirt (spine)".into()); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Spine))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + tree.party_hat.set_name("Party Hat (spine)".into()); + tree.party_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Spine))); + tree.party_hat.set_attached_prim_id(Some(Some(guid(PRIM2)))); + } + AttachSetup::ThisWearable => { + tree.watch.set_worn_on(Some(Some(RlvWearableType::Tattoo))); + tree.retro_pants + .set_worn_on(Some(Some(RlvWearableType::Tattoo))); + } + AttachSetup::AllThisHidden => { + tree.hats.set_name(".hats".into()); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Chest))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::AllThisAddFolder => { + tree.hats.set_name("+hats".into()); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Chest))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::AllThisAttachmentPoint => { + tree.happy_shirt.set_name("Happy Shirt (skull)".into()); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Skull))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + tree.watch.set_name("Watch (skull)".into()); + tree.watch + .set_attached_to(Some(Some(RlvAttachmentPoint::Skull))); + tree.watch.set_attached_prim_id(Some(Some(guid(PRIM2)))); + } + AttachSetup::AllThisWearable => { + tree.retro_pants + .set_worn_on(Some(Some(RlvWearableType::Tattoo))); + } + } + h.queries.lock().unwrap().inventory_map = Some(InventoryMap::new(tree.root, vec![]).unwrap()); + block_on(h.process(&format!("@{command}:{path}=force"))).unwrap(); + let mut calls = h.actions.lock().unwrap().attachments[0].clone(); + calls.sort_by_key(|call| call.item_id.0); + calls +} + +fn run_this( + command: &str, + argument: Option<&str>, + setup: AttachSetup, + from_item: bool, +) -> Vec { + let h = RlvHarness::new().expect("RlvService constructor"); + let mut tree = SampleInventoryTree::build().unwrap(); + match setup { + AttachSetup::ThisDefault => { + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat.set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::ThisById | AttachSetup::AllThis => { + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Chest))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::ThisAddFolder => { + tree.clothing.set_name("+clothing".into()); + tree.business_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Pelvis))); + tree.business_pants + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::ThisFolderPoint => { + tree.party_hat.set_name("Party Hat".into()); + tree.hats.set_name("(skull) hats".into()); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat.set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::ThisHidden => { + tree.hats.set_name(".hats".into()); + tree.fancy_hat.set_name("Fancy Hat (chin)".into()); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat.set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::ThisAttachmentPoint => { + tree.happy_shirt.set_name("Happy Shirt (spine)".into()); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Spine))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + tree.party_hat.set_name("Party Hat (spine)".into()); + tree.party_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Spine))); + tree.party_hat.set_attached_prim_id(Some(Some(guid(PRIM2)))); + } + AttachSetup::ThisWearable => { + tree.watch.set_worn_on(Some(Some(RlvWearableType::Tattoo))); + tree.retro_pants + .set_worn_on(Some(Some(RlvWearableType::Tattoo))); + } + AttachSetup::AllThisHidden => { + tree.hats.set_name(".hats".into()); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Chest))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::AllThisAddFolder => { + tree.hats.set_name("+hats".into()); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Chest))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + } + AttachSetup::AllThisAttachmentPoint => { + tree.happy_shirt.set_name("Happy Shirt (skull)".into()); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Skull))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM1)))); + tree.watch.set_name("Watch (skull)".into()); + tree.watch + .set_attached_to(Some(Some(RlvAttachmentPoint::Skull))); + tree.watch.set_attached_prim_id(Some(Some(guid(PRIM2)))); + } + AttachSetup::AllThisWearable => tree + .retro_pants + .set_worn_on(Some(Some(RlvWearableType::Tattoo))), + _ => unreachable!(), + } + h.queries.lock().unwrap().inventory_map = Some(InventoryMap::new(tree.root, vec![]).unwrap()); + let message = argument.map_or_else( + || format!("@{command}=force"), + |value| format!("@{command}:{value}=force"), + ); + if from_item { + block_on(h.process_from(&message, PRIM1, "attached item")).unwrap(); + } else { + block_on(h.process(&message)).unwrap(); + } + let mut calls = h.actions.lock().unwrap().attachments[0].clone(); + calls.sort_by_key(|call| call.item_id.0); + calls +} + +fn call(id: &str, point: RlvAttachmentPoint, replace: bool) -> AttachmentCall { + AttachmentCall { + item_id: guid(id), + point, + replace, + } +} + +fn hats(replace: bool) -> Vec { + vec![ + call(PARTY, RlvAttachmentPoint::Spine, replace), + call(FANCY, RlvAttachmentPoint::Chin, replace), + ] +} + +fn clothing(replace: bool) -> Vec { + vec![ + call(BUSINESS, RlvAttachmentPoint::Pelvis, replace), + call(HAPPY, RlvAttachmentPoint::Default, replace), + call(RETRO, RlvAttachmentPoint::Default, replace), + ] +} + +fn recursive(replace: bool, hats_replace: bool) -> Vec { + let mut expected = clothing(replace); + expected.extend(hats(hats_replace)); + expected +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:5e4fd9176ccab2f0 2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d translated +#[test] +fn attach_hats() { + assert_eq!( + run("attach", "Clothing/Hats", AttachSetup::Default), + hats(true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:1112c98c6420210d 2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d translated +#[test] +fn attach_over_or_replace_hats() { + assert_eq!( + run("attachoverorreplace", "Clothing/Hats", AttachSetup::Default), + hats(true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:0dd9d8fadf48e313 2ecd1c4e8f6238ac0e1274053bcc512d08767c61a0532bbd321d1c8b15c94d6d translated +#[test] +fn attach_over_hats() { + assert_eq!( + run("attachover", "Clothing/Hats", AttachSetup::Default), + hats(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:5e4fd9176ccab2f0 1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3 translated +#[test] +fn attach_clothing() { + assert_eq!( + run("attach", "Clothing", AttachSetup::Default), + clothing(true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:1112c98c6420210d 1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3 translated +#[test] +fn attach_over_or_replace_clothing() { + assert_eq!( + run("attachoverorreplace", "Clothing", AttachSetup::Default), + clothing(true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:0dd9d8fadf48e313 1bbd8cf1f00311fc656ca6c05d60ed033c6a69d59d4ff69d876f50f9d48645a3 translated +#[test] +fn attach_over_clothing() { + assert_eq!( + run("attachover", "Clothing", AttachSetup::Default), + clothing(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:2a7ad8f0a57b741d 751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385 translated +#[test] +fn attach_skips_already_attached() { + assert!(run("attach", "Clothing", AttachSetup::AlreadyAttached).is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:da775b6e5cf13e70 751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385 translated +#[test] +fn attach_over_or_replace_skips_already_attached() { + assert!( + run( + "attachoverorreplace", + "Clothing", + AttachSetup::AlreadyAttached + ) + .is_empty() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:e59967ec103647cc 751483b13ff87bf258c3aec671ff6a8c9b34e8126f7e877982065d28ef426385 translated +#[test] +fn attach_over_skips_already_attached() { + assert!(run("attachover", "Clothing", AttachSetup::AlreadyAttached).is_empty()); +} + +fn positioned(replace: bool) -> Vec { + vec![ + call(PARTY, RlvAttachmentPoint::Spine, replace), + call(FANCY, RlvAttachmentPoint::Skull, replace), + ] +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:5e4fd9176ccab2f0 6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634 translated +#[test] +fn attach_uses_position_from_folder_name() { + assert_eq!( + run( + "attach", + "Clothing/Hats (spine)", + AttachSetup::PositionFromFolder + ), + positioned(true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:1112c98c6420210d 6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634 translated +#[test] +fn attach_over_or_replace_uses_position_from_folder_name() { + assert_eq!( + run( + "attachoverorreplace", + "Clothing/Hats (spine)", + AttachSetup::PositionFromFolder + ), + positioned(true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:0dd9d8fadf48e313 6a34c794669e596b982f5050071502e43061053677b44536f60847d4c3798634 translated +#[test] +fn attach_over_uses_position_from_folder_name() { + assert_eq!( + run( + "attachover", + "Clothing/Hats (spine)", + AttachSetup::PositionFromFolder + ), + positioned(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:2a7ad8f0a57b741d 5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1 translated +#[test] +fn attach_honors_add_folder() { + assert_eq!( + run("attach", "Clothing/+Hats", AttachSetup::AddFolder), + hats(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:da775b6e5cf13e70 5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1 translated +#[test] +fn attach_over_or_replace_honors_add_folder() { + assert_eq!( + run( + "attachoverorreplace", + "Clothing/+Hats", + AttachSetup::AddFolder + ), + hats(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:e59967ec103647cc 5c09150744493c62b8b5c0ec139b6580bb74fe618b1a111b7a1ce583e8fa82e1 translated +#[test] +fn attach_over_honors_add_folder() { + assert_eq!( + run("attachover", "Clothing/+Hats", AttachSetup::AddFolder), + hats(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:5e4fd9176ccab2f0 268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c translated +#[test] +fn attach_allows_private_parent() { + assert_eq!( + run("attach", ".clothing/Hats", AttachSetup::PrivateParent), + hats(true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:1112c98c6420210d 268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c translated +#[test] +fn attach_over_or_replace_allows_private_parent() { + assert_eq!( + run( + "attachoverorreplace", + ".clothing/Hats", + AttachSetup::PrivateParent + ), + hats(true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:0dd9d8fadf48e313 268a375256333f2986ac68c5a357042b424f867585ef5a954328f9333b62007c translated +#[test] +fn attach_over_allows_private_parent() { + assert_eq!( + run("attachover", ".clothing/Hats", AttachSetup::PrivateParent), + hats(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:eee2b1b757fc196e 17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671 translated +#[test] +fn attach_all_recursive() { + assert_eq!( + run("attachall", "Clothing", AttachSetup::Default), + recursive(true, true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:e6bc1820d9335b07 17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671 translated +#[test] +fn attach_all_over_or_replace_recursive() { + assert_eq!( + run("attachalloverorreplace", "Clothing", AttachSetup::Default), + recursive(true, true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:fb63a8c8c9b75b99 17a84542635b76f4f806126ab170d43441ad00b9b91650aa1164909de9692671 translated +#[test] +fn attach_all_over_recursive() { + assert_eq!( + run("attachallover", "Clothing", AttachSetup::Default), + recursive(false, false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:eee2b1b757fc196e f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4 translated +#[test] +fn attach_all_skips_hidden_subfolder() { + assert_eq!( + run("attachall", "Clothing", AttachSetup::HiddenSubfolder), + clothing(true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:e6bc1820d9335b07 f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4 translated +#[test] +fn attach_all_over_or_replace_skips_hidden_subfolder() { + assert_eq!( + run( + "attachalloverorreplace", + "Clothing", + AttachSetup::HiddenSubfolder + ), + clothing(true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:fb63a8c8c9b75b99 f2e3209b5a1a655a846e7f19801ed118a6dd303edeab705480aaf03959a383e4 translated +#[test] +fn attach_all_over_skips_hidden_subfolder() { + assert_eq!( + run("attachallover", "Clothing", AttachSetup::HiddenSubfolder), + clothing(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:eee2b1b757fc196e 6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d translated +#[test] +fn attach_all_honors_recursive_add_folder() { + assert_eq!( + run("attachall", "Clothing", AttachSetup::RecursiveAddFolder), + recursive(true, false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:e6bc1820d9335b07 6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d translated +#[test] +fn attach_all_over_or_replace_honors_recursive_add_folder() { + assert_eq!( + run( + "attachalloverorreplace", + "Clothing", + AttachSetup::RecursiveAddFolder + ), + recursive(true, false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:fb63a8c8c9b75b99 6164ae5589e5a684637e9c85dd04e5e4c439c541be45b5ae2228e5c5edb2b79d translated +#[test] +fn attach_all_over_honors_recursive_add_folder() { + assert_eq!( + run("attachallover", "Clothing", AttachSetup::RecursiveAddFolder), + recursive(false, false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:eee2b1b757fc196e cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae translated +#[test] +fn attach_all_allows_private_source() { + assert_eq!( + run("attachall", ".auto_attach", AttachSetup::PrivateSource), + recursive(true, true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:e6bc1820d9335b07 cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae translated +#[test] +fn attach_all_over_or_replace_allows_private_source() { + assert_eq!( + run( + "attachalloverorreplace", + ".auto_attach", + AttachSetup::PrivateSource + ), + recursive(true, true) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:fb63a8c8c9b75b99 cdab3dc2313a5fec377f6fa0d49ac51b7ef58ede741d8c886f298b47efb508ae translated +#[test] +fn attach_all_over_allows_private_source() { + assert_eq!( + run("attachallover", ".auto_attach", AttachSetup::PrivateSource), + recursive(false, false) + ); +} + +fn one_party(point: RlvAttachmentPoint, replace: bool) -> Vec { + vec![call(PARTY, point, replace)] +} +fn this_by_id(replace: bool) -> Vec { + vec![ + call(BUSINESS, RlvAttachmentPoint::Pelvis, replace), + call(RETRO, RlvAttachmentPoint::Default, replace), + ] +} +fn this_add_folder() -> Vec { + vec![ + call(HAPPY, RlvAttachmentPoint::Default, false), + call(RETRO, RlvAttachmentPoint::Default, false), + ] +} +fn this_attachment_point(replace: bool) -> Vec { + vec![ + call(BUSINESS, RlvAttachmentPoint::Pelvis, replace), + call(RETRO, RlvAttachmentPoint::Default, replace), + call(FANCY, RlvAttachmentPoint::Chin, replace), + ] +} +fn this_wearable(replace: bool) -> Vec { + vec![ + call(BUSINESS, RlvAttachmentPoint::Pelvis, replace), + call(HAPPY, RlvAttachmentPoint::Default, replace), + call(GLASSES, RlvAttachmentPoint::Default, replace), + ] +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:6882162efd904e15 3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2 translated +#[test] +fn attach_this_default() { + assert_eq!( + run_this("attachthis", None, AttachSetup::ThisDefault, true), + one_party(RlvAttachmentPoint::Spine, true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:45b5361aae1131d0 3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2 translated +#[test] +fn attach_this_over_or_replace_default() { + assert_eq!( + run_this( + "attachthisoverorreplace", + None, + AttachSetup::ThisDefault, + true + ), + one_party(RlvAttachmentPoint::Spine, true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:f66e403049f440cf 3bd216683e650e5727244882dd61b16c58192e48438d8a8a831d60782d409fb2 translated +#[test] +fn attach_this_over_default() { + assert_eq!( + run_this("attachthisover", None, AttachSetup::ThisDefault, true), + one_party(RlvAttachmentPoint::Spine, false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:6882162efd904e15 3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392 translated +#[test] +fn attach_this_by_id() { + assert_eq!( + run_this("attachthis", Some(PRIM1), AttachSetup::ThisById, false), + this_by_id(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:45b5361aae1131d0 3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392 translated +#[test] +fn attach_this_over_or_replace_by_id() { + assert_eq!( + run_this( + "attachthisoverorreplace", + Some(PRIM1), + AttachSetup::ThisById, + false + ), + this_by_id(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:f66e403049f440cf 3f6cc1241679d7746e58925c3c17aabf88a5c8694bbfda0fceb4b054d8b90392 translated +#[test] +fn attach_this_over_by_id() { + assert_eq!( + run_this("attachthisover", Some(PRIM1), AttachSetup::ThisById, false), + this_by_id(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:a2681d046a6f6fef 67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b translated +#[test] +fn attach_this_honors_add_folder() { + assert_eq!( + run_this("attachthis", None, AttachSetup::ThisAddFolder, true), + this_add_folder() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:34172d9d6ebbcf53 67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b translated +#[test] +fn attach_this_over_or_replace_honors_add_folder() { + assert_eq!( + run_this( + "attachthisoverorreplace", + None, + AttachSetup::ThisAddFolder, + true + ), + this_add_folder() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:30379630ffa50e68 67d84750193300b9445aa33d47d78f8fc5161b9456b7755d305568c695737a4b translated +#[test] +fn attach_this_over_honors_add_folder() { + assert_eq!( + run_this("attachthisover", None, AttachSetup::ThisAddFolder, true), + this_add_folder() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:6882162efd904e15 c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27 translated +#[test] +fn attach_this_uses_folder_attachment_point() { + assert_eq!( + run_this("attachthis", None, AttachSetup::ThisFolderPoint, true), + one_party(RlvAttachmentPoint::Skull, true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:45b5361aae1131d0 c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27 translated +#[test] +fn attach_this_over_or_replace_uses_folder_attachment_point() { + assert_eq!( + run_this( + "attachthisoverorreplace", + None, + AttachSetup::ThisFolderPoint, + true + ), + one_party(RlvAttachmentPoint::Skull, true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:f66e403049f440cf c45b9e08563acaf523fc8bddf5953e970bc773749d6f52b59f0806f104c24d27 translated +#[test] +fn attach_this_over_uses_folder_attachment_point() { + assert_eq!( + run_this("attachthisover", None, AttachSetup::ThisFolderPoint, true), + one_party(RlvAttachmentPoint::Skull, false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:6882162efd904e15 059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8 translated +#[test] +fn attach_this_from_hidden_subfolder() { + assert_eq!( + run_this("attachthis", None, AttachSetup::ThisHidden, true), + one_party(RlvAttachmentPoint::Spine, true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:45b5361aae1131d0 059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8 translated +#[test] +fn attach_this_over_or_replace_from_hidden_subfolder() { + assert_eq!( + run_this( + "attachthisoverorreplace", + None, + AttachSetup::ThisHidden, + true + ), + one_party(RlvAttachmentPoint::Spine, true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:f66e403049f440cf 059d647777a2d65d5a14f77aa6914449d1a9c0cbc876d3acccfa3a0de30988e8 translated +#[test] +fn attach_this_over_from_hidden_subfolder() { + assert_eq!( + run_this("attachthisover", None, AttachSetup::ThisHidden, true), + one_party(RlvAttachmentPoint::Spine, false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:6882162efd904e15 9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9 translated +#[test] +fn attach_this_by_attachment_point() { + assert_eq!( + run_this( + "attachthis", + Some("spine"), + AttachSetup::ThisAttachmentPoint, + false + ), + this_attachment_point(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:45b5361aae1131d0 9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9 translated +#[test] +fn attach_this_over_or_replace_by_attachment_point() { + assert_eq!( + run_this( + "attachthisoverorreplace", + Some("spine"), + AttachSetup::ThisAttachmentPoint, + false + ), + this_attachment_point(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:f66e403049f440cf 9e004ad47add2d97565c14c2d70bff08d1bea46d997140ad17ca5ffe04ee41a9 translated +#[test] +fn attach_this_over_by_attachment_point() { + assert_eq!( + run_this( + "attachthisover", + Some("spine"), + AttachSetup::ThisAttachmentPoint, + false + ), + this_attachment_point(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:6882162efd904e15 1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3 translated +#[test] +fn attach_this_by_wearable() { + assert_eq!( + run_this( + "attachthis", + Some("tattoo"), + AttachSetup::ThisWearable, + false + ), + this_wearable(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:45b5361aae1131d0 1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3 translated +#[test] +fn attach_this_over_or_replace_by_wearable() { + assert_eq!( + run_this( + "attachthisoverorreplace", + Some("tattoo"), + AttachSetup::ThisWearable, + false + ), + this_wearable(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:f66e403049f440cf 1c0adf85cffdece3b2576998e7c73921e8b842daf2e14ef1319e71c1f64797b3 translated +#[test] +fn attach_this_over_by_wearable() { + assert_eq!( + run_this( + "attachthisover", + Some("tattoo"), + AttachSetup::ThisWearable, + false + ), + this_wearable(false) + ); +} + +fn all_this(replace: bool) -> Vec { + vec![ + call(BUSINESS, RlvAttachmentPoint::Pelvis, replace), + call(RETRO, RlvAttachmentPoint::Default, replace), + call(PARTY, RlvAttachmentPoint::Spine, replace), + call(FANCY, RlvAttachmentPoint::Chin, replace), + ] +} +fn all_this_hidden(replace: bool) -> Vec { + vec![ + call(BUSINESS, RlvAttachmentPoint::Pelvis, replace), + call(RETRO, RlvAttachmentPoint::Default, replace), + ] +} +fn all_this_add(replace: bool) -> Vec { + vec![ + call(BUSINESS, RlvAttachmentPoint::Pelvis, replace), + call(RETRO, RlvAttachmentPoint::Default, replace), + call(PARTY, RlvAttachmentPoint::Spine, false), + call(FANCY, RlvAttachmentPoint::Chin, false), + ] +} +fn all_this_point(replace: bool) -> Vec { + vec![ + call(BUSINESS, RlvAttachmentPoint::Pelvis, replace), + call(RETRO, RlvAttachmentPoint::Default, replace), + call(GLASSES, RlvAttachmentPoint::Default, replace), + call(PARTY, RlvAttachmentPoint::Spine, replace), + call(FANCY, RlvAttachmentPoint::Chin, replace), + ] +} +fn all_this_wearable(replace: bool) -> Vec { + vec![ + call(BUSINESS, RlvAttachmentPoint::Pelvis, replace), + call(HAPPY, RlvAttachmentPoint::Default, replace), + call(PARTY, RlvAttachmentPoint::Spine, replace), + call(FANCY, RlvAttachmentPoint::Chin, replace), + ] +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:bc5a9cb6a299a551 be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9 translated +#[test] +fn attach_all_this_recursive() { + assert_eq!( + run_this("attachallthis", None, AttachSetup::AllThis, true), + all_this(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:0f04a34ae77465d3 be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9 translated +#[test] +fn attach_all_this_over_or_replace_recursive() { + assert_eq!( + run_this( + "attachallthisoverorreplace", + None, + AttachSetup::AllThis, + true + ), + all_this(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:1560d5268a46ddf1 be84d92abe19975bbf7a680f077d36956f33873a2b65bfebff8eddf6458b77c9 translated +#[test] +fn attach_all_this_over_recursive() { + assert_eq!( + run_this("attachallthisover", None, AttachSetup::AllThis, true), + all_this(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:bc5a9cb6a299a551 dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7 translated +#[test] +fn attach_all_this_recursive_by_id() { + assert_eq!( + run_this("attachallthis", Some(PRIM1), AttachSetup::AllThis, false), + all_this(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:0f04a34ae77465d3 dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7 translated +#[test] +fn attach_all_this_over_or_replace_recursive_by_id() { + assert_eq!( + run_this( + "attachallthisoverorreplace", + Some(PRIM1), + AttachSetup::AllThis, + false + ), + all_this(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:1560d5268a46ddf1 dfc11c1f68841153e34d37f98884c041366bd89d754b0f3421a166f09436daa7 translated +#[test] +fn attach_all_this_over_recursive_by_id() { + assert_eq!( + run_this( + "attachallthisover", + Some(PRIM1), + AttachSetup::AllThis, + false + ), + all_this(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:bc5a9cb6a299a551 cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747 translated +#[test] +fn attach_all_this_skips_hidden_subfolder() { + assert_eq!( + run_this("attachallthis", None, AttachSetup::AllThisHidden, true), + all_this_hidden(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:0f04a34ae77465d3 cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747 translated +#[test] +fn attach_all_this_over_or_replace_skips_hidden_subfolder() { + assert_eq!( + run_this( + "attachallthisoverorreplace", + None, + AttachSetup::AllThisHidden, + true + ), + all_this_hidden(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:1560d5268a46ddf1 cfdb334a613f22babdc58f2fb96a884ed7e7a2fd339ec396a71f4decc02a3747 translated +#[test] +fn attach_all_this_over_skips_hidden_subfolder() { + assert_eq!( + run_this("attachallthisover", None, AttachSetup::AllThisHidden, true), + all_this_hidden(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:bc5a9cb6a299a551 780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea translated +#[test] +fn attach_all_this_honors_add_folder() { + assert_eq!( + run_this("attachallthis", None, AttachSetup::AllThisAddFolder, true), + all_this_add(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:0f04a34ae77465d3 780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea translated +#[test] +fn attach_all_this_over_or_replace_honors_add_folder() { + assert_eq!( + run_this( + "attachallthisoverorreplace", + None, + AttachSetup::AllThisAddFolder, + true + ), + all_this_add(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:1560d5268a46ddf1 780e7212749cb332abbf1a1cef33ed8938584b817476d39424b4628d34c3f4ea translated +#[test] +fn attach_all_this_over_honors_add_folder() { + assert_eq!( + run_this( + "attachallthisover", + None, + AttachSetup::AllThisAddFolder, + true + ), + all_this_add(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:bc5a9cb6a299a551 4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613 translated +#[test] +fn attach_all_this_by_attachment_point() { + assert_eq!( + run_this( + "attachallthis", + Some("skull"), + AttachSetup::AllThisAttachmentPoint, + false + ), + all_this_point(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:0f04a34ae77465d3 4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613 translated +#[test] +fn attach_all_this_over_or_replace_by_attachment_point() { + assert_eq!( + run_this( + "attachallthisoverorreplace", + Some("skull"), + AttachSetup::AllThisAttachmentPoint, + false + ), + all_this_point(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:1560d5268a46ddf1 4115d8f4e18acc9992e84f30962536c4cd15db2e4c8c54aa840f5ee397ba8613 translated +#[test] +fn attach_all_this_over_by_attachment_point() { + assert_eq!( + run_this( + "attachallthisover", + Some("skull"), + AttachSetup::AllThisAttachmentPoint, + false + ), + all_this_point(false) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:bc5a9cb6a299a551 91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d translated +#[test] +fn attach_all_this_by_wearable() { + assert_eq!( + run_this( + "attachallthis", + Some("tattoo"), + AttachSetup::AllThisWearable, + false + ), + all_this_wearable(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:0f04a34ae77465d3 91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d translated +#[test] +fn attach_all_this_over_or_replace_by_wearable() { + assert_eq!( + run_this( + "attachallthisoverorreplace", + Some("tattoo"), + AttachSetup::AllThisWearable, + false + ), + all_this_wearable(true) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:1560d5268a46ddf1 91d47986c684dfb289df7f867f847d270324cbc6754a24aaa009b3a96226661d translated +#[test] +fn attach_all_this_over_by_wearable() { + assert_eq!( + run_this( + "attachallthisover", + Some("tattoo"), + AttachSetup::AllThisWearable, + false + ), + all_this_wearable(false) + ); +} diff --git a/tests/compat/tests/rlv_attachment_restrictions_semantics.rs b/tests/compat/tests/rlv_attachment_restrictions_semantics.rs new file mode 100644 index 0000000..b8d815b --- /dev/null +++ b/tests/compat/tests/rlv_attachment_restrictions_semantics.rs @@ -0,0 +1,400 @@ +// Exact Rust translations of the direct attachment, outfit, detach, edit, and permissive restrictions. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SampleInventoryTree, guid}; +use libremetaverse_rlv::{ + InventoryMap, RlvAttachmentPoint, RlvPermissionsServiceObjectLocation as ObjectLocation, + RlvWearableType, +}; + +const PRIM_1: &str = "11111111-0001-4aaa-8aaa-ffffffffffff"; +const PRIM_2: &str = "11111111-0002-4aaa-8aaa-ffffffffffff"; +const PRIM_3: &str = "11111111-0003-4aaa-8aaa-ffffffffffff"; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn provide_inventory(h: &RlvHarness, root: libremetaverse_rlv::RlvSharedFolder) { + h.queries.lock().unwrap().inventory_map = Some(InventoryMap::new(root, vec![]).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs::AddAttachRestrictionTests.AddAttach::test bb2c3495d7b6862fabe1007bcfccc2850d29eef1d9aa4eac6d13d6004dcc4e6b translated +#[test] +fn add_attach_restricts_all_attachment_points() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM_1)))); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + provide_inventory(&h, tree.root); + assert!(block_on(h.process("@addattach=n")).unwrap()); + let permissions = h.service.permissions(); + assert!( + !permissions + .can_attach_with_rlv_inventory_item_boolean(tree.fancy_hat, true) + .unwrap() + ); + assert!( + !permissions + .can_attach_with_rlv_inventory_item_boolean(tree.happy_shirt, true) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs::AddAttachRestrictionTests.AddAttach_Specific::test 0201965931ebba1c13a23bbb43a8787c1639b0b98851141faffd963173c51035 translated +#[test] +fn add_attach_restricts_one_attachment_point() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Groin))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM_1)))); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + provide_inventory(&h, tree.root); + assert!(block_on(h.process("@addattach:groin=n")).unwrap()); + let permissions = h.service.permissions(); + assert!( + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.fancy_hat, true) + .unwrap() + ); + assert!( + !permissions + .can_attach_with_rlv_inventory_item_boolean(tree.happy_shirt, true) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs::AddOutfitRestrictionTests.AddOutfit::test d4902b4dda0a640d240c88af30431f6d247aae2a74a81126fd91ba1d930de3fb translated +#[test] +fn add_outfit_restricts_all_layers() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.party_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Skull))); + tree.party_hat + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + tree.happy_shirt + .set_worn_on(Some(Some(RlvWearableType::Shirt))); + tree.fancy_hat + .set_worn_on(Some(Some(RlvWearableType::Hair))); + provide_inventory(&h, tree.root); + assert!(block_on(h.process_from("@addoutfit=n", PRIM_3, "Party Hat (Spine)")).unwrap()); + let permissions = h.service.permissions(); + assert!( + !permissions + .can_attach_with_rlv_inventory_item_boolean(tree.happy_shirt, true) + .unwrap() + ); + assert!( + !permissions + .can_attach_with_rlv_inventory_item_boolean(tree.fancy_hat, true) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs::AddOutfitRestrictionTests.AddOutfit_part::test e7e5467b36484fb54b0336abccf682905fbe5bff9e04195645981815e2ffadeb translated +#[test] +fn add_outfit_restricts_one_layer() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.happy_shirt + .set_worn_on(Some(Some(RlvWearableType::Shirt))); + tree.fancy_hat + .set_worn_on(Some(Some(RlvWearableType::Hair))); + provide_inventory(&h, tree.root); + assert!(block_on(h.process("@addoutfit:shirt=n")).unwrap()); + let permissions = h.service.permissions(); + assert!( + !permissions + .can_attach_with_rlv_inventory_item_boolean(tree.happy_shirt, true) + .unwrap() + ); + assert!( + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.fancy_hat, true) + .unwrap() + ); +} + +const OBJECT_1: &str = "00000000-0000-4000-8000-000000000000"; +const OBJECT_PRIM_1: &str = "00000000-0000-4000-8000-ffffffffffff"; +const OBJECT_2: &str = "11111111-1111-4111-8111-111111111111"; +const OBJECT_PRIM_2: &str = "11111111-1111-4111-8111-ffffffffffff"; +const FOLDER: &str = "99999999-9999-4999-8999-999999999999"; + +fn can_detach( + h: &RlvHarness, + item: &str, + prim: Option<&str>, + shared: bool, + point: Option, + wearable: Option, +) -> bool { + h.service + .permissions() + .can_detach_with_nullable_nullable_nullable_boolean_nullable_nullable( + Some(Some(guid(item))), + prim.map(|value| Some(guid(value))), + Some(Some(guid(FOLDER))), + shared, + point.map(Some), + wearable.map(Some), + ) + .unwrap() +} + +fn detach_defaults(h: &RlvHarness) -> [bool; 6] { + [ + can_detach(h, OBJECT_1, None, false, None, None), + can_detach( + h, + OBJECT_1, + Some(OBJECT_PRIM_1), + false, + Some(RlvAttachmentPoint::Chest), + None, + ), + can_detach(h, OBJECT_1, None, false, None, Some(RlvWearableType::Shirt)), + can_detach(h, OBJECT_2, None, true, None, None), + can_detach( + h, + OBJECT_2, + Some(OBJECT_PRIM_2), + true, + Some(RlvAttachmentPoint::Chest), + None, + ), + can_detach(h, OBJECT_2, None, true, None, Some(RlvWearableType::Shirt)), + ] +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach_Default::test 8c5b165329ab6b46eb3ec7c9a07383e8ea1e54edf0882b43b14166d67cc45617 translated +#[test] +fn detach_default() { + assert_eq!(detach_defaults(&harness()), [true; 6]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach::test 50f5419aea3ea41aa9ebedd29202a549deb4ae6089c38965300a46fd5abf94bf translated +#[test] +fn detach_restricts_sender_prim() { + let h = harness(); + assert!(block_on(h.process_from("@detach=n", OBJECT_PRIM_2, "objectPrimId2")).unwrap()); + assert_eq!(detach_defaults(&h), [true, true, true, true, false, true]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach_AttachPoint::test a75fea134b92bca704b2e140135076d699d645c0d2854022d5b20d14be372589 translated +#[test] +fn detach_restricts_attachment_point() { + let h = harness(); + assert!(block_on(h.process("@detach:skull=n")).unwrap()); + for shared in [false, true] { + assert!(can_detach(&h, OBJECT_1, None, shared, None, None)); + assert!(can_detach( + &h, + OBJECT_1, + Some(if shared { OBJECT_PRIM_2 } else { OBJECT_PRIM_1 }), + shared, + Some(RlvAttachmentPoint::Chest), + None + )); + assert!(!can_detach( + &h, + OBJECT_1, + Some(if shared { OBJECT_PRIM_2 } else { OBJECT_PRIM_1 }), + shared, + Some(RlvAttachmentPoint::Skull), + None + )); + assert!(can_detach( + &h, + OBJECT_1, + None, + shared, + None, + Some(RlvWearableType::Shirt) + )); + } +} + +fn edit_matrix(command: &str) -> [[bool; 3]; 2] { + let h = harness(); + block_on(h.process(command)).unwrap(); + [None, Some(Some(guid(OBJECT_1)))].map(|object| { + [ + h.service + .permissions() + .can_edit(ObjectLocation::Hud, object) + .unwrap(), + h.service + .permissions() + .can_edit(ObjectLocation::Attached, object) + .unwrap(), + h.service + .permissions() + .can_edit(ObjectLocation::RezzedInWorld, object) + .unwrap(), + ] + }) +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/EditAttachRestrictionTests.cs::EditAttachRestrictionTests.CanEdit_Attachment::test 22bc9e267e270c2c762561851249af4ef64c0b5bd288950a95b1b636b2975b6e translated +#[test] +fn edit_attachment_restriction() { + assert_eq!(edit_matrix("@editattach=n"), [[true, false, true]; 2]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/EditRestrictionTests.cs::EditRestrictionTests.CanEditFolderNameSpecifiesToAddInsteadOfReplace::test 6d82d0869826bbc935d89967445dfc991619bdaf3fa631550c5d3f91a13c4935 translated +#[test] +fn edit_everywhere_restriction() { + assert_eq!(edit_matrix("@edit=n"), [[false, false, false]; 2]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/EditWorldRestrictionTests.cs::EditWorldRestrictionTests.CanEdit_World::test 1f335a2c81735bf58294b97ceedfd85192113e69c78a38804f0db923ce7a0241 translated +#[test] +fn edit_world_restriction() { + assert_eq!(edit_matrix("@editworld=n"), [[true, true, false]; 2]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs::PermissiveRestrictionTests.Permissive_On::test 923519a1220e5b3007321fb9ee8cc9db27bc0bbc38bed69df0659e4365c610e8 translated +#[test] +fn permissive_on_command_disables_permissive_mode() { + let h = harness(); + block_on(h.process("@permissive=n")).unwrap(); + assert!(!h.service.permissions().is_permissive().unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs::PermissiveRestrictionTests.Permissive_Off::test b995698351bf04e00ab5aed459c8ee08292897545b8684338a90eaf42cd6c4aa translated +#[test] +fn permissive_off_command_restores_permissive_mode() { + let h = harness(); + block_on(h.process("@permissive=n")).unwrap(); + block_on(h.process("@permissive=y")).unwrap(); + assert!(h.service.permissions().is_permissive().unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs::RemAttachRestrictionTests.RemAttach::test 7005409bfff88f7fb75e5cf87f6f52f4c6f048de32f651b844cf62a1cc16f55c translated +#[test] +fn remove_attachment_restriction() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + tree.watch.set_worn_on(Some(Some(RlvWearableType::Tattoo))); + provide_inventory(&h, tree.root); + assert!(block_on(h.process("@remattach=n")).unwrap()); + let permissions = h.service.permissions(); + assert!( + !permissions + .can_detach_with_rlv_inventory_item(tree.fancy_hat) + .unwrap() + ); + assert!( + permissions + .can_detach_with_rlv_inventory_item(tree.watch) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs::RemAttachRestrictionTests.RemAttach_Specific::test 407cb5627753c42af2b469644ddc2857416fb4b181bfbb742b199ad7239d5e6f translated +#[test] +fn remove_specific_attachment_restriction() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.party_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Spine))); + tree.party_hat + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat + .set_attached_prim_id(Some(Some(guid(PRIM_2)))); + tree.watch.set_worn_on(Some(Some(RlvWearableType::Tattoo))); + provide_inventory(&h, tree.root); + assert!(block_on(h.process("@remattach:spine=n")).unwrap()); + let permissions = h.service.permissions(); + assert!( + !permissions + .can_detach_with_rlv_inventory_item(tree.party_hat) + .unwrap() + ); + assert!( + permissions + .can_detach_with_rlv_inventory_item(tree.fancy_hat) + .unwrap() + ); + assert!( + permissions + .can_detach_with_rlv_inventory_item(tree.watch) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs::RemOutfitRestrictionTests.RemOutfit::test 2aa5056c8aec09fb28d0da37bf6861220595cacb3190542d865f99034fc1c488 translated +#[test] +fn remove_outfit_restriction() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + tree.watch.set_worn_on(Some(Some(RlvWearableType::Tattoo))); + provide_inventory(&h, tree.root); + assert!(block_on(h.process("@remoutfit=n")).unwrap()); + let permissions = h.service.permissions(); + assert!( + permissions + .can_detach_with_rlv_inventory_item(tree.fancy_hat) + .unwrap() + ); + assert!( + !permissions + .can_detach_with_rlv_inventory_item(tree.watch) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs::RemOutfitRestrictionTests.RemOutfit_part::test f0c36209e33c9961b10ff685c8d4a32e279b4852e1c16a0e724f3cd481089576 translated +#[test] +fn remove_specific_outfit_layer_restriction() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + tree.watch.set_worn_on(Some(Some(RlvWearableType::Tattoo))); + tree.retro_pants + .set_worn_on(Some(Some(RlvWearableType::Pants))); + provide_inventory(&h, tree.root); + assert!(block_on(h.process("@remoutfit:pants=n")).unwrap()); + let permissions = h.service.permissions(); + assert!( + permissions + .can_detach_with_rlv_inventory_item(tree.fancy_hat) + .unwrap() + ); + assert!( + !permissions + .can_detach_with_rlv_inventory_item(tree.retro_pants) + .unwrap() + ); + assert!( + permissions + .can_detach_with_rlv_inventory_item(tree.watch) + .unwrap() + ); +} diff --git a/tests/compat/tests/rlv_blacklist_semantics.rs b/tests/compat/tests/rlv_blacklist_semantics.rs new file mode 100644 index 0000000..0b5ce48 --- /dev/null +++ b/tests/compat/tests/rlv_blacklist_semantics.rs @@ -0,0 +1,335 @@ +// Exact Rust translation of LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs. +// Source SHA-256: 01957800d5baff9ab13cf22bc496a5506e26f9be194917a94a3558a8456a761c + +use libremetaverse_compat_tests::rlv_support::RlvHarness; +use libremetaverse_types::Error; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn blacklist_behavior(value: &str) -> Result<(), Error> { + harness() + .service + .blacklist() + .blacklist_behavior(value.into()) +} + +fn unblacklist_behavior(value: &str) -> Result<(), Error> { + harness() + .service + .blacklist() + .un_blacklist_behavior(value.into()) +} + +fn is_blacklisted(value: &str) -> bool { + harness() + .service + .blacklist() + .is_blacklisted(value.into()) + .unwrap() +} + +fn seed(h: &RlvHarness, values: &str) { + for value in values + .split(',') + .map(str::trim) + .filter(|value| !value.is_empty()) + { + h.service + .blacklist() + .blacklist_behavior(value.into()) + .unwrap(); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_EmptyByDefault::test 9bd5c937815547d2d4b9dcfcb5c35d69e224cc4dc256273735c69b8be150c3a8 translated +#[test] +fn blacklist_is_empty_by_default() { + assert!( + harness() + .service + .blacklist() + .get_blacklist() + .unwrap() + .is_empty() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_ValidBehavior_AddsToBlacklist::test dbf7650afeab51abc22fc48881a06e4908f373b6b0077fe58fc4d4e50ea0e0f5 translated +#[test] +fn blacklist_adds_valid_behavior() { + let h = harness(); + h.service + .blacklist() + .blacklist_behavior("testbehavior".into()) + .unwrap(); + let values = h.service.blacklist().get_blacklist().unwrap(); + assert_eq!(values.len(), 1); + assert!(values.contains(&"testbehavior".into())); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_CaseInsensitive_NormalizesToLowercase::test dbc4161b4cd5dd7f3609b11f1c6f4f6e1e243b2ba65a444afa67c70cf649c5d3 translated +#[test] +fn blacklist_normalizes_to_lowercase() { + let h = harness(); + h.service + .blacklist() + .blacklist_behavior("TestBehavior".into()) + .unwrap(); + let values = h.service.blacklist().get_blacklist().unwrap(); + assert_eq!(values, vec!["testbehavior"]); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_DuplicateBehavior_OnlyAddsOnce::test 53644a5123b90e32f162a9106c945a57d05b17de1a8ab0bf1930283deaf28018 translated +#[test] +fn blacklist_deduplicates_case_insensitively() { + let h = harness(); + for value in ["testbehavior", "testbehavior", "TESTBEHAVIOR"] { + h.service + .blacklist() + .blacklist_behavior(value.into()) + .unwrap(); + } + assert_eq!( + h.service.blacklist().get_blacklist().unwrap(), + vec!["testbehavior"] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:12ae32cb1ec02d01 d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17 translated +#[test] +fn blacklist_rejects_empty_behavior() { + assert_eq!(blacklist_behavior(""), Err(Error::Argument)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:52109349dabf6910 d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17 translated +#[test] +fn blacklist_rejects_spaces_behavior() { + assert_eq!(blacklist_behavior(" "), Err(Error::Argument)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:729e2865c247816a d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17 translated +#[test] +fn blacklist_rejects_tab_behavior() { + assert_eq!(blacklist_behavior("\t"), Err(Error::Argument)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:d7a5e915306d21dc d9dcd55677740a9a1ffb8b709662060b4c417c10bfc6a361501bb149396dfe17 translated +#[test] +fn blacklist_rejects_newline_behavior() { + assert_eq!(blacklist_behavior("\n"), Err(Error::Argument)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_ExistingBehavior_RemovesFromBlacklist::test 47501ced70145add192d357c6a2647ca4a923bdaab3b1eff1c3857cebc5020db translated +#[test] +fn unblacklist_removes_existing_behavior() { + let h = harness(); + seed(&h, "testbehavior"); + h.service + .blacklist() + .un_blacklist_behavior("testbehavior".into()) + .unwrap(); + assert!(h.service.blacklist().get_blacklist().unwrap().is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_CaseInsensitive_RemovesCorrectBehavior::test b5f4a87e8dc603a08a9f1225a35e44962d4240a3e5b9e605c948d19b268ed1bd translated +#[test] +fn unblacklist_is_case_insensitive() { + let h = harness(); + seed(&h, "TestBehavior"); + h.service + .blacklist() + .un_blacklist_behavior("testbehavior".into()) + .unwrap(); + assert!(h.service.blacklist().get_blacklist().unwrap().is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NonExistentBehavior_DoesNothing::test 495314ef0e42ec419b804108907c02ffe9520a1657344f391aa491f91129ecc5 translated +#[test] +fn unblacklist_nonexistent_behavior_does_nothing() { + let h = harness(); + seed(&h, "existingbehavior"); + h.service + .blacklist() + .un_blacklist_behavior("nonexistentbehavior".into()) + .unwrap(); + assert_eq!( + h.service.blacklist().get_blacklist().unwrap(), + vec!["existingbehavior"] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:12ae32cb1ec02d01 9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f translated +#[test] +fn unblacklist_rejects_empty_behavior() { + assert_eq!(unblacklist_behavior(""), Err(Error::Argument)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:52109349dabf6910 9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f translated +#[test] +fn unblacklist_rejects_spaces_behavior() { + assert_eq!(unblacklist_behavior(" "), Err(Error::Argument)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:729e2865c247816a 9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f translated +#[test] +fn unblacklist_rejects_tab_behavior() { + assert_eq!(unblacklist_behavior("\t"), Err(Error::Argument)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:d7a5e915306d21dc 9b1e325139b7cec6e99ab40c5ca0e72faa88b95bce521c4ad25ed9370c2dd89f translated +#[test] +fn unblacklist_rejects_newline_behavior() { + assert_eq!(unblacklist_behavior("\n"), Err(Error::Argument)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_BlacklistedBehavior_ReturnsTrue::test 2cfeda6f45d63514216d0ffccdee89ee4b7f78e775f43fb12ee78324f9cfde35 translated +#[test] +fn is_blacklisted_returns_true_for_added_behavior() { + let h = harness(); + seed(&h, "testbehavior"); + assert!( + h.service + .blacklist() + .is_blacklisted("testbehavior".into()) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_CaseInsensitive_ReturnsTrue::test 1b4c6ed072b97dd9abcc0f730533691d8a65122d1839d40736e98a0f5c43f07d translated +#[test] +fn is_blacklisted_is_case_insensitive() { + let h = harness(); + seed(&h, "TestBehavior"); + for value in ["testbehavior", "TESTBEHAVIOR", "TestBehavior"] { + assert!(h.service.blacklist().is_blacklisted(value.into()).unwrap()); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NonBlacklistedBehavior_ReturnsFalse::test f4cc9018c5d111b06dc8c2ce0d6ed042eb063331f35ef1665e65f4d8606d3cd3 translated +#[test] +fn is_blacklisted_returns_false_for_missing_behavior() { + let h = harness(); + seed(&h, "existingbehavior"); + assert!( + !h.service + .blacklist() + .is_blacklisted("nonexistentbehavior".into()) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:12ae32cb1ec02d01 ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa translated +#[test] +fn is_blacklisted_returns_false_for_empty_behavior() { + assert!(!is_blacklisted("")); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:52109349dabf6910 ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa translated +#[test] +fn is_blacklisted_returns_false_for_spaces_behavior() { + assert!(!is_blacklisted(" ")); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:729e2865c247816a ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa translated +#[test] +fn is_blacklisted_returns_false_for_tab_behavior() { + assert!(!is_blacklisted("\t")); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:d7a5e915306d21dc ca0126a6bc1cc4ca73fdfe939ad4c9dbf1e35da741c4ea46eb3c16687730a1fa translated +#[test] +fn is_blacklisted_returns_false_for_newline_behavior() { + assert!(!is_blacklisted("\n")); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_MultipleItems_ReturnsOrderedCollection::test db9bd586b7a4f79ffd2d2c48c8131ccd4bd44d8de444696e9a7c53614ef37ed5 translated +#[test] +fn get_blacklist_returns_ordered_collection() { + let h = harness(); + seed(&h, "zebra,alpha,beta,charlie"); + assert_eq!( + h.service.blacklist().get_blacklist().unwrap(), + vec!["alpha", "beta", "charlie", "zebra"] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_ReturnsImmutableCopy::test 64db7441c81ea4f0d2e52e79b479cf658fbd2c2d1d23b918edcfa03db1233a3a translated +#[test] +fn get_blacklist_returns_independent_copy() { + let h = harness(); + seed(&h, "testbehavior"); + let first = h.service.blacklist().get_blacklist().unwrap(); + seed(&h, "anotherbehavior"); + let second = h.service.blacklist().get_blacklist().unwrap(); + assert_eq!(first, vec!["testbehavior"]); + assert_eq!(second, vec!["anotherbehavior", "testbehavior"]); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistWorkflow_AddMultipleBehaviors_WorksCorrectly::test 75d84bd0b26b16821ba107bef2bbb2ae58a2726496a757092b24dff6170f8872 translated +#[test] +fn blacklist_workflow_adds_and_removes_behaviors() { + let h = harness(); + seed(&h, "sendim,recvim,tpto,fly"); + for value in ["sendim", "recvim", "tpto", "fly"] { + assert!(h.service.blacklist().is_blacklisted(value.into()).unwrap()); + } + h.service + .blacklist() + .un_blacklist_behavior("sendim".into()) + .unwrap(); + h.service + .blacklist() + .un_blacklist_behavior("fly".into()) + .unwrap(); + assert!( + !h.service + .blacklist() + .is_blacklisted("sendim".into()) + .unwrap() + ); + assert!( + h.service + .blacklist() + .is_blacklisted("recvim".into()) + .unwrap() + ); + assert!(h.service.blacklist().is_blacklisted("tpto".into()).unwrap()); + assert!(!h.service.blacklist().is_blacklisted("fly".into()).unwrap()); + assert_eq!( + h.service.blacklist().get_blacklist().unwrap(), + vec!["recvim", "tpto"] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_IntegrationWithRestrictionsBase_WorksCorrectly::test f7347786e3a579dc0102dc20fb73823362866ea71658777aa6835a28a58daea9 translated +#[test] +fn seed_blacklist_adds_each_comma_separated_behavior() { + let h = harness(); + seed(&h, "sendim,recvim,tpto"); + for value in ["sendim", "recvim", "tpto"] { + assert!(h.service.blacklist().is_blacklisted(value.into()).unwrap()); + } + assert!(!h.service.blacklist().is_blacklisted("fly".into()).unwrap()); + assert_eq!(h.service.blacklist().get_blacklist().unwrap().len(), 3); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_EmptyString_ResultsInEmptyBlacklist::test 63555a93fbcc2b7691fdd2b79fe0db8cb305beef2c153b80f0040ba8f4f7117e translated +#[test] +fn seed_blacklist_empty_string_adds_nothing() { + let h = harness(); + seed(&h, ""); + assert!(h.service.blacklist().get_blacklist().unwrap().is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_WithSpaces_HandlesCorrectly::test ddd764a51e179fa6c349ab2a62bdedde1e62e4ff2ae33aa41a4ebb2359974404 translated +#[test] +fn seed_blacklist_trims_spaces() { + let h = harness(); + seed(&h, "sendim, recvim , tpto"); + for value in ["sendim", "recvim", "tpto"] { + assert!(h.service.blacklist().is_blacklisted(value.into()).unwrap()); + } + assert_eq!(h.service.blacklist().get_blacklist().unwrap().len(), 3); +} diff --git a/tests/compat/tests/rlv_camera_semantics.rs b/tests/compat/tests/rlv_camera_semantics.rs new file mode 100644 index 0000000..1cddd3e --- /dev/null +++ b/tests/compat/tests/rlv_camera_semantics.rs @@ -0,0 +1,691 @@ +// Exact Rust translation of LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs. +// Source SHA-256: 3bd6f2996fc1948e3f7c3087642ef68e0b959e49100cc70d443c5f110d0e3001 + +use libremetaverse_compat_tests::assert_close; +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, guid}; +use libremetaverse_rlv::CameraRestrictions; +use libremetaverse_types::compat::{Guid, Vector3}; + +const SENDER_2: &str = "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"; +const SENDER_3: &str = "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const TEXTURE_1: &str = "00000000-0000-4000-8000-000000000000"; +const TEXTURE_2: &str = "11111111-1111-4111-8111-111111111111"; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn restrictions(commands: &[(&str, Option<(&str, &str)>)]) -> CameraRestrictions { + let h = harness(); + for (command, sender) in commands { + let result = match sender { + Some((id, name)) => block_on(h.process_from(command, id, name)), + None => block_on(h.process(command)), + }; + result.unwrap(); + } + h.service.permissions().get_camera_restrictions().unwrap() +} + +fn scalar_matches( + commands: &[(&str, Option<(&str, &str)>)], + getter: fn(&CameraRestrictions) -> Option>, + expected: Option, +) -> bool { + let value = getter(&restrictions(commands)).flatten(); + match expected { + Some(expected) => { + value.is_some_and(|actual| (f64::from(actual) - f64::from(expected)).abs() <= 0.00001) + } + None => value.is_none(), + } +} + +fn texture(command: &str) -> Option { + restrictions(&[(command, None)]).texture().flatten() +} + +fn camera_query(command: &str) -> (bool, Vec<(i32, String)>) { + let h = harness(); + h.queries.lock().unwrap().camera_settings = Some([1.23, 123.45, 45.60, 130.0, 12.34, 91.34]); + let processed = block_on(h.process(command)).unwrap(); + let replies = h.actions.lock().unwrap().replies.clone(); + (processed, replies) +} + +fn missing_camera_settings(command: &str) -> (bool, Vec<(i32, String)>) { + let h = harness(); + let processed = block_on(h.process(command)).unwrap(); + let replies = h.actions.lock().unwrap().replies.clone(); + (processed, replies) +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Single::test 5f3010d46f3f18ed57ea52916dd9e8bde27d75c707dbcc0c6d68eb9bbe6c3591 translated +#[test] +fn cam_zoom_min_single() { + assert!(scalar_matches( + &[("@CamZoomMin:1.5=n", None)], + CameraRestrictions::zoom_min, + Some(1.5), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender::test 0df818c7a6c90358cb52f59f972e16c769d38f448619dbdfeddd5a602f64d1d9 translated +#[test] +fn cam_zoom_min_multiple_single_sender() { + assert!(scalar_matches( + &[ + ("@CamZoomMin:3.5=n", None), + ("@CamZoomMin:4.5=n", None), + ("@CamZoomMin:1.5=n", None), + ], + CameraRestrictions::zoom_min, + Some(4.5), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender_WithRemoval::test ed19a63ef16a600c9367f45d1a704739fd8e20e7811c7055df009676884de7dd translated +#[test] +fn cam_zoom_min_removes_matching_value() { + assert!(scalar_matches( + &[ + ("@CamZoomMin:3.5=n", None), + ("@CamZoomMin:4.5=n", None), + ("@CamZoomMin:1.5=n", None), + ("@CamZoomMin:8.5=n", None), + ("@CamZoomMin:8.5=y", None), + ], + CameraRestrictions::zoom_min, + Some(4.5), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_MultipleSenders::test c8ce609cf7506ae2df6e17126ebe5174f958245bedea26fe39600fb90195bdda translated +#[test] +fn cam_zoom_min_multiple_senders() { + assert!(scalar_matches( + &[ + ("@CamZoomMin:3.5=n", None), + ("@CamZoomMin:4.5=n", Some((SENDER_2, "Sender 2"))), + ("@CamZoomMin:1.5=n", Some((SENDER_3, "Sender 3"))), + ], + CameraRestrictions::zoom_min, + Some(4.5), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Off::test 8f8ec9da2b0196a51dfb3fea709de597bdb440196697523824f78ef359a5482a translated +#[test] +fn cam_zoom_min_off() { + assert!(scalar_matches( + &[("@CamZoomMin:1.5=n", None), ("@CamZoomMin:1.5=y", None)], + CameraRestrictions::zoom_min, + None, + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Default::test 5997b7c86a1b1dac59b7f6c03d38cd09f0fb12619f03f68e1167c85ebe02f7d0 translated +#[test] +fn cam_zoom_max_default() { + assert!(scalar_matches(&[], CameraRestrictions::zoom_max, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Single::test 75530a051696ffd586b5643f0c9b9f1ae1c05bd30f9c3068f94cb30abbdc6d2d translated +#[test] +fn cam_zoom_max_single() { + assert!(scalar_matches( + &[("@CamZoomMax:1.5=n", None)], + CameraRestrictions::zoom_max, + Some(1.5), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender::test 44d6a5b2a9462c83047f5b4ec9f4e66bb518f6547ec08df2b5420850129ff7cb translated +#[test] +fn cam_zoom_max_multiple_single_sender() { + assert!(scalar_matches( + &[ + ("@CamZoomMax:3.5=n", None), + ("@CamZoomMax:4.5=n", None), + ("@CamZoomMax:1.5=n", None), + ], + CameraRestrictions::zoom_max, + Some(1.5), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender_WithRemoval::test 4958ce547ff71cf18d31cd557ecaecb8ae0a19b169c2051bd6797769bbcde26e translated +#[test] +fn cam_zoom_max_removes_matching_value() { + assert!(scalar_matches( + &[ + ("@CamZoomMax:3.5=n", None), + ("@CamZoomMax:4.5=n", None), + ("@CamZoomMax:1.5=n", None), + ("@CamZoomMax:0.5=n", None), + ("@CamZoomMax:0.5=y", None), + ], + CameraRestrictions::zoom_max, + Some(1.5), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_MultipleSenders::test 76346d0c1f4ecf22d09c1950aef99207d28ffe5576b7bc0be1212b91d6518f2c translated +#[test] +fn cam_zoom_max_multiple_senders() { + assert!(scalar_matches( + &[ + ("@CamZoomMax:3.5=n", None), + ("@CamZoomMax:4.5=n", Some((SENDER_2, "Sender 2"))), + ("@CamZoomMax:1.5=n", Some((SENDER_3, "Sender 3"))), + ], + CameraRestrictions::zoom_max, + Some(1.5), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Off::test 88e2ec791d3f78bb6551b7d37a52cc5dc18c156ddd483bd6ba55288144005e5c translated +#[test] +fn cam_zoom_max_off() { + assert!(scalar_matches( + &[("@CamZoomMax:1.5=n", None), ("@CamZoomMax:1.5=y", None)], + CameraRestrictions::zoom_max, + None, + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin::test cf5f8bfbea933b64bc282211f498b01eefab0b31728800e2965a8a489f85b15d translated +#[test] +fn cam_zoom_min_command() { + assert!(scalar_matches( + &[("@CamZoomMin:0.5=n", None)], + CameraRestrictions::zoom_min, + Some(0.5), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax::test 7441bff0655432365bb702cce92465ab0ab7b7dd195b732312a4e243f975ba48 translated +#[test] +fn cam_zoom_max_command() { + assert!(scalar_matches( + &[("@CamZoomMax:1.5=n", None)], + CameraRestrictions::zoom_max, + Some(1.5), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFovMin::test b433f776bfa059a889b1a13ebc0841c824715194b6b0634dea1dd5740d5b7bbe translated +#[test] +fn set_cam_fov_min() { + assert!(scalar_matches( + &[("@setcam_fovmin:15=n", None)], + CameraRestrictions::fov_min, + Some(15.0), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFovMax::test e0f313a03073b283400130e5a91c8c4157c9b83f9001f1ad1badf15f80821663 translated +#[test] +fn set_cam_fov_max() { + assert!(scalar_matches( + &[("@setcam_fovmax:45=n", None)], + CameraRestrictions::fov_max, + Some(45.0), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov::test 02118d87dfda863c31de56267a31beba94ff124ca225f56d67222b6ffaf0c6f9 translated +#[test] +fn set_cam_fov_records_exact_value() { + let h = harness(); + assert!(block_on(h.process("@setcam_fov:1.75=force")).unwrap()); + assert_eq!(h.actions.lock().unwrap().camera_fovs, vec![1.75]); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov_Restricted::test 34b9c620b61777ece7ad140fc15dde6d2b77d877af597cf2a1b5d5f768cd5fc7 translated +#[test] +fn set_cam_fov_restricted() { + let h = harness(); + block_on(h.process("@setcam_unlock=n")).unwrap(); + assert!(!block_on(h.process("@setcam_fov:1.75=force")).unwrap()); + assert!(h.actions.lock().unwrap().camera_fovs.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov_Restricted_Synonym::test d8824c6f673ea7c101d309643ed4dbacc0fd6b17c0bda13f8cbb16b956529db4 translated +#[test] +fn set_cam_fov_restricted_by_synonym() { + let h = harness(); + block_on(h.process("@camunlock=n")).unwrap(); + assert!(!block_on(h.process("@setcam_fov:1.75=force")).unwrap()); + assert!(h.actions.lock().unwrap().camera_fovs.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMax::test 61206ccc9664f63057389d0d9540022ba82da88b1e213387a9a7f0d0cec050b3 translated +#[test] +fn set_cam_av_dist_max() { + assert!(scalar_matches( + &[("@setcam_avdistmax:30=n", None)], + CameraRestrictions::av_dist_max, + Some(30.0), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMax_Synonym::test 9742afe1eb83fe3b63f6ce195bb1fb08058a6272e9817b3d1e09c50ca914a66a translated +#[test] +fn set_cam_av_dist_max_synonym() { + assert!(scalar_matches( + &[("@camdistmax:30=n", None)], + CameraRestrictions::av_dist_max, + Some(30.0), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMin::test be661f7ae623eafe2c00a7eb80a716ab832cd56be904725cfa01c16ab219d10e translated +#[test] +fn set_cam_av_dist_min() { + assert!(scalar_matches( + &[("@setcam_avdistmin:0.3=n", None)], + CameraRestrictions::av_dist_min, + Some(0.3), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMin_Synonym::test da29486a2c8bc2801805774269743566457ca1b9b316dc6846cf499b60aa588d translated +#[test] +fn set_cam_av_dist_min_synonym() { + assert!(scalar_matches( + &[("@camdistmin:0.3=n", None)], + CameraRestrictions::av_dist_min, + Some(0.3), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawAlphaMax::test 96e0f72499cdf258062ca0610594137c72f232ddf936c0cc929429368957d3ed translated +#[test] +fn cam_draw_alpha_max() { + assert!(scalar_matches( + &[("@CamDrawAlphaMax:0.9=n", None)], + CameraRestrictions::draw_alpha_max, + Some(0.9), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMin::test 53a901a99baeb1f8d45a07d1347a6491d66ad8ca76cdef5304c64738e486e7a9 translated +#[test] +fn cam_draw_min() { + assert!(scalar_matches( + &[("@camdrawmin:1.75=n", None)], + CameraRestrictions::draw_min, + Some(1.75), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMin_Small::test 3f531bfcd6e08830912fd4d619a8ffc5e3ab40e9d036769f742ae0d06207400e translated +#[test] +fn cam_draw_min_rejects_too_small_value() { + let h = harness(); + assert!(!block_on(h.process("@camdrawmin:0.15=n")).unwrap()); + assert!( + h.service + .permissions() + .get_camera_restrictions() + .unwrap() + .draw_min() + .flatten() + .is_none() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMax::test 71ab081b330b9fc4cc73a06b214f52e577ab25c0ff15439e18737dfb220d7aaf translated +#[test] +fn cam_draw_max() { + assert!(scalar_matches( + &[("@camdrawmax:1.75=n", None)], + CameraRestrictions::draw_max, + Some(1.75), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMax_Small::test 72d0752ae72ba5288d2b96fca3e0a29c162406b38588160e6801b211c82fac11 translated +#[test] +fn cam_draw_max_rejects_too_small_value() { + let h = harness(); + assert!(!block_on(h.process("@camdrawmax:0.15=n")).unwrap()); + assert!( + h.service + .permissions() + .get_camera_restrictions() + .unwrap() + .draw_max() + .flatten() + .is_none() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawAlphaMin::test 697fafc1837d56255cdf5e2a09634dcc740651d45df04a712c030a224a58d0c2 translated +#[test] +fn cam_draw_alpha_min() { + assert!(scalar_matches( + &[("@camdrawalphamin:1.75=n", None)], + CameraRestrictions::draw_alpha_min, + Some(1.75), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor::test b3bc0346dbcf6c6b03d9c2c38b225e7903754fcbc56c74d098dbdcb617d2426d translated +#[test] +fn cam_draw_color() { + let Vector3(value) = restrictions(&[("@CamDrawColor:0.1;0.2;0.3=n", None)]) + .draw_color() + .flatten() + .unwrap(); + for (actual, expected) in value.into_iter().zip([0.1, 0.2, 0.3]) { + assert_close(f64::from(actual), expected, 0.00001); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Default::test fedba7874c0b897309caca0e007cb9fbcbce8cd5155c91ec94bf6d1f391d47a1 translated +#[test] +fn cam_draw_color_default() { + assert!(restrictions(&[]).draw_color().flatten().is_none()); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Large::test 6d2f0a4a24e71afbca88f3dfe574ff8ee5825e4df9a08552ac4af22a0a6b9f5e translated +#[test] +#[allow(clippy::float_cmp)] // The C# test requires exact clamped endpoint values. +fn cam_draw_color_clamps_large_components() { + let Vector3(value) = restrictions(&[("@CamDrawColor:5;6;7=n", None)]) + .draw_color() + .flatten() + .unwrap(); + assert_eq!(value, [1.0, 1.0, 1.0]); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Negative::test 5f7ae954b3f75c5a86da8222a5eadc42ac3fee6ac4134455fb2a7a2e24101081 translated +#[test] +#[allow(clippy::float_cmp)] // The C# test requires exact clamped endpoint values. +fn cam_draw_color_clamps_negative_components() { + let Vector3(value) = restrictions(&[("@CamDrawColor:-5;-6;-7=n", None)]) + .draw_color() + .flatten() + .unwrap(); + assert_eq!(value, [0.0, 0.0, 0.0]); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Removal::test 81322059c2a6e0054c1d2131e0698c614942eec69958f72315545e9b1517fcb5 translated +#[test] +fn cam_draw_color_removal() { + assert!( + restrictions(&[ + ("@CamDrawColor:0.1;0.2;0.3=n", None), + ("@CamDrawColor:0.1;0.2;0.3=y", None), + ]) + .draw_color() + .flatten() + .is_none() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Multi::test 21b9615f5a7e809ec83442035588414101fdf3862f282f1a501fb15d904f981e translated +#[test] +fn cam_draw_color_averages_multiple_values() { + let Vector3(value) = restrictions(&[ + ("@CamDrawColor:0.1;0.2;0.3=n", None), + ("@CamDrawColor:0.2;0.3;0.6=n", None), + ]) + .draw_color() + .flatten() + .unwrap(); + for (actual, expected) in value.into_iter().zip([0.15, 0.25, 0.45]) { + assert_close(f64::from(actual), expected, 0.00001); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CanSetCamUnlock::test 3983d83fb0086bc71a585eeda9b561c738ba1eb99365182115a673ab38e166a1 translated +#[test] +fn set_cam_unlock_toggles_lock() { + let h = harness(); + block_on(h.process("@setcam_unlock=n")).unwrap(); + assert!( + h.service + .permissions() + .get_camera_restrictions() + .unwrap() + .is_locked() + ); + block_on(h.process("@setcam_unlock=y")).unwrap(); + assert!( + !h.service + .permissions() + .get_camera_restrictions() + .unwrap() + .is_locked() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CanCamUnlock::test b116d0b63222b30c67da7c08d48f10701f5def2bdd3584166939d713a86a8cd4 translated +#[test] +fn cam_unlock_synonym_toggles_lock() { + let h = harness(); + block_on(h.process("@camunlock=n")).unwrap(); + assert!( + h.service + .permissions() + .get_camera_restrictions() + .unwrap() + .is_locked() + ); + block_on(h.process("@camunlock=y")).unwrap(); + assert!( + !h.service + .permissions() + .get_camera_restrictions() + .unwrap() + .is_locked() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamAvDist::test 4c5641b0e975136e815bfaf8d9821240f0ac2bc615ed105fa5190dfdbcddc158 translated +#[test] +fn cam_av_dist() { + assert!(scalar_matches( + &[("@CamAvDist:5=n", None)], + CameraRestrictions::av_dist, + Some(5.0), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures::case:0fdad12f3bfb0585 4b5058bfacb3e7f282bb83d0068ff9c7c7464b0d4119f879d670ddaf34d469b6 translated +#[test] +fn set_cam_textures_empty_uuid() { + assert_eq!(texture("@setcam_textures=n"), Some(Guid([0; 16]))); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures::case:19c11fd923cc347d 4b5058bfacb3e7f282bb83d0068ff9c7c7464b0d4119f879d670ddaf34d469b6 translated +#[test] +fn cam_textures_empty_uuid() { + assert_eq!(texture("@camtextures=n"), Some(Guid([0; 16]))); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Single::case:0fdad12f3bfb0585 abe9a6cff61faf1afbd29c4b073d34d67cf5e77058df44b68cbed7e1d9569814 translated +#[test] +fn set_cam_textures_single() { + assert_eq!( + texture(&format!("@setcam_textures:{TEXTURE_1}=n")), + Some(guid(TEXTURE_1)) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Single::case:19c11fd923cc347d abe9a6cff61faf1afbd29c4b073d34d67cf5e77058df44b68cbed7e1d9569814 translated +#[test] +fn cam_textures_single() { + assert_eq!( + texture(&format!("@camtextures:{TEXTURE_1}=n")), + Some(guid(TEXTURE_1)) + ); +} + +fn texture_synonyms(first: &str, second: &str) -> [Option; 2] { + let h = harness(); + block_on(h.process(&format!("@{first}:{TEXTURE_1}=n"))).unwrap(); + block_on(h.process(&format!("@{second}:{TEXTURE_2}=n"))).unwrap(); + let second_texture = h + .service + .permissions() + .get_camera_restrictions() + .unwrap() + .texture() + .flatten(); + block_on(h.process(&format!("@{first}:{TEXTURE_2}=y"))).unwrap(); + [ + second_texture, + h.service + .permissions() + .get_camera_restrictions() + .unwrap() + .texture() + .flatten(), + ] +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:1c2423e3f02a5f03 42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7 translated +#[test] +fn set_cam_textures_then_set_cam_textures() { + assert_eq!( + texture_synonyms("setcam_textures", "setcam_textures"), + [Some(guid(TEXTURE_2)), Some(guid(TEXTURE_1))] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:57689650dc307766 42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7 translated +#[test] +fn set_cam_textures_then_cam_textures() { + assert_eq!( + texture_synonyms("setcam_textures", "camtextures"), + [Some(guid(TEXTURE_2)), Some(guid(TEXTURE_1))] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:081becc69dc8e183 42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7 translated +#[test] +fn cam_textures_then_cam_textures() { + assert_eq!( + texture_synonyms("camtextures", "camtextures"), + [Some(guid(TEXTURE_2)), Some(guid(TEXTURE_1))] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:d96d157e365ded15 42abc61468c54b5e6e95d27fbadfef6010ce7d4d9b6dba8238f9e863a2ec23c7 translated +#[test] +fn cam_textures_then_set_cam_textures() { + assert_eq!( + texture_synonyms("camtextures", "setcam_textures"), + [Some(guid(TEXTURE_2)), Some(guid(TEXTURE_1))] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamAvDistMin::test 60d28627494c147228930839a18016e3cbfa8eb042167965647794902eb340a6 translated +#[test] +fn get_cam_av_dist_min() { + assert_eq!( + camera_query("@getcam_avdistmin=1234"), + (true, vec![(1234, "1.23".into())]) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamAvDistMax::test a7cf7887d2934984cc13e10f3afa3248a5e677c9fac680af2a68c3a27d76c3da translated +#[test] +fn get_cam_av_dist_max() { + assert_eq!( + camera_query("@getcam_avdistmax=1234"), + (true, vec![(1234, "123.45".into())]) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFovMin::test 25a040ca69bf4c2a303d45314fec99e70371bf6ac46e1793384e0a626deb4e75 translated +#[test] +fn get_cam_fov_min() { + assert_eq!( + camera_query("@getcam_fovmin=1234"), + (true, vec![(1234, "45.6".into())]) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFovMax::test 19153fa188ef6bd763235a03048771d1a1d824c1aeaf64841b7e6e70c35813ae translated +#[test] +fn get_cam_fov_max() { + assert_eq!( + camera_query("@getcam_fovmax=1234"), + (true, vec![(1234, "130".into())]) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamZoomMin::test 8cd72b3f1922b913c6bde59b928f362fa191574dc1df3cfb4668d4ccf00515a9 translated +#[test] +fn get_cam_zoom_min() { + assert_eq!( + camera_query("@getcam_zoommin=1234"), + (true, vec![(1234, "12.34".into())]) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFov::test f4031d095b9a7e87d1f1d94e52c15c3c9b2b43aa1ba039c83e391e58ea994c40 translated +#[test] +fn get_cam_fov() { + assert_eq!( + camera_query("@getcam_fov=1234"), + (true, vec![(1234, "91.34".into())]) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:6e89e27b90f28739 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe translated +#[test] +fn camera_settings_default_get_zoom_min() { + assert_eq!( + missing_camera_settings("@getcam_zoommin=1234"), + (false, vec![]) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:82ff323c4cfaad18 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe translated +#[test] +fn camera_settings_default_get_fov() { + assert_eq!(missing_camera_settings("@getcam_fov=1234"), (false, vec![])); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:c64b136643c55ed8 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe translated +#[test] +fn camera_settings_default_get_fov_max() { + assert_eq!( + missing_camera_settings("@getcam_fovmax=1234"), + (false, vec![]) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:32ad2cfbbfcf0638 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe translated +#[test] +fn camera_settings_default_get_av_dist_min() { + assert_eq!( + missing_camera_settings("@getcam_avdistmin=1234"), + (false, vec![]) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:21855f1f68a52025 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe translated +#[test] +fn camera_settings_default_get_av_dist_max() { + assert_eq!( + missing_camera_settings("@getcam_avdistmax=1234"), + (false, vec![]) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:065ec3bc69e3f2b0 4775ab3cf13fcafd3f6177ac11cecc144040d1e5c11293b442591bdfd525c0fe translated +#[test] +fn camera_settings_default_get_fov_min() { + assert_eq!( + missing_camera_settings("@getcam_fovmin=1234"), + (false, vec![]) + ); +} diff --git a/tests/compat/tests/rlv_common_semantics.rs b/tests/compat/tests/rlv_common_semantics.rs new file mode 100644 index 0000000..d956952 --- /dev/null +++ b/tests/compat/tests/rlv_common_semantics.rs @@ -0,0 +1,119 @@ +// Exact Rust translation of LibreMetaverse.Tests/RLV/RlvCommonTests.cs. +// Source SHA-256: 1e3e097f189cb39e9204a82d881be38847d696870debe7d62e3ddf13b9951a6f + +use libremetaverse_rlv::{RlvAttachmentPoint, RlvCommon}; + +#[allow(clippy::option_option)] +fn point(item_name: &str) -> (bool, Option>) { + let mut actual = None; + let found = RlvCommon::try_get_attachment_point_from_item_name(item_name.into(), &mut actual); + (found, actual) +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:7da68a0c44d86b61 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 translated +#[test] +fn attachment_point_spine() { + assert_eq!( + point("(spine)"), + (true, Some(Some(RlvAttachmentPoint::Spine))) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:d4dfd612ab268dc7 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 translated +#[test] +fn attachment_point_repeated_spine() { + assert_eq!( + point("(spine)(spine)"), + (true, Some(Some(RlvAttachmentPoint::Spine))) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:58d5bce9d704814b 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 translated +#[test] +fn attachment_point_uses_last_known_tag() { + assert_eq!( + point("My (mouth) item (spine) has a lot of tags"), + (true, Some(Some(RlvAttachmentPoint::Spine))) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:7c453569c08c0a0f 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 translated +#[test] +fn attachment_point_ignores_unknown_tag() { + assert_eq!( + point("My item (l upper leg) and some random unknown tag (unknown)"), + (true, Some(Some(RlvAttachmentPoint::LeftUpperLeg))) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:ace2eedabcda99e6 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 translated +#[test] +fn attachment_point_avatar_center() { + assert_eq!( + point("Central item (avatar center)"), + (true, Some(Some(RlvAttachmentPoint::AvatarCenter))) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:1a967cd76f5fa058 2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17 translated +#[test] +fn attachment_point_root_alias() { + assert_eq!( + point("Central item (root)"), + (true, Some(Some(RlvAttachmentPoint::AvatarCenter))) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:f6b796736de6a5d8 cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c translated +#[test] +fn attachment_point_uppercase_spine() { + assert_eq!( + point("(SPINE)"), + (true, Some(Some(RlvAttachmentPoint::Spine))) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:787d37133953ab32 cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c translated +#[test] +fn attachment_point_titlecase_spine() { + assert_eq!( + point("(Spine)"), + (true, Some(Some(RlvAttachmentPoint::Spine))) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:d2056032186a0a97 cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c translated +#[test] +fn attachment_point_titlecase_avatar_center() { + assert_eq!( + point("Central item (Avatar center)"), + (true, Some(Some(RlvAttachmentPoint::AvatarCenter))) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:c1f038c1236211aa cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c translated +#[test] +fn attachment_point_lowercase_left_upper_leg() { + assert_eq!( + point("Another item (l upper leg)"), + (true, Some(Some(RlvAttachmentPoint::LeftUpperLeg))) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:564c3e282f3b402f c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34 translated +#[test] +fn attachment_point_rejects_unknown_tags() { + assert_eq!(point("(unknown)(hand tag)(spine tag)"), (false, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:1d03935868fa6124 c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34 translated +#[test] +fn attachment_point_rejects_untagged_name() { + assert_eq!(point("Hat"), (false, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:12ae32cb1ec02d01 c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34 translated +#[test] +fn attachment_point_rejects_empty_name() { + assert_eq!(point(""), (false, None)); +} diff --git a/tests/compat/tests/rlv_detach_all_commands_semantics.rs b/tests/compat/tests/rlv_detach_all_commands_semantics.rs new file mode 100644 index 0000000..41a523d --- /dev/null +++ b/tests/compat/tests/rlv_detach_all_commands_semantics.rs @@ -0,0 +1,115 @@ +//! Exact Rust translations of `DetachAllCommandTests`. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SampleInventoryTree, guid}; +use libremetaverse_rlv::{InventoryMap, RlvAttachmentPoint, RlvWearableType}; +use libremetaverse_types::compat::Guid; + +const RETRO: &str = "b2222222-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const HAPPY: &str = "b1111111-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const FANCY: &str = "d1111111-dddd-4ddd-8ddd-dddddddddddd"; +#[derive(Clone, Copy)] +enum Setup { + Default, + Restricted, + PrivateTarget, + PrivateSubfolder, + NoStripFolder, + NoStripLink, + NoStripItem, +} + +fn run(setup: Setup) -> Vec { + let h = RlvHarness::new().expect("RlvService constructor"); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.retro_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Pelvis))); + tree.retro_pants + .set_attached_prim_id(Some(Some(guid("11111111-0002-4aaa-8aaa-ffffffffffff")))); + tree.glasses.set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.happy_shirt + .set_worn_on(Some(Some(RlvWearableType::Pants))); + if !matches!(setup, Setup::NoStripItem) { + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat + .set_attached_prim_id(Some(Some(guid("11111111-0003-4aaa-8aaa-ffffffffffff")))); + } + match setup { + Setup::PrivateTarget => tree.clothing.set_name(".clothing".into()), + Setup::PrivateSubfolder => { + tree.clothing.set_name(".clothing".into()); + tree.hats.set_name(".hats".into()); + } + Setup::NoStripFolder | Setup::NoStripLink => { + tree.clothing.set_name(".clothing".into()); + tree.hats.set_name("nostrip hats".into()); + } + Setup::NoStripItem => tree.happy_shirt.set_name("nostrip Happy Shirt".into()), + _ => {} + } + if matches!(setup, Setup::NoStripLink) { + tree.party_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.party_hat + .set_attached_prim_id(Some(Some(guid("11111111-0004-4aaa-8aaa-ffffffffffff")))); + tree.fancy_hat.set_is_link(true); + } + h.queries.lock().unwrap().inventory_map = Some(InventoryMap::new(tree.root, vec![]).unwrap()); + if matches!(setup, Setup::Restricted) { + block_on(h.process("@detachthis:Clothing=n")).unwrap(); + } + let path = if matches!( + setup, + Setup::PrivateTarget | Setup::PrivateSubfolder | Setup::NoStripFolder | Setup::NoStripLink + ) { + ".clothing" + } else { + "Clothing" + }; + block_on(h.process(&format!("@detachall:{path}=force"))).unwrap(); + let mut result = h.actions.lock().unwrap().detachments[0].clone(); + result.sort_by_key(|id| id.0); + result +} +fn ids(values: &[&str]) -> Vec { + let mut v: Vec<_> = values.iter().map(|s| guid(s)).collect(); + v.sort_by_key(|id| id.0); + v +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive::test 45405dbca6c2b8bb9f439736d53c2ff60056252f4cdf6296bedcc14d2be9248e translated +#[test] +fn detach_all_recursive() { + assert_eq!(run(Setup::Default), ids(&[FANCY, HAPPY, RETRO])); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_EnforceRestrictions::test 6186f5923009fb984daef726e8df44aff7cb65f74c2e381dd8cc9968f5534e43 translated +#[test] +fn detach_all_enforces_restrictions() { + assert_eq!(run(Setup::Restricted), ids(&[FANCY])); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_PrivateTargetDir::test 300a323967b6258d1202190bbd3de7b91699231f7a5afa86204ba627cb61215f translated +#[test] +fn detach_all_private_target() { + assert_eq!(run(Setup::PrivateTarget), ids(&[FANCY, HAPPY, RETRO])); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_PrivateSubFolders::test e688b64d13f0a07f4bfeae0715fbfbf98c1d1fa64b0aefbd0e4e3d3d4dd98eee translated +#[test] +fn detach_all_skips_private_subfolders() { + assert_eq!(run(Setup::PrivateSubfolder), ids(&[HAPPY, RETRO])); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders::test 22cf1a159861c98c8a0f14ac63bafcbef21466c2ac01e615fe9ca4630d16f956 translated +#[test] +fn detach_all_honors_nostrip_subfolders() { + assert_eq!(run(Setup::NoStripFolder), ids(&[HAPPY, RETRO])); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders_LinkException::test cbe38368a6d4c59d72291195688d0c70898be5c3cceb02f09c5d386c3668fb07 translated +#[test] +fn detach_all_honors_link_exception() { + assert_eq!(run(Setup::NoStripLink), ids(&[HAPPY, RETRO, FANCY])); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripItemName::test ea0fab47cb1829338948f605919fcf1dca4f88d7965cdca4c7f457e399e4fbfc translated +#[test] +fn detach_all_honors_nostrip_item() { + assert_eq!(run(Setup::NoStripItem), ids(&[RETRO])); +} diff --git a/tests/compat/tests/rlv_detach_all_this_commands_semantics.rs b/tests/compat/tests/rlv_detach_all_this_commands_semantics.rs new file mode 100644 index 0000000..858c198 --- /dev/null +++ b/tests/compat/tests/rlv_detach_all_this_commands_semantics.rs @@ -0,0 +1,226 @@ +//! Exact Rust translations of `DetachAllThisCommandTests`. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SampleInventoryTree, guid}; +use libremetaverse_rlv::{InventoryMap, RlvAttachmentPoint, RlvWearableType}; +use libremetaverse_types::compat::Guid; +const HAPPY: &str = "b1111111-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const RETRO: &str = "b2222222-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const GLASSES: &str = "c1111111-cccc-4ccc-8ccc-cccccccccccc"; +const FANCY: &str = "d1111111-dddd-4ddd-8ddd-dddddddddddd"; +const PRIM1: &str = "11111111-0001-4aaa-8aaa-ffffffffffff"; +#[derive(Clone, Copy)] +enum Setup { + Normal, + NoStrip, + NoStripLink, + Point, + PointNoStrip, + PointLink, + Wearable, + WearableNoStrip, + WearableLink, + WearablePrivate, +} +fn attach(item: &mut libremetaverse_rlv::RlvInventoryItem, point: RlvAttachmentPoint, prim: &str) { + item.set_attached_to(Some(Some(point))); + item.set_attached_prim_id(Some(Some(guid(prim)))); +} +fn run(command: &str, setup: Setup, sender_item: bool) -> Vec { + let h = RlvHarness::new().expect("RlvService constructor"); + let mut tree = SampleInventoryTree::build().unwrap(); + attach( + &mut tree.retro_pants, + RlvAttachmentPoint::Pelvis, + "11111111-0002-4aaa-8aaa-ffffffffffff", + ); + attach( + &mut tree.fancy_hat, + RlvAttachmentPoint::Chin, + "11111111-0003-4aaa-8aaa-ffffffffffff", + ); + if matches!( + setup, + Setup::Wearable | Setup::WearableNoStrip | Setup::WearableLink | Setup::WearablePrivate + ) { + tree.happy_shirt + .set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.glasses.set_worn_on(Some(Some(RlvWearableType::Pants))); + } else { + attach(&mut tree.happy_shirt, RlvAttachmentPoint::Chest, PRIM1); + attach( + &mut tree.glasses, + RlvAttachmentPoint::Chest, + "11111111-0004-4aaa-8aaa-ffffffffffff", + ); + } + if matches!( + setup, + Setup::NoStrip + | Setup::NoStripLink + | Setup::PointNoStrip + | Setup::PointLink + | Setup::WearableNoStrip + | Setup::WearableLink + ) { + tree.hats.set_name("nostrip Hats".into()); + tree.retro_pants.set_name("nostrip Retro Pants".into()); + } + if matches!( + setup, + Setup::NoStripLink | Setup::PointLink | Setup::WearableLink + ) { + tree.fancy_hat.set_is_link(true); + attach( + &mut tree.party_hat, + RlvAttachmentPoint::Chin, + "11111111-0005-4aaa-8aaa-ffffffffffff", + ); + } + if matches!(setup, Setup::WearablePrivate) { + tree.hats.set_name(".hats".into()); + } + h.queries.lock().unwrap().inventory_map = Some(InventoryMap::new(tree.root, vec![]).unwrap()); + if sender_item { + block_on(h.process_from(command, PRIM1, "Happy Shirt")).unwrap(); + } else { + block_on(h.process(command)).unwrap(); + } + let mut v = h.actions.lock().unwrap().detachments[0].clone(); + v.sort_by_key(|id| id.0); + v +} +fn ids(values: &[&str]) -> Vec { + let mut v: Vec<_> = values.iter().map(|s| guid(s)).collect(); + v.sort_by_key(|id| id.0); + v +} +fn normal() -> Vec { + ids(&[HAPPY, RETRO, FANCY]) +} +fn nostrip() -> Vec { + ids(&[HAPPY]) +} +fn link() -> Vec { + ids(&[HAPPY, FANCY]) +} +fn selected() -> Vec { + ids(&[HAPPY, RETRO, GLASSES, FANCY]) +} +fn selected_nostrip() -> Vec { + ids(&[HAPPY, GLASSES]) +} +fn selected_link() -> Vec { + ids(&[HAPPY, GLASSES, FANCY]) +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Default::test 8fe4eacf8cc5841e638d69540e2ab080efc3e64534346ece854429d0476f8a84 translated +#[test] +fn detach_all_this_default() { + assert_eq!(run("@detachallthis=force", Setup::Normal, true), normal()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Nostrip::test 754bd01f2f0b77c05ee5d1548f76337da93d980a48ad0922d80f34707c4fe68b translated +#[test] +fn detach_all_this_honors_nostrip() { + assert_eq!(run("@detachallthis=force", Setup::NoStrip, true), nostrip()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Nostrip_LinkException::test 0cce15f7cfda160733c305b0867be31875e1814b38e2e980525d960e0214ad51 translated +#[test] +fn detach_all_this_honors_link_exception() { + assert_eq!( + run("@detachallthis=force", Setup::NoStripLink, true), + link() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById::test 2f657ffed317d4d7f97f6111942ea8214996872da6294f7c66d07890647f7f63 translated +#[test] +fn detach_all_this_by_id() { + assert_eq!( + run( + &format!("@detachallthis:{PRIM1}=force"), + Setup::Normal, + false + ), + normal() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip::test 48ab7aec02efd652478ca3110dd39011fd9b79a1e0a1336f53e9f77b2f56e635 translated +#[test] +fn detach_all_this_by_id_honors_nostrip() { + assert_eq!( + run( + &format!("@detachallthis:{PRIM1}=force"), + Setup::NoStrip, + false + ), + nostrip() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip_LinkException::test 5d882f00bfe73cecfc3e96c26ff18a20c00481619996b25ed2ce851eff9a86ce translated +#[test] +fn detach_all_this_by_id_honors_link_exception() { + assert_eq!( + run( + &format!("@detachallthis:{PRIM1}=force"), + Setup::NoStripLink, + false + ), + link() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint::test 30e6806d5c484bf2a2f9a3b1fcdb5e88272874b0e755462c3b0bfa97326d180c translated +#[test] +fn detach_all_this_by_attachment_point() { + assert_eq!( + run("@detachallthis:chest=force", Setup::Point, false), + selected() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip::test 657125be7aec668f72e744cc87cae38f022c8ccf9e8980c8ef4bea7e0557fdd1 translated +#[test] +fn detach_all_this_by_attachment_point_honors_nostrip() { + assert_eq!( + run("@detachallthis:chest=force", Setup::PointNoStrip, false), + selected_nostrip() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip_LinkException::test fe019191a9a3df9a43fd500db775ba5f874f4b767096365cba390480b2b2189f translated +#[test] +fn detach_all_this_by_attachment_point_honors_link_exception() { + assert_eq!( + run("@detachallthis:chest=force", Setup::PointLink, false), + selected_link() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType::test ccf302d870f323790af63873fcbb172f084c4e7400a728e480378706b5fb9947 translated +#[test] +fn detach_all_this_by_wearable() { + assert_eq!( + run("@detachallthis:pants=force", Setup::Wearable, false), + selected() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip::test 1947e7c9cfe8bb931ee7ad50c6f505515feeb9d30b236702a2d68fb4734a30f0 translated +#[test] +fn detach_all_this_by_wearable_honors_nostrip() { + assert_eq!( + run("@detachallthis:pants=force", Setup::WearableNoStrip, false), + selected_nostrip() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip_LinkException::test 50ec101ab557e78d947ac7f9878acd4df4957482f358a7ce02371df8754add94 translated +#[test] +fn detach_all_this_by_wearable_honors_link_exception() { + assert_eq!( + run("@detachallthis:pants=force", Setup::WearableLink, false), + selected_link() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_PrivateFolder::test 2ba745b093f0348d8754f74073c6a6a0f18383b5ce4a73721b39b01f0306a994 translated +#[test] +fn detach_all_this_by_wearable_skips_private_folder() { + assert_eq!( + run("@detachallthis:pants=force", Setup::WearablePrivate, false), + ids(&[HAPPY, RETRO, GLASSES]) + ); +} diff --git a/tests/compat/tests/rlv_detach_me_commands_semantics.rs b/tests/compat/tests/rlv_detach_me_commands_semantics.rs new file mode 100644 index 0000000..f597612 --- /dev/null +++ b/tests/compat/tests/rlv_detach_me_commands_semantics.rs @@ -0,0 +1,81 @@ +//! Exact Rust translations of `DetachMeCommandTests`. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SampleInventoryTree, guid}; +use libremetaverse_rlv::{InventoryMap, RlvAttachmentPoint}; +use libremetaverse_types::compat::Guid; + +const RETRO: &str = "b2222222-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const PRIM2: &str = "11111111-0002-4aaa-8aaa-ffffffffffff"; +const PRIM3: &str = "11111111-0003-4aaa-8aaa-ffffffffffff"; + +fn run(nostrip: bool, copy: bool, locked: bool) -> Vec { + let h = RlvHarness::new().expect("RlvService constructor"); + let mut tree = SampleInventoryTree::build().unwrap(); + if nostrip { + tree.clothing.set_name("nostrip Clothing".into()); + tree.retro_pants.set_name("nostrip Retro Pants".into()); + } + tree.retro_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Pelvis))); + tree.retro_pants + .set_attached_prim_id(Some(Some(guid(PRIM2)))); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Spine))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid(PRIM3)))); + if copy { + tree.hats + .add_item( + guid(RETRO), + if nostrip { + "nostrip Retro Pants" + } else { + "Retro Pants" + } + .into(), + false, + Some(Some(RlvAttachmentPoint::Pelvis)), + Some(Some(guid(PRIM2))), + None, + None, + ) + .unwrap(); + } + h.queries.lock().unwrap().inventory_map = Some(InventoryMap::new(tree.root, vec![]).unwrap()); + if locked { + block_on(h.process("@detachthis:Clothing/Hats=n")).unwrap(); + } + block_on(h.process_from( + "@detachme=force", + PRIM2, + if nostrip { + "nostrip Retro Pants" + } else { + "Retro Pants" + }, + )) + .unwrap(); + h.actions.lock().unwrap().detachments[0].clone() +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce::test fde065233689ec75c12e9607acf06c5859a91efea58e143ecc508ebec784a567 translated +#[test] +fn detach_me() { + assert_eq!(run(false, false, false), vec![guid(RETRO)]); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_WithNoStripItemName_SpecialException::test ee511230131312be9b788033aac8766ea3cb3c1f8d7c5b9b26a4bd6a83cd695c translated +#[test] +fn detach_me_ignores_nostrip() { + assert_eq!(run(true, false, false), vec![guid(RETRO)]); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_WithLockedFolderRestriction::test 05fefae0563306af0c491006f18915ff1b250b7972c82c160f20f06e07335887 translated +#[test] +fn detach_me_honors_locked_linked_folder() { + assert!(run(false, true, true).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_MultipleLinksSameItem::test 1ae8a318762625819371fb109fd673e0d31a2c0354add1e65802eb54cb71e303 translated +#[test] +fn detach_me_deduplicates_multiple_links() { + assert_eq!(run(false, true, false), vec![guid(RETRO)]); +} diff --git a/tests/compat/tests/rlv_detach_this_commands_semantics.rs b/tests/compat/tests/rlv_detach_this_commands_semantics.rs new file mode 100644 index 0000000..5e08c89 --- /dev/null +++ b/tests/compat/tests/rlv_detach_this_commands_semantics.rs @@ -0,0 +1,229 @@ +//! Exact Rust translations of `DetachThisCommandTests`. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SampleInventoryTree, guid}; +use libremetaverse_rlv::{InventoryMap, RlvAttachmentPoint, RlvWearableType}; +use libremetaverse_types::compat::Guid; + +const HAPPY: &str = "b1111111-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const RETRO: &str = "b2222222-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const GLASSES: &str = "c1111111-cccc-4ccc-8ccc-cccccccccccc"; +const PRIM1: &str = "11111111-0001-4aaa-8aaa-ffffffffffff"; + +#[derive(Clone, Copy)] +enum Setup { + Normal, + NoStripItem, + NoStripFolder, + NoStripLink, + Point, + PointNoStrip, + PointLink, + Wearable, + WearableNoStrip, + WearableLink, + WearablePrivate, +} + +fn attach(item: &mut libremetaverse_rlv::RlvInventoryItem, point: RlvAttachmentPoint, prim: &str) { + item.set_attached_to(Some(Some(point))); + item.set_attached_prim_id(Some(Some(guid(prim)))); +} + +fn run(command: &str, setup: Setup, sender_item: bool) -> Vec { + let h = RlvHarness::new().expect("RlvService constructor"); + let mut tree = SampleInventoryTree::build().unwrap(); + attach( + &mut tree.retro_pants, + RlvAttachmentPoint::Pelvis, + "11111111-0002-4aaa-8aaa-ffffffffffff", + ); + attach( + &mut tree.fancy_hat, + RlvAttachmentPoint::Chin, + "11111111-0003-4aaa-8aaa-ffffffffffff", + ); + if matches!( + setup, + Setup::Wearable | Setup::WearableNoStrip | Setup::WearableLink | Setup::WearablePrivate + ) { + tree.happy_shirt + .set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.glasses.set_worn_on(Some(Some(RlvWearableType::Pants))); + } else { + attach(&mut tree.happy_shirt, RlvAttachmentPoint::Chest, PRIM1); + attach( + &mut tree.glasses, + RlvAttachmentPoint::Chest, + "11111111-0004-4aaa-8aaa-ffffffffffff", + ); + } + match setup { + Setup::NoStripItem | Setup::PointNoStrip | Setup::WearableNoStrip => { + tree.happy_shirt.set_name("nostrip Happy Shirt".into()); + } + _ => {} + } + if matches!(setup, Setup::NoStripFolder | Setup::NoStripLink) { + tree.clothing.set_name("nostrip Clothing".into()); + } + if matches!( + setup, + Setup::PointNoStrip | Setup::PointLink | Setup::WearableNoStrip | Setup::WearableLink + ) { + tree.accessories.set_name("nostrip Accessories".into()); + } + if matches!(setup, Setup::NoStripLink) { + tree.retro_pants.set_is_link(true); + } + if matches!(setup, Setup::PointLink | Setup::WearableLink) { + tree.glasses.set_is_link(true); + } + if matches!(setup, Setup::WearablePrivate) { + tree.clothing.set_name(".clothing".into()); + } + h.queries.lock().unwrap().inventory_map = Some(InventoryMap::new(tree.root, vec![]).unwrap()); + if sender_item { + block_on(h.process_from(command, PRIM1, "Happy Shirt")).unwrap(); + } else { + block_on(h.process(command)).unwrap(); + } + let mut result = h.actions.lock().unwrap().detachments[0].clone(); + result.sort_by_key(|id| id.0); + result +} +fn ids(values: &[&str]) -> Vec { + let mut v: Vec<_> = values.iter().map(|s| guid(s)).collect(); + v.sort_by_key(|id| id.0); + v +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_Default::test ae8c0fd737f869ef3e2dbd97ae28974b35c6bbc5327151c0074d531efdaaf54e translated +#[test] +fn detach_this_default() { + assert_eq!( + run("@detachthis=force", Setup::Normal, true), + ids(&[HAPPY, RETRO]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStrip::test 3aa17222f7539814f8329e07de548cca4bb702f4b0409e793ea551327b0c57d0 translated +#[test] +fn detach_this_honors_item_nostrip() { + assert_eq!( + run("@detachthis=force", Setup::NoStripItem, true), + ids(&[RETRO]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStripFolder::test 16b74c3bf8312ccb885e61f933ec9d292988d2e1fad05e0188006df5630681f8 translated +#[test] +fn detach_this_honors_folder_nostrip() { + assert!(run("@detachthis=force", Setup::NoStripFolder, true).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStripFolder_LinkException::test b86b22a0ab30d0ded0cd6fbc7d34fae77e521861f5672b44a25a77325e594ab4 translated +#[test] +fn detach_this_honors_folder_link_exception() { + assert_eq!( + run("@detachthis=force", Setup::NoStripLink, true), + ids(&[RETRO]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById::test 3c4a211e5fefb44b42f50f6e6e58f8f852c8cf2d732bb6c3f737c3d6a592fa22 translated +#[test] +fn detach_this_by_id() { + assert_eq!( + run(&format!("@detachthis:{PRIM1}=force"), Setup::Normal, false), + ids(&[HAPPY, RETRO]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripItemName::test f32926ca6f4328afdd3ddeb9f7bec8ff2ee01e9563555921ac8c663d20005551 translated +#[test] +fn detach_this_by_id_honors_item_nostrip() { + assert_eq!( + run( + &format!("@detachthis:{PRIM1}=force"), + Setup::NoStripItem, + false + ), + ids(&[RETRO]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripFolderName::test bec3216bf016c2543a3410b069abd786167e04a7527253887f158127644656a8 translated +#[test] +fn detach_this_by_id_honors_folder_nostrip() { + assert!( + run( + &format!("@detachthis:{PRIM1}=force"), + Setup::NoStripFolder, + false + ) + .is_empty() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripFolderName_LinkException::test 1b5eb3a0bdef8ea65b800533ab3153dc6b3ea21d2f4f27e4820d0a0df48891a2 translated +#[test] +fn detach_this_by_id_honors_link_exception() { + assert_eq!( + run( + &format!("@detachthis:{PRIM1}=force"), + Setup::NoStripLink, + false + ), + ids(&[RETRO]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint::test 7e8f3a4d8b2cbdb5cc81eea598da6ef6395834b1cb7a629dc8d7ee2bfd80fab5 translated +#[test] +fn detach_this_by_attachment_point() { + assert_eq!( + run("@detachthis:chest=force", Setup::Point, false), + ids(&[HAPPY, RETRO, GLASSES]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip::test f6ff482bdb8d28414e01952201e37e49316b3e2345b0ff85dd4cb059193d1816 translated +#[test] +fn detach_this_by_attachment_point_honors_nostrip() { + assert_eq!( + run("@detachthis:chest=force", Setup::PointNoStrip, false), + ids(&[RETRO]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip_LinkException::test 289f8cc48f0e6a412d58258876e4aca08d8116d549642a0011bbdaf9b2223e83 translated +#[test] +fn detach_this_by_attachment_point_honors_link_exception() { + assert_eq!( + run("@detachthis:chest=force", Setup::PointLink, false), + ids(&[RETRO, GLASSES]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType::test 51607294f12279974c2b44b47ba2eadca9846180a39bcde6a28c020dc4466254 translated +#[test] +fn detach_this_by_wearable() { + assert_eq!( + run("@detachthis:pants=force", Setup::Wearable, false), + ids(&[HAPPY, RETRO, GLASSES]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip::test 30dec183993b2a644c2812ffc1c863e1714df134942f7827df818d9200e47c38 translated +#[test] +fn detach_this_by_wearable_honors_nostrip() { + assert_eq!( + run("@detachthis:pants=force", Setup::WearableNoStrip, false), + ids(&[RETRO]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip_LinkException::test 62f59cf66f21dcac15cf3166dcec2183181c0b434e9eacba796eb7025c4f1ab3 translated +#[test] +fn detach_this_by_wearable_honors_link_exception() { + assert_eq!( + run("@detachthis:pants=force", Setup::WearableLink, false), + ids(&[RETRO, GLASSES]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_PrivateFolder::test dd40588598bd081189e7c4f284af3851a140155e2ede0ae2121dd59a156dc988 translated +#[test] +fn detach_this_by_wearable_skips_private_folder() { + assert_eq!( + run("@detachthis:pants=force", Setup::WearablePrivate, false), + ids(&[GLASSES]) + ); +} diff --git a/tests/compat/tests/rlv_exception_semantics.rs b/tests/compat/tests/rlv_exception_semantics.rs new file mode 100644 index 0000000..fda5ec1 --- /dev/null +++ b/tests/compat/tests/rlv_exception_semantics.rs @@ -0,0 +1,743 @@ +// Exact Rust translations of the non-folder RLV exception tests. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SENDER_ID, guid}; +use libremetaverse_rlv::{ + RlvPermissionsServiceObjectLocation as ObjectLocation, + RlvPermissionsServiceTouchLocation as TouchLocation, +}; + +const USER_1: &str = "00000000-0000-4000-8000-000000000000"; +const USER_2: &str = "11111111-1111-4111-8111-111111111111"; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn process(h: &RlvHarness, commands: &[String]) { + for command in commands { + block_on(h.process(command)).unwrap(); + } +} + +#[allow(clippy::option_option)] +fn touch_matches( + h: &RlvHarness, + location: TouchLocation, + object: libremetaverse_types::compat::Guid, + user: Option>, + distance: Option>, + expected: bool, +) -> bool { + h.service + .permissions() + .can_touch(location, object, user, distance) + .unwrap() + == expected +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/AcceptPermissionExceptionTests.cs::AcceptPermissionExceptionTests.AcceptPermission::test a5ffc51718e89fb872c6df8b8667f6d231618d47a2ffc71d596e8e10e15cb02e translated +#[test] +fn accept_permission_add_and_remove() { + let h = harness(); + assert!(block_on(h.process("@acceptpermission=add")).unwrap()); + assert!( + h.service + .permissions() + .is_auto_accept_permissions() + .unwrap() + ); + assert!(block_on(h.process("@acceptpermission=rem")).unwrap()); + assert!( + !h.service + .permissions() + .is_auto_accept_permissions() + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs::AcceptTpExceptionTests.CanAutoAcceptTp_User::test e988496e81a717eae1a96c5501e748a441fa64f637aaa47a6ae7a8d571c30f6e translated +#[test] +fn accept_tp_specific_user() { + let h = harness(); + block_on(h.process(&format!("@accepttp:{USER_1}=add"))).unwrap(); + let permissions = h.service.permissions(); + assert!( + permissions + .is_auto_accept_tp(Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + !permissions + .is_auto_accept_tp(Some(Some(guid(USER_2)))) + .unwrap() + ); + assert!(!permissions.is_auto_accept_tp(None).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs::AcceptTpExceptionTests.CanAutoAcceptTp_All::test 428ec184c9d09f6ec57ac3429180f327ed1b79e9d9dea9815df3bb6f0f6244fd translated +#[test] +fn accept_tp_all_users() { + let h = harness(); + block_on(h.process("@accepttp=add")).unwrap(); + let permissions = h.service.permissions(); + assert!( + permissions + .is_auto_accept_tp(Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + permissions + .is_auto_accept_tp(Some(Some(guid(USER_2)))) + .unwrap() + ); + assert!(permissions.is_auto_accept_tp(None).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs::AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_User::test 3a5af1a55e74b5e75a04abc11826ded17c327ac2ed99ab2a423674fbb0e61f31 translated +#[test] +fn accept_tp_request_specific_user() { + let h = harness(); + block_on(h.process(&format!("@accepttprequest:{USER_1}=add"))).unwrap(); + let permissions = h.service.permissions(); + assert!( + permissions + .is_auto_accept_tp_request(Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + !permissions + .is_auto_accept_tp_request(Some(Some(guid(USER_2)))) + .unwrap() + ); + assert!(!permissions.is_auto_accept_tp_request(None).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs::AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_All::test 8e2cf7c4d17dcec4d7855fc430092699416108966fb5d97c170c13f0bcd04cfe translated +#[test] +fn accept_tp_request_all_users() { + let h = harness(); + block_on(h.process("@accepttprequest=add")).unwrap(); + let permissions = h.service.permissions(); + assert!( + permissions + .is_auto_accept_tp_request(Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + permissions + .is_auto_accept_tp_request(Some(Some(guid(USER_2)))) + .unwrap() + ); + assert!(permissions.is_auto_accept_tp_request(None).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/DenyPermissionExceptionTests.cs::DenyPermissionExceptionTests.DenyPermission::test c2284b63e7b4a93f8613a3afe34466d14e1c6ed8528656d54ae64ca6d081cdd5 translated +#[test] +fn deny_permission_add_and_remove() { + let h = harness(); + assert!(block_on(h.process("@denypermission=add")).unwrap()); + assert!(h.service.permissions().is_auto_deny_permissions().unwrap()); + assert!(block_on(h.process("@denypermission=rem")).unwrap()); + assert!(!h.service.permissions().is_auto_deny_permissions().unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs::EditExceptionTests.CanEdit_Exception::test e435b03faef04dfe06d0cbec76e94cbf30e61ad7bc08502728f9239cf47292f8 translated +#[test] +fn edit_exception_allows_one_object() { + let h = harness(); + process(&h, &["@edit=n".into(), format!("@edit:{USER_1}=add")]); + let permissions = h.service.permissions(); + for location in [ + ObjectLocation::Hud, + ObjectLocation::Attached, + ObjectLocation::RezzedInWorld, + ] { + assert!(!permissions.can_edit(location, None).unwrap()); + assert!( + permissions + .can_edit(location, Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + !permissions + .can_edit(location, Some(Some(guid(USER_2)))) + .unwrap() + ); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs::EditExceptionTests.CanEdit_Specific::test db097167497bc650c6729f0687924adedda7097b4089107fc5ea03716c1cb4e5 translated +#[test] +fn edit_object_restricts_only_one_object() { + let h = harness(); + block_on(h.process(&format!("@editobj:{USER_1}=n"))).unwrap(); + let permissions = h.service.permissions(); + for location in [ + ObjectLocation::Hud, + ObjectLocation::Attached, + ObjectLocation::RezzedInWorld, + ] { + assert!(permissions.can_edit(location, None).unwrap()); + assert!( + !permissions + .can_edit(location, Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + permissions + .can_edit(location, Some(Some(guid(USER_2)))) + .unwrap() + ); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/EmoteExceptionTests.cs::EmoteExceptionTests.CanEmote::test a643401539d7258ae04ddebaf9c82876f59c4433b11ee61bfe8b416058c9fe38 translated +#[test] +fn emote_exception_add_and_remove() { + let h = harness(); + block_on(h.process("@emote=n")).unwrap(); + assert!(!h.service.permissions().can_emote().unwrap()); + block_on(h.process("@emote=y")).unwrap(); + assert!(h.service.permissions().can_emote().unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RecvChatExceptionTests.cs::RecvChatExceptionTests.CanRecvChat_Except::test b34881785cf2df3d8f4e5ba971adcf2144d8de4db00acfbe136c79457742ec33 translated +#[test] +fn receive_chat_exception_allows_user_chat_and_emote() { + let h = harness(); + let user = "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"; + process(&h, &["@recvchat=n".into(), format!("@recvchat:{user}=add")]); + assert!( + h.service + .permissions() + .can_receive_chat("Hello world".into(), guid(user)) + .unwrap() + ); + assert!( + h.service + .permissions() + .can_receive_chat("/me says Hello world".into(), guid(user)) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RecvEmoteExceptionTests.cs::RecvEmoteExceptionTests.CanRecvChat_RecvEmote_Except::test d4647d71c02e05405ae2acf7b58522aae559b1c90a4f7a1521c9a9a383220f8a translated +#[test] +fn receive_emote_exception_only_allows_selected_user_emotes() { + let h = harness(); + process( + &h, + &["@recvemote=n".into(), format!("@recvemote:{USER_1}=add")], + ); + let permissions = h.service.permissions(); + assert!( + permissions + .can_receive_chat("Hello world".into(), guid(USER_1)) + .unwrap() + ); + assert!( + permissions + .can_receive_chat("Hello world".into(), guid(USER_2)) + .unwrap() + ); + assert!( + permissions + .can_receive_chat("/me says Hello world".into(), guid(USER_1)) + .unwrap() + ); + assert!( + !permissions + .can_receive_chat("/me says Hello world".into(), guid(USER_2)) + .unwrap() + ); +} + +fn im_exception_matches(command: &str, receive: bool, group: Option<&str>) -> bool { + let h = harness(); + let behavior = if receive { "recvim" } else { "sendim" }; + process( + &h, + &[ + format!("@{behavior}=n"), + format!("@{behavior}:{command}=add"), + ], + ); + let user = Some(Some(guid(USER_1))); + if receive { + h.service + .permissions() + .can_receive_im("Hello world".into(), user, group.map(Into::into)) + .unwrap() + } else { + h.service + .permissions() + .can_send_im("Hello world".into(), user, group.map(Into::into)) + .unwrap() + } +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception::test 2e1afba517b29e8e7f2e0605340eb6e87443282857400eba259f0ebdf4874e23 translated +#[test] +fn receive_im_exception_for_user() { + assert!(im_exception_matches(USER_1, true, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception_SingleGroup::test 9ec57daeed225caf960d00f0c83378d1836e86b1896063703ee1c3a38c7b582a translated +#[test] +fn receive_im_exception_for_group() { + assert!(im_exception_matches("Group Name", true, Some("Group Name"))); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception_AllGroups::test 633b8c680b583a6f8d80335c26f4ebcec77f9d8d5231e49bea562dcb66f00267 translated +#[test] +fn receive_im_exception_for_all_groups() { + assert!(im_exception_matches("allgroups", true, Some("Group name"))); +} + +fn redirect_channels_match(command: &str, expected: &[i32], emote: bool) -> bool { + let h = harness(); + for channel in expected { + block_on(h.process(&format!("@{command}:{channel}=add"))).unwrap(); + } + let mut channels = Vec::new(); + let found = if emote { + h.service + .permissions() + .try_get_redir_emote_channels(&mut channels) + } else { + h.service + .permissions() + .try_get_redir_chat_channels(&mut channels) + }; + found && channels == expected +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat::test 1eb25c5579789db22ee242c4b52c65989bd26dce6d7577021c329c6c49be9414 translated +#[test] +fn redirect_chat_channel() { + assert!(redirect_channels_match("redirchat", &[1234], false)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_Removed::test 62e03ff1db1e790d8bc1e38ac1495fc12723ba2eb5c9d6035d73c9fdb91a44ad translated +#[test] +fn redirect_chat_channel_removed() { + let h = harness(); + process( + &h, + &["@redirchat:1234=add".into(), "@redirchat:1234=rem".into()], + ); + assert!( + !h.service + .permissions() + .try_get_redir_chat_channels(&mut Vec::new()) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_MultipleChannels::test c7d0c428d121ab80eee9b6b5855cbe50e7a4cd74e81c369da09df04d55c7554f translated +#[test] +fn redirect_chat_multiple_channels() { + assert!(redirect_channels_match("redirchat", &[1234, 12345], false)); +} + +fn redirected_message_matches( + command: &str, + message: &str, + channels: &[i32], + expected: &[(i32, &str)], +) -> bool { + let h = harness(); + for channel in channels { + block_on(h.process(&format!("@{command}:{channel}=add"))).unwrap(); + } + block_on(h.service.report_send_public_message(message.into(), None)).unwrap(); + let expected: Vec<_> = expected + .iter() + .map(|(channel, text)| (*channel, (*text).into())) + .collect(); + h.actions.lock().unwrap().replies == expected +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChat::test c4a083e495a578c1ed0855c43680d5b05144bf627f06df48c82e089e6f0699bf translated +#[test] +fn redirect_chat_sends_public_message() { + assert!(redirected_message_matches( + "redirchat", + "Hello World", + &[1234], + &[(1234, "Hello World")], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChatMultiple::test 5ff8665440d8d02e0aa900121e591034d51e2b48ca62fdec2fbc9135f8c83428 translated +#[test] +fn redirect_chat_sends_to_multiple_channels() { + assert!(redirected_message_matches( + "redirchat", + "Hello World", + &[1234, 5678], + &[(1234, "Hello World"), (5678, "Hello World")], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChatEmote::test 5d88009e3e8d365c52315a9b189f6cffdc9d04fdb70aa26bcc03d6bc16227189 translated +#[test] +fn redirect_chat_does_not_redirect_emote() { + assert!(redirected_message_matches( + "redirchat", + "/me says Hello World", + &[1234], + &[] + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote::test 02170a2b3eb0cbb88921517c9742d2fc0baaea7a621e5a3c3264a7a17d5efb61 translated +#[test] +fn redirect_emote_channel() { + assert!(redirect_channels_match("rediremote", &[1234], true)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_Removed::test 6ee89cedfd1e2d79d2447f2f48d1e2d1ac96295485b7509fe09f98e3bfcd9766 translated +#[test] +fn redirect_emote_channel_removed() { + let h = harness(); + process( + &h, + &["@rediremote:1234=add".into(), "@rediremote:1234=rem".into()], + ); + assert!( + !h.service + .permissions() + .try_get_redir_emote_channels(&mut Vec::new()) + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_MultipleChannels::test 1a95f4cc5db96cf033fed0c1a4e573b1cb1ac17ef72b76e0ce115c051f10528a translated +#[test] +fn redirect_emote_multiple_channels() { + assert!(redirect_channels_match("rediremote", &[1234, 12345], true)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmote::test 525297be5b5ff466fc9a61f2bc87af38bd637cbef8e0c794e897e021d0cca464 translated +#[test] +fn redirect_emote_sends_emote() { + assert!(redirected_message_matches( + "rediremote", + "/me says Hello World", + &[1234], + &[(1234, "/me says Hello World")], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteMultiple::test fd6af49a90e111ed6424c85565242e1205e13604b529909f7be0260e93f0b1c6 translated +#[test] +fn redirect_emote_sends_to_multiple_channels() { + let h = harness(); + process( + &h, + &["@rediremote:1234=add".into(), "@rediremote:5678=n".into()], + ); + block_on( + h.service + .report_send_public_message("/me says Hello World".into(), None), + ) + .unwrap(); + assert_eq!( + h.actions.lock().unwrap().replies, + vec![ + (1234, "/me says Hello World".into()), + (5678, "/me says Hello World".into()), + ] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteChat::test e8b78a6a34e3d3acdfc6d454b46a939d341260362ae5327dc4b70164d41431aa translated +#[test] +fn redirect_emote_does_not_redirect_chat() { + assert!(redirected_message_matches( + "rediremote", + "Hello World", + &[1234], + &[] + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptExceptionTests.cs::SendChannelExceptExceptionTests.CanSendChannelExcept::test 08c309d08681fe067f67315a72014d0a05c87d6e14632fa04f6f2fb617d61be3 translated +#[test] +fn send_channel_exception_blocks_only_selected_channel() { + let h = harness(); + block_on(h.process("@sendchannel_except:456=add")).unwrap(); + assert!( + h.service + .permissions() + .can_chat(123, "Hello world".into()) + .unwrap() + ); + assert!( + !h.service + .permissions() + .can_chat(456, "Hello world".into()) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptionTests.cs::SendChannelExceptionTests.CanSendChannel_Exception::test 49bcacb6fb31d596ce9afc73099f8aaf645156ee222262174e1d7fed08393cf9 translated +#[test] +fn send_channel_adds_allowed_channel() { + let h = harness(); + process(&h, &["@sendchannel=n".into(), "@sendchannel:123=n".into()]); + assert!( + h.service + .permissions() + .can_chat(123, "Hello world".into()) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception::test 8124011921e8d4caf6840e960bd9f98d21df9db476e1726e0d54550cb8527ceb translated +#[test] +fn send_im_exception_for_user() { + assert!(im_exception_matches(USER_1, false, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception_SingleGroup::test b55a4bdba1d33652f3809c3478047afc65757fbe1dec6c5292e17b71a04b206c translated +#[test] +fn send_im_exception_for_group() { + assert!(im_exception_matches( + "Group Name", + false, + Some("Group Name") + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception_AllGroups::test 4190ff51848f63dce5682317db79da23fa19ad9e53004534382f3eb6e8544788 translated +#[test] +fn send_im_exception_for_all_groups() { + assert!(im_exception_matches("allgroups", false, Some("Group name"))); +} + +fn nullable_user_exception( + behavior: &str, + permission: fn( + &libremetaverse_rlv::RlvPermissionsService, + Option>, + ) -> Result, +) -> [bool; 3] { + let h = harness(); + process( + &h, + &[ + format!("@{behavior}=n"), + format!("@{behavior}:{USER_1}=add"), + ], + ); + let permissions = h.service.permissions(); + [ + permission(&permissions, None).unwrap(), + permission(&permissions, Some(Some(guid(USER_1)))).unwrap(), + permission(&permissions, Some(Some(guid(USER_2)))).unwrap(), + ] +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/ShareExceptionTests.cs::ShareExceptionTests.CanShare_Except::test 37297059a814bfde94c466e263a429258cce11ae258afd7953d26f65f9178f1d translated +#[test] +fn share_exception_for_user() { + assert_eq!( + nullable_user_exception( + "share", + libremetaverse_rlv::RlvPermissionsService::can_share, + ), + [false, true, false] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/ShowNameTagsExceptionTests.cs::ShowNameTagsExceptionTests.CanShowNameTags_Except::test 5d1fe4ec1fa289623d473ffae1682ed725735cbdf48bdf5b7fed086237e32a1a translated +#[test] +fn show_name_tags_exception_for_user() { + assert_eq!( + nullable_user_exception( + "shownametags", + libremetaverse_rlv::RlvPermissionsService::can_show_name_tags, + ), + [false, true, false] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/ShowNamesExceptionTests.cs::ShowNamesExceptionTests.CanShowNames_Except::test b11578e758631037440dd56a683a3ffc25b576eaa25e7388c950d8d647eb2a75 translated +#[test] +fn show_names_exception_for_user() { + assert_eq!( + nullable_user_exception( + "shownames", + libremetaverse_rlv::RlvPermissionsService::can_show_names, + ), + [false, true, false] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/StartImExceptionTests.cs::StartImExceptionTests.CanStartIM_Exception::test e0001ffc665f0f39833cf2376ea1fcb7559bdb87a48ea60bb348e14b078880e4 translated +#[test] +fn start_im_exception_for_user() { + let h = harness(); + process(&h, &["@startim=n".into(), format!("@startim:{USER_1}=add")]); + assert!(h.service.permissions().can_start_im(guid(USER_1)).unwrap()); + assert!(!h.service.permissions().can_start_im(guid(USER_2)).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/TouchMeExceptionTests.cs::TouchMeExceptionTests.TouchMe_default::test a0f3ffd3c70263738c074e258d9271e0a825f163c40d9c7ee8d20865873eb304 translated +#[test] +fn touch_me_exception_allows_sender_and_hud() { + let h = harness(); + process(&h, &["@touchall=n".into(), "@touchme=add".into()]); + let object = guid(USER_1); + let sender = guid(SENDER_ID); + let user = Some(Some(guid("55555555-5555-4555-8555-555555555555"))); + assert!(touch_matches( + &h, + TouchLocation::AttachedSelf, + object, + None, + None, + false + )); + assert!(touch_matches( + &h, + TouchLocation::AttachedOther, + object, + user, + None, + false + )); + assert!(touch_matches( + &h, + TouchLocation::RezzedInWorld, + object, + None, + Some(Some(5.0)), + false, + )); + assert!(touch_matches( + &h, + TouchLocation::Hud, + object, + None, + None, + true + )); + for (location, callback_user, distance) in [ + (TouchLocation::AttachedSelf, None, None), + (TouchLocation::AttachedOther, user, None), + (TouchLocation::RezzedInWorld, None, Some(Some(5.0))), + (TouchLocation::Hud, None, None), + ] { + assert!(touch_matches( + &h, + location, + sender, + callback_user, + distance, + true + )); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/TouchThisExceptionTests.cs::TouchThisExceptionTests.TouchThis_default::test e7e6c9e14badb0159f81adc96e17fcf3ebe2cf5351ec6465f03c430de06d85d2 translated +#[test] +fn touch_this_exception_blocks_only_selected_prim() { + let h = harness(); + block_on(h.process(&format!("@touchthis:{USER_1}=add"))).unwrap(); + let user = Some(Some(guid("55555555-5555-4555-8555-555555555555"))); + for (location, callback_user, distance) in [ + (TouchLocation::AttachedSelf, None, None), + (TouchLocation::AttachedOther, user, None), + (TouchLocation::RezzedInWorld, None, Some(Some(5.0))), + (TouchLocation::Hud, None, None), + ] { + assert!(touch_matches( + &h, + location, + guid(USER_1), + callback_user, + distance, + false + )); + assert!(touch_matches( + &h, + location, + guid(USER_2), + callback_user, + distance, + true + )); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/TouchWorldExceptionTests.cs::TouchWorldExceptionTests.TouchWorld_Exception::test ffef2f112b5718bab7b01fc1b624e588c181dadc5c50fd85de4404a501ee6f37 translated +#[test] +fn touch_world_exception_allows_selected_world_prim() { + let h = harness(); + process( + &h, + &["@touchworld=n".into(), format!("@touchworld:{USER_2}=add")], + ); + let user = Some(Some(guid("55555555-5555-4555-8555-555555555555"))); + assert!(touch_matches( + &h, + TouchLocation::AttachedSelf, + guid(USER_1), + None, + None, + true, + )); + assert!(touch_matches( + &h, + TouchLocation::AttachedOther, + guid(USER_1), + user, + None, + true, + )); + assert!(touch_matches( + &h, + TouchLocation::RezzedInWorld, + guid(USER_1), + None, + Some(Some(5.0)), + false, + )); + assert!(touch_matches( + &h, + TouchLocation::Hud, + guid(USER_1), + None, + None, + true + )); + for (location, callback_user, distance) in [ + (TouchLocation::AttachedSelf, None, None), + (TouchLocation::AttachedOther, user, None), + (TouchLocation::RezzedInWorld, None, Some(Some(5.0))), + (TouchLocation::Hud, None, None), + ] { + assert!(touch_matches( + &h, + location, + guid(USER_2), + callback_user, + distance, + true + )); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/TpLureExceptionTests.cs::TpLureExceptionTests.CanTpLure_Except::test a32f4cdda5b48ffcaced683b2e77fc129c1c321951aa2e16623eea022f2aa0b9 translated +#[test] +fn tp_lure_exception_for_user() { + assert_eq!( + nullable_user_exception( + "tplure", + libremetaverse_rlv::RlvPermissionsService::can_tp_lure, + ), + [false, true, false] + ); +} diff --git a/tests/compat/tests/rlv_folder_exception_semantics.rs b/tests/compat/tests/rlv_folder_exception_semantics.rs new file mode 100644 index 0000000..e294546 --- /dev/null +++ b/tests/compat/tests/rlv_folder_exception_semantics.rs @@ -0,0 +1,253 @@ +// Exact Rust translations of the recursive folder exception tests. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SampleInventoryTree, guid}; +use libremetaverse_rlv::{InventoryMap, RlvAttachmentPoint}; + +const PRIM: &str = "11111111-0003-4aaa-8aaa-ffffffffffff"; +const HATS_EXCEPTED: [bool; 7] = [true, true, false, false, false, true, true]; +const CLOTHING_EXCEPTED: [bool; 7] = [true; 7]; +const NO_EXCEPTIONS: [bool; 7] = [false, false, false, false, false, true, true]; + +#[derive(Clone, Copy)] +enum Mode { + Attach, + Detach, +} + +fn exception_case_matches( + commands: &[&str], + mode: Mode, + expected_items: [bool; 7], + expected_exception_counts: Option<[usize; 3]>, +) -> bool { + let h = RlvHarness::new().expect("RlvService constructor"); + let mut tree = SampleInventoryTree::build().expect("sample inventory tree"); + tree.business_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Pelvis))); + tree.business_pants + .set_attached_prim_id(Some(Some(guid(PRIM)))); + let folder_ids = [tree.clothing.id(), tree.hats.id(), tree.sub_hats.id()]; + h.queries.lock().unwrap().inventory_map = Some(InventoryMap::new(tree.root, vec![]).unwrap()); + for command in commands { + if !block_on(h.process_from(command, PRIM, "Business Pants (Pelvis)")).unwrap() { + return false; + } + } + + let permissions = h.service.permissions(); + let actual = match mode { + Mode::Attach => [ + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.party_hat, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.fancy_hat, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.business_pants, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.happy_shirt, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.retro_pants, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.glasses, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.watch, true) + .unwrap(), + ], + Mode::Detach => [ + permissions + .can_detach_with_rlv_inventory_item(tree.party_hat) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.fancy_hat) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.business_pants) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.happy_shirt) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.retro_pants) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.glasses) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.watch) + .unwrap(), + ], + }; + if actual != expected_items { + return false; + } + + if let Some(expected_counts) = expected_exception_counts { + let locked = h.service.restrictions().get_locked_folders().unwrap(); + if locked.len() != 3 { + return false; + } + for (index, id) in folder_ids.iter().enumerate() { + let Some(folder) = locked.get(id) else { + return false; + }; + let matches = folder.is_locked() + && match mode { + Mode::Attach => { + folder.attach_exceptions().len() == expected_counts[index] + && folder.attach_restrictions().len() == 1 + && folder.detach_exceptions().is_empty() + && folder.detach_restrictions().is_empty() + } + Mode::Detach => { + folder.attach_exceptions().is_empty() + && folder.attach_restrictions().is_empty() + && folder.detach_exceptions().len() == expected_counts[index] + && folder.detach_restrictions().len() == 1 + } + }; + if !matches { + return false; + } + } + } + true +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll::test 1daa414beb2a767518f335f6ae59e711395375ed9d7912fbbc139fa0998dfdb1 translated +#[test] +fn attach_all_this_except_subtree() { + assert!(exception_case_matches( + &[ + "@attachallthis=n", + "@attachallthis_except:Clothing/Hats=add", + ], + Mode::Attach, + HATS_EXCEPTED, + Some([0, 1, 1]), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive::test 6e0c78d6ed78bedca9a8c6a9a83fd9f90f7123da433eb4c560e6f5c0b6fe6d94 translated +#[test] +fn attach_all_this_except_recursive_subtree() { + assert!(exception_case_matches( + &["@attachallthis=n", "@attachallthis_except:Clothing=add"], + Mode::Attach, + CLOTHING_EXCEPTED, + Some([1, 1, 1]), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive_AddRem::test 9423ed205501604501d31909414ecf6ef99a0d56d4efae100f5576b31b71a858 translated +#[test] +fn attach_all_this_recursive_exception_removed() { + assert!(exception_case_matches( + &[ + "@attachallthis=n", + "@attachallthis_except:Clothing=add", + "@attachallthis_except:Clothing=rem", + ], + Mode::Attach, + NO_EXCEPTIONS, + Some([0, 0, 0]), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs::AttachThisExceptExceptionTests.AttachThisExcept_Default::test b8e6e55d8f2654429c9826e38ffc8522eec44ab2521891b68616db61ac662db0 translated +#[test] +fn attach_this_except_folder() { + assert!(exception_case_matches( + &["@attachallthis=n", "@attachthis_except:Clothing/Hats=add"], + Mode::Attach, + HATS_EXCEPTED, + Some([0, 1, 0]), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs::AttachThisExceptExceptionTests.AttachThisExcept_AddRem::test 05bc7eab5dd02a0a3e60f85eb51b374623aaa29c9ce2b522748a3478b8ee44ea translated +#[test] +fn attach_this_exception_removed() { + assert!(exception_case_matches( + &[ + "@attachallthis=n", + "@attachthis_except:Clothing/Hats=add", + "@attachthis_except:Clothing/Hats=rem", + ], + Mode::Attach, + NO_EXCEPTIONS, + Some([0, 0, 0]), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll::test 75e7ab22f6d9d058580fd83741d65f7e5babb7ad54805eaeb16bec8cd65370ed translated +#[test] +fn detach_all_this_except_subtree() { + assert!(exception_case_matches( + &[ + "@detachallthis=n", + "@detachallthis_except:Clothing/Hats=add", + ], + Mode::Detach, + HATS_EXCEPTED, + None, + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive::test 3fb8bb13d6a917d9be18265d90767488cde66746badc6584025bbbaf84f020ad translated +#[test] +fn detach_all_this_except_recursive_subtree() { + assert!(exception_case_matches( + &["@detachallthis=n", "@detachallthis_except:Clothing=add"], + Mode::Detach, + CLOTHING_EXCEPTED, + Some([1, 1, 1]), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive_AddRem::test fb5fd8a4eda181d22d1756ec0cae700c4b90895a74dc79c24c67c1705cfd37c8 translated +#[test] +fn detach_all_this_recursive_exception_removed() { + assert!(exception_case_matches( + &[ + "@detachallthis=n", + "@detachallthis_except:Clothing=add", + "@detachallthis_except:Clothing=rem", + ], + Mode::Detach, + NO_EXCEPTIONS, + Some([0, 0, 0]), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs::DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except::test 3222d97d73d8b54bd11212f8cd3de26279040321f0bc330e061ff93880053f3e translated +#[test] +fn detach_this_except_folder() { + assert!(exception_case_matches( + &["@detachallthis=n", "@detachthis_except:Clothing/Hats=add"], + Mode::Detach, + HATS_EXCEPTED, + Some([0, 1, 0]), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs::DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except_AddRem::test d25b2c533b9b51428c0c2414d687c466a3c80c4a573dd36763504de19e8dc6f8 translated +#[test] +fn detach_this_exception_removed() { + assert!(exception_case_matches( + &[ + "@detachallthis=n", + "@detachthis_except:Clothing/Hats=add", + "@detachthis_except:Clothing/Hats=rem", + ], + Mode::Detach, + NO_EXCEPTIONS, + Some([0, 0, 0]), + )); +} diff --git a/tests/compat/tests/rlv_inventory_map_semantics.rs b/tests/compat/tests/rlv_inventory_map_semantics.rs new file mode 100644 index 0000000..3fa5284 --- /dev/null +++ b/tests/compat/tests/rlv_inventory_map_semantics.rs @@ -0,0 +1,269 @@ +// Exact Rust translation of LibreMetaverse.Tests/RLV/InventoryMapTests.cs. + +use libremetaverse_compat_tests::rlv_support::{SampleInventoryTree, guid}; +use libremetaverse_rlv::{InventoryMap, RlvAttachmentPoint, RlvWearableType}; + +fn path_matches( + clothing_name: Option<&str>, + hats_name: Option<&str>, + path: &str, + skip_private: bool, + expected: Option<&str>, +) -> bool { + let mut tree = SampleInventoryTree::build().expect("sample inventory tree"); + if let Some(name) = clothing_name { + tree.clothing.set_name(name.into()); + } + if let Some(name) = hats_name { + tree.hats.set_name(name.into()); + } + let expected_id = expected.map(|folder| match folder { + "clothing" => tree.clothing.id(), + "hats" => tree.hats.id(), + _ => unreachable!(), + }); + let map = InventoryMap::new(tree.root, vec![]).unwrap(); + let mut found = None; + map.try_get_folder_from_path(path.into(), skip_private, &mut found) == expected_id.is_some() + && found.map(|folder| folder.id()) == expected_id +} + +fn folder_ids( + folders: impl Iterator, +) -> Vec { + let mut ids: Vec<_> = folders.map(|folder| folder.id()).collect(); + ids.sort_by_key(|id| id.0); + ids +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_Normal::test 97787ac6b51198e317ed391e91125724ce1b580924c40500f81186812b45f625 translated +#[test] +fn try_get_folder_from_normal_path() { + assert!(path_matches( + None, + None, + "Clothing/Hats", + true, + Some("hats") + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_EmptyPath::test 0ffd4f32e285ba94e94f63ac312d3be20bf144b769e8d18af32e15f481042ed7 translated +#[test] +fn try_get_folder_rejects_empty_path() { + assert!(path_matches(None, None, "", true, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlash::test 90ae520739ea1a2612f491bb110b0870ed4dcb8a983aad9526ed25d8c5cbe687 translated +#[test] +fn try_get_folder_when_name_contains_slash() { + assert!(path_matches( + Some("Clo/thing"), + None, + "Clo/thing/Hats", + true, + Some("hats"), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlashes::test 8c0ed3c6cc16b916f9df8d25d55618e82299fd1bcd66983f682219c338853028 translated +#[test] +fn try_get_folder_when_names_contain_multiple_slashes() { + assert!(path_matches( + Some("/Clo//thing//"), + Some("//h/ats/"), + "/Clo//thing/////h/ats/", + true, + Some("hats"), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashPrefix::test 8a86081d6b25ae50b3cf8cdcb1c58c8539264931ab74f395dfc7345ee7f4f861 translated +#[test] +fn try_get_folder_with_slash_prefix() { + assert!(path_matches( + Some("/Clothing"), + None, + "/Clothing", + true, + Some("clothing") + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashSuffix::test 04afafa569b7a10d6add8c1e9d8f26ac502791f1da2dbdb3e37407e945c87872 translated +#[test] +fn try_get_folder_with_slash_suffix() { + assert!(path_matches( + Some("Clothing/"), + None, + "Clothing/", + true, + Some("clothing") + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashAffix::test 7eaec38fa6b545f133748b502169fab575308c9c4e60548cfbfd704452bd9761 translated +#[test] +fn try_get_folder_with_slash_affix() { + assert!(path_matches( + Some("/Clothing/"), + None, + "/Clothing/", + true, + Some("clothing"), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_ContendingFoldersWithSlashes::test 96a8189266746a564072122342f36b3321998f3e0cbe0094f3e4c83d29bc53d5 translated +#[test] +fn try_get_folder_prefers_exact_slash_match() { + let mut tree = SampleInventoryTree::build().unwrap(); + tree.root + .add_child( + guid("12345678-0001-4ddd-8ddd-dddddddddddd"), + "Clothing".into(), + ) + .unwrap(); + tree.root + .add_child( + guid("12345678-0002-4ddd-8ddd-dddddddddddd"), + "+Clothing///".into(), + ) + .unwrap(); + tree.root + .add_child( + guid("12345678-0003-4ddd-8ddd-dddddddddddd"), + "+Clothing///".into(), + ) + .unwrap(); + tree.clothing.set_name("Clothing///".into()); + tree.hats.set_name("//h/ats/".into()); + let expected = tree.hats.id(); + let map = InventoryMap::new(tree.root, vec![]).unwrap(); + let mut found = None; + assert!(map.try_get_folder_from_path("Clothing//////h/ats/".into(), true, &mut found,)); + assert_eq!(found.unwrap().id(), expected); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_InvalidPath::test 547def910ded67bc7950b211ad929f775d4eff26e351d11612f146b3e863510e translated +#[test] +fn try_get_folder_rejects_invalid_path() { + assert!(path_matches(None, None, "Clothing/Hats123", true, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_IgnoreFolderPrefix::test 5039b79496d215d3921427ab6f65867ba7a4ea5239864f1f5a1e38ea3e5bb426 translated +#[test] +fn try_get_folder_ignores_tilde_and_plus_prefixes() { + assert!(path_matches( + Some("~Clothing"), + Some("+Hats"), + "Clothing/Hats", + true, + Some("hats"), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FailOnHiddenFolder::test bb0c7e531584128d251b06a4ac23b8cfad16ec4b117be79a53dea3c54aed4510 translated +#[test] +fn try_get_folder_skips_hidden_folder() { + assert!(path_matches( + Some(".Clothing"), + None, + ".Clothing", + true, + None + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_AllowHiddenFolder::test 9217cb5bd9c325fc792303e5ab53cefd71e95a5acf9e5a1601957ba8bf807346 translated +#[test] +fn try_get_folder_allows_hidden_folder() { + assert!(path_matches( + Some(".Clothing"), + None, + ".Clothing", + false, + Some("clothing"), + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ById::test fc89036c3472dcc2ea4d3fcb55636238e3d2c75b490f46d328b5f91f28301ed0 translated +#[test] +fn find_folders_containing_by_prim_id() { + let mut tree = SampleInventoryTree::build().unwrap(); + let prim = guid("11111111-0002-4aaa-8aaa-ffffffffffff"); + tree.party_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Spine))); + tree.party_hat.set_attached_prim_id(Some(Some(prim))); + let expected = vec![tree.hats.id()]; + let map = InventoryMap::new(tree.root, vec![]).unwrap(); + assert_eq!( + folder_ids( + map.find_folders_containing(false, Some(Some(prim)), None, None) + .unwrap() + ), + expected + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByAttachmentType::test 90b36c29312b87c824c158987e551ca31522cf53a68f5f6bd3eae8fe03e914ed translated +#[test] +fn find_folders_containing_by_attachment_point() { + let mut tree = SampleInventoryTree::build().unwrap(); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.happy_shirt + .set_attached_prim_id(Some(Some(guid("11111111-0001-4aaa-8aaa-ffffffffffff")))); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat + .set_attached_prim_id(Some(Some(guid("11111111-0003-4aaa-8aaa-ffffffffffff")))); + let mut expected = vec![tree.clothing.id(), tree.hats.id()]; + expected.sort_by_key(|id| id.0); + let map = InventoryMap::new(tree.root, vec![]).unwrap(); + assert_eq!( + folder_ids( + map.find_folders_containing(false, None, Some(Some(RlvAttachmentPoint::Chin)), None,) + .unwrap() + ), + expected + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByAttachmentType_SingleResult::test a973bf8087abb0c68cd80d76949fac2735474bf6ccbe743933051f60527d93ce translated +#[test] +fn find_folders_containing_by_attachment_point_single_result() { + let mut tree = SampleInventoryTree::build().unwrap(); + tree.happy_shirt + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.fancy_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + let expected = vec![tree.hats.id()]; + let map = InventoryMap::new(tree.root, vec![]).unwrap(); + assert_eq!( + folder_ids( + map.find_folders_containing(true, None, Some(Some(RlvAttachmentPoint::Chin)), None,) + .unwrap() + ), + expected + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByWearType::test d6712cbeacd6ddf25a1f76dc1eeb10f4c0d8967a7591c249127f9b6387f0df8a translated +#[test] +fn find_folders_containing_by_wearable_type() { + let mut tree = SampleInventoryTree::build().unwrap(); + tree.happy_shirt + .set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.fancy_hat + .set_worn_on(Some(Some(RlvWearableType::Hair))); + let expected = vec![tree.clothing.id()]; + let map = InventoryMap::new(tree.root, vec![]).unwrap(); + assert_eq!( + folder_ids( + map.find_folders_containing(false, None, None, Some(Some(RlvWearableType::Pants)),) + .unwrap() + ), + expected + ); +} diff --git a/tests/compat/tests/rlv_inventory_queries_semantics.rs b/tests/compat/tests/rlv_inventory_queries_semantics.rs new file mode 100644 index 0000000..21540a1 --- /dev/null +++ b/tests/compat/tests/rlv_inventory_queries_semantics.rs @@ -0,0 +1,782 @@ +//! Exact Rust translations of the RLV inventory-query tests. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SampleInventoryTree, guid}; +use libremetaverse_rlv::{InventoryMap, RlvAttachmentPoint, RlvInventoryItem, RlvWearableType}; + +const PRIM1: &str = "11111111-0001-4aaa-8aaa-ffffffffffff"; +const PRIM2: &str = "11111111-0002-4aaa-8aaa-ffffffffffff"; +const PRIM3: &str = "11111111-0003-4aaa-8aaa-ffffffffffff"; +const PRIM4: &str = "11111111-0004-4aaa-8aaa-ffffffffffff"; +const PRIM5: &str = "11111111-0005-4aaa-8aaa-ffffffffffff"; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn install_inventory(h: &RlvHarness, tree: SampleInventoryTree, external: Vec) { + h.queries.lock().unwrap().inventory_map = Some(InventoryMap::new(tree.root, external).unwrap()); +} + +fn query_matches(h: &RlvHarness, command: &str, expected: &str) -> bool { + block_on(h.process(command)).unwrap() + && h.actions.lock().unwrap().replies == vec![(1234, expected.into())] +} + +fn external_item( + id: &str, + name: &str, + folder: &str, + point: Option, + prim: Option<&str>, + wearable: Option, +) -> RlvInventoryItem { + RlvInventoryItem::new( + guid(id), + name.into(), + false, + Some(Some(guid(folder))), + point.map(Some), + prim.map(|id| Some(guid(id))), + wearable.map(Some), + None, + ) + .unwrap() +} + +fn empty_tree_query(command: &str, expected: &str) -> bool { + let h = harness(); + install_inventory(&h, SampleInventoryTree::build().unwrap(), vec![]); + query_matches(&h, command, expected) +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_MultipleTerms::test a1f04e5ab064772c25feefc21ea57d65b1044f0fa3254aeb2a3bfedf68d8e0ca translated +#[test] +fn find_folder_multiple_terms() { + assert!(empty_tree_query( + "@findfolder:at&&ub=1234", + "Clothing/Hats/Sub Hats" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_SearchOrder::test 4cba32dd316f49713c18a71bf5a932e1c28c94944add38c25852e8611ef0f987 translated +#[test] +fn find_folder_search_order() { + assert!(empty_tree_query("@findfolder:at=1234", "Clothing/Hats")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_IgnorePrivate::test 54c5ec1f6a6ae5611221e3afdc47db0c2d0ecb0da460dd8f2c506ed34c221ff8 translated +#[test] +fn find_folder_ignores_private_folder() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.hats.set_name(".Hats".into()); + install_inventory(&h, tree, vec![]); + assert!(query_matches(&h, "@findfolder:at=1234", "")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_IgnoreTildePrefix::test 9f6635f5e14dbc14d1592a19b62d67748a60201128a75893e47ea1751c83b6d7 translated +#[test] +fn find_folder_ignores_tilde_prefixed_folder() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.hats.set_name("~Hats".into()); + install_inventory(&h, tree, vec![]); + assert!(query_matches(&h, "@findfolder:at=1234", "")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs::FindFoldersQueryTests.FindFolders::test 09dbc17be4b28cc4a63d0f837960586ba7cd03e184f0013b26ed27db15703d84 translated +#[test] +fn find_folders() { + assert!(empty_tree_query( + "@findfolders:at=1234", + "Clothing/Hats,Clothing/Hats/Sub Hats", + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs::FindFoldersQueryTests.FindFolders_Separator::test 51caa783dded41b99c878066618a10a7fe32c681ef4385c9a72f154870312b1f translated +#[test] +fn find_folders_with_separator() { + assert!(empty_tree_query( + "@findfolders:at; AND =1234", + "Clothing/Hats AND Clothing/Hats/Sub Hats", + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingNothing::test 41fc967c6c174ac39ce3f6de7e273e6db1845bc2ad6acd393f27a6705a3555df translated +#[test] +fn get_attach_wearing_nothing() { + assert!(empty_tree_query( + "@getattach=1234", + "00000000000000000000000000000000000000000000000000000000", + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_ExternalItems::test 3f8e640aad5deeaf00b07af2d12c33b0a93257260d057d7b5dd5488f846f467a translated +#[test] +fn get_attach_external_items() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + let folder = "12312312-aaaa-4aaa-8aaa-aaaaaaaaaaaa"; + install_inventory( + &h, + tree, + vec![ + external_item( + "12312312-0001-4aaa-8aaa-aaaaaaaaaaaa", + "External Tattoo", + folder, + None, + None, + Some(RlvWearableType::Tattoo), + ), + external_item( + "12312312-0002-4aaa-8aaa-aaaaaaaaaaaa", + "External Jaw Thing", + folder, + Some(RlvAttachmentPoint::Jaw), + Some("12312312-0002-4aaa-8aaa-ffffffffffff"), + None, + ), + ], + ); + assert!(query_matches( + &h, + "@getattach=1234", + "00000000000000000000000000000000000000000000000100000000", + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingSomeItems::test c209cd826958306f1350a685b29985cb8335a55ebcb9c0bec5c5a21279bb0a1a translated +#[test] +fn get_attach_wearing_some_items() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + let folder = "cccccccc-cccc-4ccc-8ccc-cccccccccccc"; + install_inventory( + &h, + tree, + vec![ + external_item( + "c0000000-cccc-4ccc-8ccc-cccccccccccc", + "My Socks", + folder, + Some(RlvAttachmentPoint::LeftFoot), + Some("c0000000-cccc-4ccc-8ccc-ffffffffffff"), + None, + ), + external_item( + "c0000001-cccc-4ccc-8ccc-cccccccccccc", + "My Hair", + folder, + Some(RlvAttachmentPoint::Skull), + Some("c0000001-cccc-4ccc-8ccc-ffffffffffff"), + None, + ), + ], + ); + assert!(query_matches( + &h, + "@getattach=1234", + "00100001000000000000000000000000000000000000000000000000", + )); +} + +const ATTACHMENT_POINTS: [RlvAttachmentPoint; 56] = [ + RlvAttachmentPoint::Default, + RlvAttachmentPoint::Chest, + RlvAttachmentPoint::Skull, + RlvAttachmentPoint::LeftShoulder, + RlvAttachmentPoint::RightShoulder, + RlvAttachmentPoint::LeftHand, + RlvAttachmentPoint::RightHand, + RlvAttachmentPoint::LeftFoot, + RlvAttachmentPoint::RightFoot, + RlvAttachmentPoint::Spine, + RlvAttachmentPoint::Pelvis, + RlvAttachmentPoint::Mouth, + RlvAttachmentPoint::Chin, + RlvAttachmentPoint::LeftEar, + RlvAttachmentPoint::RightEar, + RlvAttachmentPoint::LeftEyeball, + RlvAttachmentPoint::RightEyeball, + RlvAttachmentPoint::Nose, + RlvAttachmentPoint::RightUpperArm, + RlvAttachmentPoint::RightForearm, + RlvAttachmentPoint::LeftUpperArm, + RlvAttachmentPoint::LeftForearm, + RlvAttachmentPoint::RightHip, + RlvAttachmentPoint::RightUpperLeg, + RlvAttachmentPoint::RightLowerLeg, + RlvAttachmentPoint::LeftHip, + RlvAttachmentPoint::LeftUpperLeg, + RlvAttachmentPoint::LeftLowerLeg, + RlvAttachmentPoint::Stomach, + RlvAttachmentPoint::LeftPec, + RlvAttachmentPoint::RightPec, + RlvAttachmentPoint::HUDCenter2, + RlvAttachmentPoint::HUDTopRight, + RlvAttachmentPoint::HUDTop, + RlvAttachmentPoint::HUDTopLeft, + RlvAttachmentPoint::HUDCenter, + RlvAttachmentPoint::HUDBottomLeft, + RlvAttachmentPoint::HUDBottom, + RlvAttachmentPoint::HUDBottomRight, + RlvAttachmentPoint::Neck, + RlvAttachmentPoint::AvatarCenter, + RlvAttachmentPoint::LeftHandRing, + RlvAttachmentPoint::RightHandRing, + RlvAttachmentPoint::TailBase, + RlvAttachmentPoint::TailTip, + RlvAttachmentPoint::LeftWing, + RlvAttachmentPoint::RightWing, + RlvAttachmentPoint::Jaw, + RlvAttachmentPoint::AltLeftEar, + RlvAttachmentPoint::AltRightEar, + RlvAttachmentPoint::AltLeftEye, + RlvAttachmentPoint::AltRightEye, + RlvAttachmentPoint::Tongue, + RlvAttachmentPoint::Groin, + RlvAttachmentPoint::LeftHindFoot, + RlvAttachmentPoint::RightHindFoot, +]; + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingEverything::test 4adb25030cd3c125242a4b1f770bfd3afdcabd85c23d37c34df9c8f273489e5b translated +#[test] +fn get_attach_wearing_everything() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + let folder = "99999999-9999-4999-8999-999999999999"; + let external = ATTACHMENT_POINTS + .into_iter() + .map(|point| { + external_item( + &format!("c{:07}-cccc-4ccc-8ccc-cccccccccccc", point as i32), + &format!("External {point:?}"), + folder, + Some(point), + Some(PRIM1), + None, + ) + }) + .collect(); + install_inventory(&h, tree, external); + assert!(query_matches( + &h, + "@getattach=1234", + "11111111111111111111111111111111111111111111111111111111", + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_Specific_Exists::test 7d8ccf26629911b6b20dc26c5c549975827d7378b4d85259a8b9724a3622892b translated +#[test] +fn get_attach_specific_exists() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + install_inventory( + &h, + tree, + vec![external_item( + "c0000000-cccc-4ccc-8ccc-cccccccccccc", + "My Socks", + "cccccccc-cccc-4ccc-8ccc-cccccccccccc", + Some(RlvAttachmentPoint::LeftFoot), + Some("c0000000-cccc-4ccc-8ccc-ffffffffffff"), + None, + )], + ); + assert!(query_matches(&h, "@getattach:left foot=1234", "1")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_Specific_NotExists::test 08d9852205987a266608ad17c12fa498894d7c3216e873cffb9db4584cfd100d translated +#[test] +fn get_attach_specific_not_exists() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + install_inventory( + &h, + tree, + vec![external_item( + "c0000001-cccc-4ccc-8ccc-cccccccccccc", + "My Hair", + "cccccccc-cccc-4ccc-8ccc-cccccccccccc", + Some(RlvAttachmentPoint::Skull), + Some("c0000001-cccc-4ccc-8ccc-ffffffffffff"), + None, + )], + ); + assert!(query_matches(&h, "@getattach:left foot=1234", "0")); +} + +fn get_inv(command: &str, expected: &str) -> bool { + empty_tree_query(command, expected) +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv::test 7476602b4103b47ed7dff44146a7ba90a1d62dc0d502f7b9e37b7863d9441ceb translated +#[test] +fn get_inventory_root() { + assert!(get_inv("@getinv=1234", "Clothing,Accessories")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits::test d60a78bb35cc8fcdbdc2465889333b25567ea5e1c9279a8fb7b4162f4a35eae2 translated +#[test] +fn get_inventory_outfits() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + let outfits = tree + .root + .add_child( + guid("12312399-9999-4999-8999-999999999999"), + ".outfits".into(), + ) + .unwrap(); + outfits + .add_child( + guid("12312399-0001-4999-8999-999999999999"), + "First outfit".into(), + ) + .unwrap(); + outfits + .add_child( + guid("12312399-0002-4999-8999-999999999999"), + "Second outfit".into(), + ) + .unwrap(); + outfits + .add_item( + guid("12312399-0001-0001-8999-999999999999"), + "First Item".into(), + false, + None, + None, + None, + None, + ) + .unwrap(); + outfits + .add_item( + guid("12312399-0001-0002-8999-999999999999"), + "Second Item".into(), + false, + None, + None, + None, + None, + ) + .unwrap(); + install_inventory(&h, tree, vec![]); + assert!(query_matches( + &h, + "@getinv:.outfits=1234", + "First outfit,Second outfit" + )); +} + +fn get_my_outfits(command: &str) -> bool { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + let outfits = tree + .root + .add_child( + guid("12312399-9999-4999-8999-999999999999"), + "~MyOutfits".into(), + ) + .unwrap(); + outfits + .add_child( + guid("12312399-0001-4999-8999-999999999999"), + "First outfit".into(), + ) + .unwrap(); + install_inventory(&h, tree, vec![]); + query_matches(&h, command, "First outfit") +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreLeadingSlash::test add33ed33e1940f26362332b89486253c6af1a56e601bafab49511b6607ed50a translated +#[test] +fn get_inventory_ignores_leading_slash() { + assert!(get_my_outfits("@getinv:/~MyOutfits=1234")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreTrailingSlash::test 8f89302126be19f89d075d87d5194cc000fb7819f92ea7d54e6a63c1df9ca1ee translated +#[test] +fn get_inventory_ignores_trailing_slash() { + assert!(get_my_outfits("@getinv:~MyOutfits/=1234")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreLeadingAndTrailingSlash::test c660447f93fb8508dbe4c874c92fd776a6e13596bbe3036bfb4664e35ee22306 translated +#[test] +fn get_inventory_ignores_leading_and_trailing_slash() { + assert!(get_my_outfits("@getinv:/~MyOutfits/=1234")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_Inventory::test 7db6f75e2f109d0e8d852d181ddd721f688e27144ad8a5604384b37de9f8c3eb translated +#[test] +fn get_inventory_outfit_items_are_not_folders() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + let outfits = tree + .root + .add_child( + guid("12312399-9999-4999-8999-999999999999"), + ".outfits".into(), + ) + .unwrap(); + let first = outfits + .add_child( + guid("12312399-0001-4999-8999-999999999999"), + "First outfit".into(), + ) + .unwrap(); + first + .add_item( + guid("12312399-0001-0001-8999-999999999999"), + "First Item".into(), + false, + None, + None, + None, + None, + ) + .unwrap(); + first + .add_item( + guid("12312399-0001-0002-8999-999999999999"), + "Second Item".into(), + false, + None, + None, + None, + None, + ) + .unwrap(); + install_inventory(&h, tree, vec![]); + assert!(query_matches(&h, "@getinv:.outfits/First outfit=1234", "")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Subfolder::test 6a5effe8012e9a446021b83f9b5314f6f9b66587222b447fa79028582830b3a1 translated +#[test] +fn get_inventory_subfolder() { + assert!(get_inv("@getinv:Clothing/Hats=1234", "Sub Hats")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Empty::test 2dd9f242eb71826066482ff4faa80b952ef89f855723cdc0c01cc4714abf8751 translated +#[test] +fn get_inventory_empty_folder() { + assert!(get_inv("@getinv:Clothing/Hats/Sub Hats=1234", "")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Invalid::test 92595df155e79568e70bceb1538c23f10de99a6a138a0a5d9b8a2626588fdae9 translated +#[test] +fn get_inventory_invalid_folder() { + assert!(get_inv("@getinv:Invalid Folder=1234", "")); +} + +fn attach(item: &mut RlvInventoryItem, point: RlvAttachmentPoint, prim: &str) { + item.set_attached_to(Some(Some(point))); + item.set_attached_prim_id(Some(Some(guid(prim)))); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn::test 472d70fb14f393d43f8698bb81d1855426f570d85c9e592fa86607eb79ce366e translated +#[test] +fn get_inventory_worn() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + attach(&mut tree.business_pants, RlvAttachmentPoint::Pelvis, PRIM1); + attach(&mut tree.happy_shirt, RlvAttachmentPoint::Pelvis, PRIM2); + attach(&mut tree.fancy_hat, RlvAttachmentPoint::Chin, PRIM3); + attach(&mut tree.party_hat, RlvAttachmentPoint::Spine, PRIM4); + attach(&mut tree.glasses, RlvAttachmentPoint::Chin, PRIM5); + tree.retro_pants + .set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.party_hat + .set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.watch.set_worn_on(Some(Some(RlvWearableType::Tattoo))); + install_inventory(&h, tree, vec![]); + assert!(query_matches( + &h, + "@getinvworn=1234", + "|03,Clothing|33,Accessories|33" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_PartialRoot::test ce4c640a901a6684a27b2b259c4fc3b25f2d6b870107babff3b930ced64a150b translated +#[test] +fn get_inventory_worn_partial_root() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + attach(&mut tree.business_pants, RlvAttachmentPoint::Pelvis, PRIM1); + tree.watch.set_worn_on(Some(Some(RlvWearableType::Tattoo))); + install_inventory(&h, tree, vec![]); + assert!(query_matches( + &h, + "@getinvworn=1234", + "|02,Clothing|22,Accessories|22" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_Naked::test fa8994189c5d9cda7d613dfb8f6ffbb1808c8bae54a3647530fb872d47c43dd5 translated +#[test] +fn get_inventory_worn_naked() { + assert!(empty_tree_query( + "@getinvworn=1234", + "|01,Clothing|11,Accessories|11" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_EmptyFolder::test ab6fc753f4d4170e17f49b708d7e62816f197e83234feda1fdcf63dcdc0bc6c4 translated +#[test] +fn get_inventory_worn_empty_folder() { + assert!(empty_tree_query( + "@getinvworn:Clothing/Hats/Sub Hats=1234", + "|00" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_PartialWorn::test ceb446f2aa6eaa5232a99147d5d993386ee9e2e5fefd93ef582f27a6b8ece948 translated +#[test] +fn get_inventory_worn_partial_folder() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + attach(&mut tree.party_hat, RlvAttachmentPoint::Spine, PRIM1); + attach(&mut tree.fancy_hat, RlvAttachmentPoint::Chin, PRIM2); + install_inventory(&h, tree, vec![]); + assert!(query_matches( + &h, + "@getinvworn:Clothing/Hats=1234", + "|33,Sub Hats|00" + )); +} + +const WEARABLES: [RlvWearableType; 17] = [ + RlvWearableType::Shape, + RlvWearableType::Skin, + RlvWearableType::Hair, + RlvWearableType::Eyes, + RlvWearableType::Shirt, + RlvWearableType::Pants, + RlvWearableType::Shoes, + RlvWearableType::Socks, + RlvWearableType::Jacket, + RlvWearableType::Gloves, + RlvWearableType::Undershirt, + RlvWearableType::Underpants, + RlvWearableType::Skirt, + RlvWearableType::Alpha, + RlvWearableType::Tattoo, + RlvWearableType::Physics, + RlvWearableType::Universal, +]; + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingNothing::test 27befef9fdef993d82a641980f2b1ad7f458f07a50c7d008b6d311aeedfb4939 translated +#[test] +fn get_outfit_wearing_nothing() { + assert!(empty_tree_query("@getoutfit=1234", "0000000000000000")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_ExternalItems::test f88d149572ae35e880f16a5a92b4a9db73a3f26c5e8e61e4b1c01440151bd64b translated +#[test] +fn get_outfit_external_items() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + let folder = "12312312-aaaa-4aaa-8aaa-aaaaaaaaaaaa"; + install_inventory( + &h, + tree, + vec![ + external_item( + "12312312-0001-4aaa-8aaa-aaaaaaaaaaaa", + "External Tattoo", + folder, + None, + None, + Some(RlvWearableType::Tattoo), + ), + external_item( + "12312312-0002-4aaa-8aaa-aaaaaaaaaaaa", + "External Jaw Thing", + folder, + Some(RlvAttachmentPoint::Jaw), + Some("12312312-0002-4aaa-8aaa-ffffffffffff"), + None, + ), + ], + ); + assert!(query_matches(&h, "@getoutfit=1234", "0000000000000010")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingSomeItems::test 4e9ef77ab72f1fd16c4fad69f00eb80ab46421597d41b61df80b1f87370f42d3 translated +#[test] +fn get_outfit_wearing_some_items() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + let folder = "cccccccc-cccc-4ccc-8ccc-cccccccccccc"; + install_inventory( + &h, + tree, + vec![ + external_item( + "c0000000-cccc-4ccc-8ccc-cccccccccccc", + "My Socks", + folder, + None, + None, + Some(RlvWearableType::Socks), + ), + external_item( + "c0000001-cccc-4ccc-8ccc-cccccccccccc", + "My Hair", + folder, + None, + None, + Some(RlvWearableType::Hair), + ), + ], + ); + assert!(query_matches(&h, "@getoutfit=1234", "0000001000010000")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingEverything::test a840b239174cdb5dee4beb875bf9129209af3ba310564319528ad5b19764aae0 translated +#[test] +fn get_outfit_wearing_everything() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + let folder = "99999999-9999-4999-8999-999999999999"; + let external = WEARABLES + .into_iter() + .map(|wearable| { + external_item( + &format!("c{:07}-cccc-4ccc-8ccc-cccccccccccc", wearable as i32), + &format!("External {wearable:?}"), + folder, + None, + None, + Some(wearable), + ) + }) + .collect(); + install_inventory(&h, tree, external); + assert!(query_matches(&h, "@getoutfit=1234", "1111111111111111")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_Specific_Exists::test a402fd67ed8ddfc12d09863f08f9b15b34262ffa12b4b5aa965826eac89abae5 translated +#[test] +fn get_outfit_specific_exists() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + install_inventory( + &h, + tree, + vec![external_item( + "c0000000-cccc-4ccc-8ccc-cccccccccccc", + "My Socks", + "cccccccc-cccc-4ccc-8ccc-cccccccccccc", + None, + None, + Some(RlvWearableType::Socks), + )], + ); + assert!(query_matches(&h, "@getoutfit:socks=1234", "1")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_Specific_NotExists::test d7e891a620b5e5407fe337f507874b63eb5a21589767a01362bd8bc43d19ba4a translated +#[test] +fn get_outfit_specific_not_exists() { + let h = harness(); + let tree = SampleInventoryTree::build().unwrap(); + install_inventory( + &h, + tree, + vec![external_item( + "c0000001-cccc-4ccc-8ccc-cccccccccccc", + "My Hair", + "cccccccc-cccc-4ccc-8ccc-cccccccccccc", + None, + None, + Some(RlvWearableType::Hair), + )], + ); + assert!(query_matches(&h, "@getoutfit:socks=1234", "0")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_BySender::test e7e87c01e83967a7160509d76f49d2a4b18d34b9b3fbed370c174d64ddb2c2b5 translated +#[test] +fn get_path_new_by_sender() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + attach(&mut tree.party_hat, RlvAttachmentPoint::Spine, PRIM1); + install_inventory(&h, tree, vec![]); + assert!(block_on(h.process_from("@getpathnew=1234", PRIM1, "Party Hat (Spine)")).unwrap()); + assert_eq!( + h.actions.lock().unwrap().replies, + vec![(1234, "Clothing/Hats".into())] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByUUID::test 3a7d242966286258ed075c8e5c69eaf54ba0e71b8607432615a1199f5aeb6dcf translated +#[test] +fn get_path_new_by_uuid() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + attach(&mut tree.party_hat, RlvAttachmentPoint::Spine, PRIM1); + install_inventory(&h, tree, vec![]); + assert!(query_matches( + &h, + &format!("@getpathnew:{PRIM1}=1234"), + "Clothing/Hats" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByUUID_Unknown::test c3c206661594026c36dfcfea110631548cd362d824db268c170e4d04b24b674a translated +#[test] +fn get_path_new_by_unknown_uuid() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.fancy_hat.set_attached_to(None); + tree.party_hat.set_attached_to(None); + tree.business_pants.set_attached_to(None); + tree.happy_shirt.set_attached_to(None); + tree.glasses.set_attached_to(None); + tree.retro_pants.set_worn_on(None); + tree.watch.set_worn_on(None); + install_inventory(&h, tree, vec![]); + assert!(query_matches( + &h, + "@getpathnew:BADBADBA-DBAD-4BAD-8BAD-BADBADBADBAD=1234", + "", + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByAttach::test f8858e6141b660cec8a09c016891f2275dd9364157b1aa614b63fca5abb7620c translated +#[test] +fn get_path_new_by_attachment_point() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + attach(&mut tree.business_pants, RlvAttachmentPoint::Pelvis, PRIM1); + attach(&mut tree.fancy_hat, RlvAttachmentPoint::Groin, PRIM2); + attach(&mut tree.glasses, RlvAttachmentPoint::Groin, PRIM3); + install_inventory(&h, tree, vec![]); + assert!(query_matches( + &h, + "@getpathnew:groin=1234", + "Accessories,Clothing/Hats" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByWorn::test eed31d9aaf34578368cc4f590de1da7f47e3f6c5e663215866f7f8e6946f974b translated +#[test] +fn get_path_new_by_wearable() { + let h = harness(); + let mut tree = SampleInventoryTree::build().unwrap(); + tree.retro_pants + .set_worn_on(Some(Some(RlvWearableType::Tattoo))); + tree.fancy_hat + .set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.watch.set_worn_on(Some(Some(RlvWearableType::Pants))); + install_inventory(&h, tree, vec![]); + assert!(query_matches( + &h, + "@getpathnew:pants=1234", + "Accessories,Clothing/Hats" + )); +} diff --git a/tests/compat/tests/rlv_notify_semantics.rs b/tests/compat/tests/rlv_notify_semantics.rs new file mode 100644 index 0000000..d6884b8 --- /dev/null +++ b/tests/compat/tests/rlv_notify_semantics.rs @@ -0,0 +1,495 @@ +// Exact Rust translations of NotifyQueryTests. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, guid}; +use libremetaverse_rlv::{RlvAttachmentPoint, RlvWearableType}; + +const ITEM_1: &str = "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"; +const ITEM_2: &str = "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const ITEM_3: &str = "cccccccc-cccc-4ccc-8ccc-cccccccccccc"; +const PRIM: &str = "aaaaaaaa-aaaa-4aaa-8aaa-ffffffffffff"; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn process(h: &RlvHarness, commands: &[&str]) { + for command in commands { + block_on(h.process(command)).unwrap(); + } +} + +fn replies_match(h: &RlvHarness, expected: &[(i32, &str)]) -> bool { + h.actions.lock().unwrap().replies + == expected + .iter() + .map(|(channel, text)| (*channel, (*text).into())) + .collect::>() +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.Notify::test 082ff4cd00faf29a73aca158d4e24ed9fd3e7844ed6cefbf962d8727846a3c27 translated +#[test] +fn notify_every_restriction() { + let h = harness(); + process( + &h, + &[ + "@notify:1234=add", + "@sendim=n", + "@alwaysrun=n", + "@sendim:group_name=add", + ], + ); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/sendim=n"), + (1234, "/alwaysrun=n"), + (1234, "/sendim:group_name=n"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyFiltered::test e00e51aeadd0d7a107105684129a6ae74fbf918be4c563d92d7cdaa223d2c03c translated +#[test] +fn notify_filtered() { + let h = harness(); + process( + &h, + &[ + "@notify:1234;run=add", + "@sendim=n", + "@alwaysrun=n", + "@sendim:group_name=add", + ], + ); + assert!(replies_match(&h, &[(1234, "/alwaysrun=n")])); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiCommand::test 77f3950214a1bd1e3816fa6f7b0ca69727e9e18be5fb7b37f19490408ca023dc translated +#[test] +fn notify_multi_command() { + let h = harness(); + process( + &h, + &[ + "@notify:1234=add", + "@sendim=n,sendim:group_name=add,alwaysrun=n", + ], + ); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/sendim=n"), + (1234, "/sendim:group_name=n"), + (1234, "/alwaysrun=n"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiChannels::test 12a0a6e0a0a6632960de98236670e063f2c1aa16cf6b6c8d718bde0e0abfd9b9 translated +#[test] +fn notify_multiple_channels() { + let h = harness(); + process(&h, &["@notify:1234=add", "@notify:12345=add", "@sendim=n"]); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/notify:12345=n"), + (12345, "/notify:12345=n"), + (1234, "/sendim=n"), + (12345, "/sendim=n"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiChannelsFiltered::test bff8ca8465c2299d0d2ef60adfa4164270d08cee7223361bb27b86a7e4daeec9 translated +#[test] +fn notify_multiple_channels_filtered() { + let h = harness(); + process( + &h, + &["@notify:1234=add", "@notify:12345;im=add", "@sendim=n"], + ); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/notify:12345;im=n"), + (1234, "/sendim=n"), + (12345, "/sendim=n"), + ], + )); +} + +fn notify_synonym(command: &str, expected_reply: &str) -> bool { + let h = harness(); + process(&h, &["@notify:1234=add", command]); + replies_match(&h, &[(1234, "/notify:1234=n"), (1234, expected_reply)]) +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:9e893d263294d04d 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 translated +#[test] +fn notify_camdistmax() { + assert!(notify_synonym("@camdistmax:123=n", "/camdistmax:123=n")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:fc6b17eb4e9e7a00 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 translated +#[test] +fn notify_setcam_avdistmax() { + assert!(notify_synonym( + "@setcam_avdistmax:123=n", + "/setcam_avdistmax:123=n" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:b37376c5865a6fe8 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 translated +#[test] +fn notify_camdistmin() { + assert!(notify_synonym("@camdistmin:123=n", "/camdistmin:123=n")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:5d497faea315b624 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 translated +#[test] +fn notify_setcam_avdistmin() { + assert!(notify_synonym( + "@setcam_avdistmin:123=n", + "/setcam_avdistmin:123=n" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:282fa0139ccbba29 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 translated +#[test] +fn notify_camunlock() { + assert!(notify_synonym("@camunlock=n", "/camunlock=n")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:f08c6eb7b4d12fac 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 translated +#[test] +fn notify_setcam_unlock() { + assert!(notify_synonym("@setcam_unlock=n", "/setcam_unlock=n")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:37f0f73ed7492dd0 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 translated +#[test] +fn notify_camtextures() { + assert!(notify_synonym( + "@camtextures:1cdbc6a2-ae6b-3130-9348-3d3b1ca84c53=n", + "/camtextures:1cdbc6a2-ae6b-3130-9348-3d3b1ca84c53=n", + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:d75917941e63732c 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 translated +#[test] +fn notify_touchfar() { + assert!(notify_synonym("@touchfar:5=n", "/touchfar:5=n")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:2f72da33fdbcd8be 6cf84f004648f8b5304bf7fc7fab7ac8b1f8f7da8c605c06daa68d3a1280cd67 translated +#[test] +fn notify_fartouch() { + assert!(notify_synonym("@fartouch:5=n", "/fartouch:5=n")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyClear_Filtered::test f3e0550a53faca13679421318eee85f010c1b8668e3edfae6e2548d39dbcafd7 translated +#[test] +fn notify_clear_filtered() { + let h = harness(); + process(&h, &["@notify:1234=add", "@fly=n", "@clear=fly"]); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/fly=n"), + (1234, "/fly=y"), + (1234, "/clear:fly"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyClear::test 61d7419956a83be04eeb13557c6a2120419b2f0f1c529149c4fb57871bb6506e translated +#[test] +fn notify_clear() { + let h = harness(); + block_on(h.process_from("@notify:1234=add", ITEM_3, "Main")).unwrap(); + process(&h, &["@fly=n", "@clear"]); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/fly=n"), + (1234, "/fly=y"), + (1234, "/clear"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyInventoryOffer::test 2bbac63ab86ec77f6d0a4558a14ee913a7f44930364476a89e02cd5ec80191b9 translated +#[test] +fn notify_inventory_offer() { + let h = harness(); + process(&h, &["@notify:1234=add"]); + block_on( + h.service + .report_inventory_offer_accepted("#RLV/~MyCuffs".into(), None), + ) + .unwrap(); + block_on( + h.service + .report_inventory_offer_accepted("Objects/New Folder (3)".into(), None), + ) + .unwrap(); + block_on( + h.service + .report_inventory_offer_declined("#RLV/Foo/Bar".into(), None), + ) + .unwrap(); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/accepted_in_rlv inv_offer ~MyCuffs"), + (1234, "/accepted_in_inv inv_offer Objects/New Folder (3)"), + (1234, "/declined inv_offer Foo/Bar"), + ], + )); +} + +fn report_sit_and_unsit(h: &RlvHarness) { + block_on(h.service.report_sit(Some(Some(guid(ITEM_3))), None)).unwrap(); + block_on(h.service.report_unsit(Some(Some(guid(ITEM_3))), None)).unwrap(); + block_on(h.service.report_sit(None, None)).unwrap(); + block_on(h.service.report_unsit(None, None)).unwrap(); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySitStandLegal::test 83a07a88a0386982c854a0223b64dd5c417f1a55a038e4ceba8f487983daadaf translated +#[test] +fn notify_sit_and_stand_legal() { + let h = harness(); + process(&h, &["@notify:1234=add"]); + report_sit_and_unsit(&h); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + ( + 1234, + "/sat object legally 11111111-1111-4111-8111-111111111111", + ), + ( + 1234, + "/unsat object legally 11111111-1111-4111-8111-111111111111", + ), + (1234, "/sat ground legally"), + (1234, "/unsat ground legally"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySitStandWithRestrictions::test 166e2087aa0652bdd427e1908bc338659ec1d4dc8065c016612696d1f5dfd000 translated +#[test] +fn notify_sit_and_stand_illegal() { + let h = harness(); + process(&h, &["@sit=n", "@unsit=n", "@notify:1234=add"]); + report_sit_and_unsit(&h); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + ( + 1234, + "/sat object illegally 11111111-1111-4111-8111-111111111111", + ), + ( + 1234, + "/unsat object illegally 11111111-1111-4111-8111-111111111111", + ), + (1234, "/sat ground illegally"), + (1234, "/unsat ground illegally"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyWear::test 9529acb9f3e1c335a50f8de6d63cc5711921de962546ff868811279d05826399 translated +#[test] +fn notify_wear_legal() { + let h = harness(); + process(&h, &["@notify:1234=add"]); + block_on( + h.service + .report_item_worn(guid(ITEM_2), false, RlvWearableType::Skin, None), + ) + .unwrap(); + block_on( + h.service + .report_item_worn(guid(ITEM_3), true, RlvWearableType::Tattoo, None), + ) + .unwrap(); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/worn legally skin"), + (1234, "/worn legally tattoo"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyWear_Illegal::test 65bfc1db698470cf56dd8c6811e85ae373d1fca95cdbf82be66b7e32da311a2f translated +#[test] +fn notify_wear_illegal() { + let h = harness(); + process(&h, &["@addoutfit:skin=n", "@notify:1234=add"]); + block_on( + h.service + .report_item_worn(guid(ITEM_1), false, RlvWearableType::Skin, None), + ) + .unwrap(); + assert!(replies_match( + &h, + &[(1234, "/notify:1234=n"), (1234, "/worn illegally skin")], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyUnWear::test 340b60b8038dcd55320dc9aedc16beb9193e731ba7b659ca3cb2951a2d19b7ac translated +#[test] +fn notify_unwear_legal() { + let h = harness(); + process(&h, &["@notify:1234=add"]); + block_on(h.service.report_item_unworn( + guid(ITEM_1), + guid(ITEM_2), + false, + RlvWearableType::Skin, + None, + )) + .unwrap(); + block_on(h.service.report_item_unworn( + guid(ITEM_1), + guid(ITEM_3), + true, + RlvWearableType::Tattoo, + None, + )) + .unwrap(); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/unworn legally skin"), + (1234, "/unworn legally tattoo"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyUnWear_illegal::test e7056e6e145430eb2180edb92593f59c07bcbdfa21629b1ca29ac93b2fca975e translated +#[test] +fn notify_unwear_illegal() { + let h = harness(); + process(&h, &["@remoutfit:skin=n", "@notify:1234=add"]); + block_on(h.service.report_item_unworn( + guid(ITEM_1), + guid(ITEM_1), + false, + RlvWearableType::Skin, + None, + )) + .unwrap(); + assert!(replies_match( + &h, + &[(1234, "/notify:1234=n"), (1234, "/unworn illegally skin")], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyAttached::test dc5239c77b9169cf3833c5a1dc765b381efe833f15b34ac7e57173c0a640942a translated +#[test] +fn notify_attached_legal() { + let h = harness(); + process(&h, &["@notify:1234=add"]); + block_on( + h.service + .report_item_attached(guid(ITEM_1), false, RlvAttachmentPoint::Chest, None), + ) + .unwrap(); + block_on(h.service.report_item_attached( + guid(ITEM_2), + true, + RlvAttachmentPoint::AvatarCenter, + None, + )) + .unwrap(); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/attached legally Chest"), + (1234, "/attached legally Avatar Center"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyAttached_Illegal::test b56de057dece9cb8ece795d13d6bc42e7825d62f09f967f37a4dbf262d2b4456 translated +#[test] +fn notify_attached_illegal() { + let h = harness(); + process(&h, &["@addattach:chest=n", "@notify:1234=add"]); + block_on( + h.service + .report_item_attached(guid(ITEM_1), false, RlvAttachmentPoint::Chest, None), + ) + .unwrap(); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/attached illegally Chest"), + ], + )); +} + +fn report_detached(h: &RlvHarness, folder: &str, shared: bool, point: RlvAttachmentPoint) { + block_on(h.service.report_item_detached( + guid(ITEM_1), + guid(PRIM), + guid(folder), + shared, + point, + None, + )) + .unwrap(); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyDetached::test a741cec23a985028b3dc2b09195255276a96e4f07fc4fe5f8cca6c1e3c940d71 translated +#[test] +fn notify_detached_legal() { + let h = harness(); + process(&h, &["@notify:1234=add"]); + report_detached(&h, ITEM_2, false, RlvAttachmentPoint::Chest); + report_detached(&h, ITEM_3, true, RlvAttachmentPoint::Skull); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/detached legally Chest"), + (1234, "/detached legally Skull"), + ], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyDetached_Illegal::test 1a4c9475a3b91a975b9861685dcaf899505b4f6727257618f9add9cecd3df54d translated +#[test] +fn notify_detached_illegal() { + let h = harness(); + process(&h, &["@remattach:chest=n", "@notify:1234=add"]); + report_detached(&h, ITEM_1, false, RlvAttachmentPoint::Chest); + assert!(replies_match( + &h, + &[ + (1234, "/notify:1234=n"), + (1234, "/detached illegally Chest"), + ], + )); +} diff --git a/tests/compat/tests/rlv_permissions_semantics.rs b/tests/compat/tests/rlv_permissions_semantics.rs new file mode 100644 index 0000000..76a55e3 --- /dev/null +++ b/tests/compat/tests/rlv_permissions_semantics.rs @@ -0,0 +1,225 @@ +// Exact Rust translation of LibreMetaverse.Tests/RLV/PermissionsTests.cs. + +use libremetaverse_compat_tests::rlv_support::{RlvHarness, guid}; +use libremetaverse_rlv::{ + RlvPermissionsServiceHoverTextLocation as HoverTextLocation, + RlvPermissionsServiceObjectLocation as ObjectLocation, +}; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn hover_text_defaults() -> [bool; 2] { + let permissions = harness().service.permissions(); + let object = Some(Some(guid("00000000-0000-4000-8000-000000000000"))); + [ + permissions + .can_show_hover_text(HoverTextLocation::World, object) + .unwrap(), + permissions + .can_show_hover_text(HoverTextLocation::Hud, object) + .unwrap(), + ] +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CamZoomMin_Default::test 662b332d66c72caecc1a179730bc2524b9da16aa85f7289bebd31842610ceccc translated +#[test] +fn camera_zoom_min_defaults_to_none() { + assert!( + harness() + .service + .permissions() + .get_camera_restrictions() + .unwrap() + .zoom_min() + .flatten() + .is_none() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextWorld_Default::test 380d1e30bd9ded04329bfd6d65ba447a8dd45a934cfa875628253719bb0e69ce translated +#[test] +fn can_show_hover_text_world_defaults_true() { + assert_eq!(hover_text_defaults(), [true, true]); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextHud_Default::test a0af1f72f417cfa451284b7a3dbbb26d378e7eb9896dde3b6df0d0a2e4773f38 translated +#[test] +fn can_show_hover_text_hud_defaults_true() { + assert_eq!(hover_text_defaults(), [true, true]); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverText_Default::test c4122dbf650f51bde55dfda412a884347a78d3cd09dd2bb0fcbe4a7e74a1fff6 translated +#[test] +fn can_show_hover_text_defaults_true() { + assert_eq!(hover_text_defaults(), [true, true]); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextAll_Default::test 0ed67c5566d038f770eb9f5df6aa0b5394d7d94cf7c397fa8089b419f872c681 translated +#[test] +fn can_show_all_hover_text_defaults_true() { + assert_eq!(hover_text_defaults(), [true, true]); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowNameTags_Default::test 0781be94eb099d9aed1be2ff313856770d1ec24047d04c81c69219c743b4c8cb translated +#[test] +fn can_show_name_tags_defaults_true() { + let permissions = harness().service.permissions(); + assert!(permissions.can_show_name_tags(None).unwrap()); + assert!( + permissions + .can_show_name_tags(Some(Some(guid("aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa")))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShare_Default::test e827d549d1d9329b63db159446937735ead13eed5d3eaa59440d3c686182f517 translated +#[test] +fn can_share_defaults_true() { + let permissions = harness().service.permissions(); + assert!(permissions.can_share(None).unwrap()); + assert!( + permissions + .can_share(Some(Some(guid("aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa")))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowNames_Default::test 56492cdd0802c5f8ed2a0f6d56abaf8186e37dd7b888904db52be97f9137279a translated +#[test] +fn can_show_names_defaults_true() { + let permissions = harness().service.permissions(); + assert!(permissions.can_show_names(None).unwrap()); + assert!( + permissions + .can_show_names(Some(Some(guid("aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa")))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanEdit_Default::test 417fb9f3eb3e70f3bd33710d11fb25eacd0db0a365b0ed2dec6778d09968f44b translated +#[test] +fn can_edit_defaults_true_for_all_locations_and_ids() { + let permissions = harness().service.permissions(); + let object = Some(Some(guid("00000000-0000-4000-8000-000000000000"))); + for location in [ + ObjectLocation::Hud, + ObjectLocation::Attached, + ObjectLocation::RezzedInWorld, + ] { + assert!(permissions.can_edit(location, None).unwrap()); + assert!(permissions.can_edit(location, object).unwrap()); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanRecvChat_Default::test b1ec48da83249b1141c3af926cd494373c47214d6a145916a8833d49edd155e2 translated +#[test] +fn can_receive_chat_defaults_true() { + let permissions = harness().service.permissions(); + assert!( + permissions + .can_receive_chat( + "Hello world".into(), + guid("aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"), + ) + .unwrap() + ); + assert!( + permissions + .can_receive_chat( + "/me says Hello world".into(), + guid("bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb"), + ) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanAutoAcceptTpRequest_Default::test abbcccb4415afdb6558f40a6d4030704f64442f019d065fef8a7a56a407e8642 translated +#[test] +fn auto_accept_tp_request_defaults_false() { + let permissions = harness().service.permissions(); + for user in [ + Some(Some(guid("00000000-0000-4000-8000-000000000000"))), + Some(Some(guid("11111111-1111-4111-8111-111111111111"))), + None, + ] { + assert!(!permissions.is_auto_accept_tp_request(user).unwrap()); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanTpRequest_Default::test aefc51023a5274d402dae0e8111a0776622dc431754c3d1f0ce240a50dfd405d translated +#[test] +fn can_tp_request_defaults_true() { + let permissions = harness().service.permissions(); + assert!(permissions.can_tp_request(None).unwrap()); + assert!( + permissions + .can_tp_request(Some(Some(guid("aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa")))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanAutoAcceptTp_Default::test 553245a5381689a7f1c6398cb0ca50510f9089b9bdc797672ae35fb5822fdf8e translated +#[test] +fn auto_accept_tp_defaults_false() { + let permissions = harness().service.permissions(); + for user in [ + Some(Some(guid("00000000-0000-4000-8000-000000000000"))), + Some(Some(guid("11111111-1111-4111-8111-111111111111"))), + None, + ] { + assert!(!permissions.is_auto_accept_tp(user).unwrap()); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanChat_Default::test a9b0e4f8713991ce8b9b61d750c086d56da432dbddd533ec63dc0604238831a1 translated +#[test] +fn can_chat_defaults_true() { + let permissions = harness().service.permissions(); + for (channel, message) in [(0, "Hello"), (0, "/me says Hello"), (5, "Hello")] { + assert!(permissions.can_chat(channel, message.into()).unwrap()); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanSendIM_Default::test 6cc5238ded59b80408c59c9e77ded1162e370c295b846903dbcc87f74175cd55 translated +#[test] +fn can_send_im_defaults_true() { + let permissions = harness().service.permissions(); + let user = Some(Some(guid("00000000-0000-4000-8000-000000000000"))); + assert!(permissions.can_send_im("Hello".into(), user, None).unwrap()); + assert!( + permissions + .can_send_im("Hello".into(), user, Some("Group Name".into())) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanStartIM_Default::test c6d6db79b0939b33eb5fd29490474575e062f796160f4a69aab34ccefc1842cb translated +#[test] +fn can_start_im_defaults_true() { + assert!( + harness() + .service + .permissions() + .can_start_im(guid("00000000-0000-4000-8000-000000000000")) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanReceiveIM_Default::test 23c1c79ae9eba016a48f3e9097fc26283223c9e120308d93fe53ce591ee5691c translated +#[test] +fn can_receive_im_defaults_true() { + let permissions = harness().service.permissions(); + let user = Some(Some(guid("00000000-0000-4000-8000-000000000000"))); + assert!( + permissions + .can_receive_im("Hello".into(), user, None) + .unwrap() + ); + assert!( + permissions + .can_receive_im("Hello".into(), user, Some("Group Name".into())) + .unwrap() + ); +} diff --git a/tests/compat/tests/rlv_query_basics_semantics.rs b/tests/compat/tests/rlv_query_basics_semantics.rs new file mode 100644 index 0000000..92d96ff --- /dev/null +++ b/tests/compat/tests/rlv_query_basics_semantics.rs @@ -0,0 +1,315 @@ +// Exact Rust translations of the basic RLV query tests. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SENDER_ID, guid}; +use libremetaverse_rlv::RlvService; + +const OTHER_SENDER: &str = "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"; +const SIT_ID: &str = "00000000-0000-4000-8000-000000000000"; +const TP_EXCEPTION: &str = "3d6181b0-6a4b-97ef-18d8-722652995cf1"; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn seed_blacklist(h: &RlvHarness, seed: &str) { + for behavior in seed.split(',').filter(|behavior| !behavior.is_empty()) { + h.service + .blacklist() + .blacklist_behavior(behavior.into()) + .unwrap(); + } +} + +fn assert_reply(h: &RlvHarness, expected: &str) { + assert_eq!( + h.actions.lock().unwrap().replies, + vec![(1234, expected.into())] + ); +} + +fn get_blacklist_matches(command: &str, seed: &str, expected: &str) -> bool { + let h = harness(); + seed_blacklist(&h, seed); + block_on(h.process(&format!("{command}=1234"))).unwrap(); + h.actions.lock().unwrap().replies == vec![(1234, expected.into())] +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:8e1b820c1f2bd3cd 3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765 translated +#[test] +fn get_blacklist_all() { + assert!(get_blacklist_matches( + "@getblacklist", + "sendim,recvim", + "recvim,sendim" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:64136cd82156035a 3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765 translated +#[test] +fn get_blacklist_im_filter() { + assert!(get_blacklist_matches( + "@getblacklist:im", + "sendim,recvim", + "recvim,sendim" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:2068bf7f0a131fe8 3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765 translated +#[test] +fn get_blacklist_send_filter() { + assert!(get_blacklist_matches( + "@getblacklist:send", + "sendim,recvim", + "sendim" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:b86b0c5e67f981c2 3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765 translated +#[test] +fn get_blacklist_unmatched_filter() { + assert!(get_blacklist_matches( + "@getblacklist:tpto", + "sendim,recvim", + "" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:123b930bb970a1f1 3faf1c80c07da463d139f13d4ed9deba67b160a29d3001437f2e2794940a7765 translated +#[test] +fn get_blacklist_empty() { + assert!(get_blacklist_matches("@getblacklist", "", "")); +} + +fn manual_blacklist_matches(seed: &str, expected: &str) -> bool { + let mut h = harness(); + h.service.set_enable_instant_message_processing(true); + seed_blacklist(&h, seed); + block_on( + h.service + .process_instant_message("@getblacklist".into(), guid(SENDER_ID), None), + ) + .unwrap(); + h.actions.lock().unwrap().instant_messages == vec![(guid(SENDER_ID), expected.into())] +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.ManualBlacklist::case:f14641dea0f1de93 4ef9ab9bc3165b99ef6b9cf6ae563210660e83fccf946376217c300a752c724e translated +#[test] +fn manual_blacklist_all() { + assert!(manual_blacklist_matches("sendim,recvim", "recvim,sendim")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.ManualBlacklist::case:d25c660357f6ccff 4ef9ab9bc3165b99ef6b9cf6ae563210660e83fccf946376217c300a752c724e translated +#[test] +fn manual_blacklist_empty() { + assert!(manual_blacklist_matches("", "")); +} + +fn debug_matches(setting_name: &str, setting_value: &str) -> bool { + let h = harness(); + h.queries + .lock() + .unwrap() + .debug_settings + .insert(setting_name.to_lowercase(), setting_value.into()); + block_on(h.process(&format!("@getdebug_{setting_name}=1234"))).unwrap() + && h.actions.lock().unwrap().replies == vec![(1234, setting_value.into())] +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs::GetDebugQueryTests.GetDebug_Default::case:fa77559e30768d15 6554db3b0455887c0224a6f91c7830d6cbf38d5520a65a9b17e26280fcc291f7 translated +#[test] +fn get_debug_known_setting() { + assert!(debug_matches( + "RenderResolutionDivisor", + "RenderResolutionDivisor Success" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs::GetDebugQueryTests.GetDebug_Default::case:55694f25ed879d95 6554db3b0455887c0224a6f91c7830d6cbf38d5520a65a9b17e26280fcc291f7 translated +#[test] +fn get_debug_unknown_setting() { + assert!(debug_matches("Unknown Setting", "Unknown Setting Success")); +} + +fn environment_matches(setting_name: &str, setting_value: &str) -> bool { + let h = harness(); + h.queries + .lock() + .unwrap() + .environment_settings + .insert(setting_name.to_lowercase(), setting_value.into()); + block_on(h.process(&format!("@getenv_{setting_name}=1234"))).unwrap() + && h.actions.lock().unwrap().replies == vec![(1234, setting_value.into())] +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs::GetEnvQueryTests.GetEnv_Default::case:f656b648d00a6d91 cf4270c6c3417690afcf43982c3bdcf815f46ce81f9b6ccaf59377c633a64881 translated +#[test] +fn get_environment_known_setting() { + assert!(environment_matches("Daytime", "Daytime Success")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs::GetEnvQueryTests.GetEnv_Default::case:55694f25ed879d95 cf4270c6c3417690afcf43982c3bdcf815f46ce81f9b6ccaf59377c633a64881 translated +#[test] +fn get_environment_unknown_setting() { + assert!(environment_matches( + "Unknown Setting", + "Unknown Setting Success" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs::GetGroupQueryTests.GetGroup_Default::test da65b184d0ef1380274e8e4dfa199c125a1a192b9e76f8fec1d406df18186169 translated +#[test] +fn get_active_group() { + let h = harness(); + h.queries.lock().unwrap().active_group = Some("Group Name".into()); + assert!(block_on(h.process("@getgroup=1234")).unwrap()); + assert_reply(&h, "Group Name"); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs::GetGroupQueryTests.GetGroup_NoGroup::test d1da37ae52bd94dac9cd6e031525b57f31ca7e9dc00a69a6e0c4e753741dc9e8 translated +#[test] +fn get_group_without_active_group() { + let h = harness(); + assert!(block_on(h.process("@getgroup=1234")).unwrap()); + assert_reply(&h, "none"); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs::GetSitIdQueryTests.GetSitID::test bfbf6d62c09c4878504aa529805a29fe9689d1e29e7ca3d44bf2346d6b3fbe6b translated +#[test] +fn get_sit_id_when_not_sitting() { + let h = harness(); + block_on(h.process("@getsitid=1234")).unwrap(); + assert_reply(&h, "NULL_KEY"); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs::GetSitIdQueryTests.GetSitID_Default::test 456f8f22b1d2917c3729ed600bdf0b693c0189bd100b9863f4b42b07259110b0 translated +#[test] +fn get_current_sit_id() { + let h = harness(); + h.queries.lock().unwrap().sit_id = Some(guid(SIT_ID)); + block_on(h.process("@getsitid=1234")).unwrap(); + assert_reply(&h, SIT_ID); +} + +fn seed_status(h: &RlvHarness) { + block_on(h.process("@fly=n")).unwrap(); + block_on(h.process("@tplure=n")).unwrap(); + block_on(h.process(&format!("@tplure:{TP_EXCEPTION}=add"))).unwrap(); + block_on(h.process_from("@tplocal=n", OTHER_SENDER, "Sender 2")).unwrap(); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetStatusAllQueryTests.cs::GetStatusAllQueryTests.GetStatusAll::test ee8fac8485db2b5c01abf8664364ca1e13214243f1e661a04d93df680422d596 translated +#[test] +fn get_status_all_senders() { + let h = harness(); + seed_status(&h); + block_on(h.process("@getstatusall=1234")).unwrap(); + assert_reply( + &h, + "/fly/tplure/tplure:3d6181b0-6a4b-97ef-18d8-722652995cf1/tplocal", + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus::test c538e68277e93b40374dfd86bde9be00e0b82dfad7f4573cc4b0660f15fa5fe4 translated +#[test] +fn get_status_for_sender() { + let h = harness(); + seed_status(&h); + block_on(h.process("@getstatus=1234")).unwrap(); + assert_reply( + &h, + "/fly/tplure/tplure:3d6181b0-6a4b-97ef-18d8-722652995cf1", + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus_filtered::test 574b7f7c37b4e09e4257e5b02d50b222054216e34b6d1dd3fe6b26127c89b562 translated +#[test] +fn get_status_filtered() { + let h = harness(); + seed_status(&h); + block_on(h.process("@getstatus:tp=1234")).unwrap(); + assert_reply(&h, "/tplure/tplure:3d6181b0-6a4b-97ef-18d8-722652995cf1"); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus_customSeparator::test 3bec2e53ea88857d4a1ae8cd6bc6f235f24e00d0773c24ca75a1892adb803527 translated +#[test] +fn get_status_custom_separator() { + let h = harness(); + seed_status(&h); + block_on(h.process("@getstatus:; ! =1234")).unwrap(); + assert_reply( + &h, + " ! fly ! tplure ! tplure:3d6181b0-6a4b-97ef-18d8-722652995cf1", + ); +} + +fn version_num_blacklist_matches(seed: &str, expected: &str) -> bool { + let h = harness(); + seed_blacklist(&h, seed); + block_on(h.process("@versionnumbl=1234")).unwrap(); + h.actions.lock().unwrap().replies == vec![(1234, expected.into())] +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs::VersionNumBlQueryTests.VersionNumBL::case:478968a5d14830de 0dbc89f77a6f293efcca217febb2f6b8d224f9ac5e1d6532a56a7df64a7be6e9 translated +#[test] +fn version_number_without_blacklist() { + assert!(version_num_blacklist_matches( + "", + RlvService::RLV_VERSION_NUM + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs::VersionNumBlQueryTests.VersionNumBL::case:8c124ee42e9ab944 0dbc89f77a6f293efcca217febb2f6b8d224f9ac5e1d6532a56a7df64a7be6e9 translated +#[test] +fn version_number_with_blacklist() { + assert!(version_num_blacklist_matches( + "sendim,recvim", + "2040213,recvim,sendim" + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.ManualVersion::test 6f8493b201d69e1449d8311e434736f6f6b2bad04c9fe9c6adf94a94d9cbe597 translated +#[test] +fn manual_version() { + let mut h = harness(); + h.service.set_enable_instant_message_processing(true); + block_on( + h.service + .process_instant_message("@version".into(), guid(SENDER_ID), None), + ) + .unwrap(); + assert_eq!( + h.actions.lock().unwrap().instant_messages, + vec![(guid(SENDER_ID), RlvService::RLV_VERSION.into())] + ); +} + +fn version_query_matches(command: &str, expected: &str) -> bool { + let h = harness(); + block_on(h.process(&format!("{command}=1234"))).unwrap(); + h.actions.lock().unwrap().replies == vec![(1234, expected.into())] +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:442bdc765ad34e20 f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30 translated +#[test] +fn version_query_standard() { + assert!(version_query_matches("@version", RlvService::RLV_VERSION)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:968af293ea2a53a1 f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30 translated +#[test] +fn version_query_new() { + assert!(version_query_matches( + "@versionnew", + RlvService::RLV_VERSION + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:ae9a221915e6e1bb f8118590cf64832f30e5e3c927bf8cee42c90d82a3e275554e9c36adb7ad5d30 translated +#[test] +fn version_query_number() { + assert!(version_query_matches( + "@versionnum", + RlvService::RLV_VERSION_NUM + )); +} diff --git a/tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs b/tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs new file mode 100644 index 0000000..78db9b4 --- /dev/null +++ b/tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs @@ -0,0 +1,549 @@ +// Exact Rust translations of recursive and folder-targeted attachment restrictions. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SampleInventoryTree, guid}; +use libremetaverse_rlv::{InventoryMap, RlvAttachmentPoint, RlvWearableType}; +use libremetaverse_types::compat::Guid; + +const PRIM_1: &str = "11111111-0001-4aaa-8aaa-ffffffffffff"; +const PRIM_2: &str = "11111111-0002-4aaa-8aaa-ffffffffffff"; +const PRIM_3: &str = "11111111-0003-4aaa-8aaa-ffffffffffff"; + +#[derive(Clone, Copy)] +enum Setup { + None, + PartySpine, + PartyChin, + BusinessPelvis, + BusinessChin, + BusinessChest, + RetroPants, + WatchTattoo, + PartyAndBusinessPelvis, + PartyAndBusinessPelvisDetach, +} + +#[derive(Clone, Copy)] +enum FolderKey { + Clothing, + Hats, + SubHats, + Accessories, +} + +#[derive(Clone, Copy)] +enum LockMode { + Attach, + Detach, +} + +struct FolderIdentity { + clothing: (Guid, String), + hats: (Guid, String), + sub_hats: (Guid, String), + accessories: (Guid, String), +} + +fn apply_setup(tree: &mut SampleInventoryTree, setup: Setup) { + match setup { + Setup::None => {} + Setup::PartySpine => { + tree.party_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Spine))); + tree.party_hat + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + } + Setup::PartyChin => { + tree.party_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.party_hat + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + } + Setup::BusinessPelvis => { + tree.business_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Pelvis))); + tree.business_pants + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + } + Setup::BusinessChin => { + tree.business_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Chin))); + tree.business_pants + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + } + Setup::BusinessChest => { + tree.business_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Chest))); + tree.business_pants + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + } + Setup::RetroPants => tree + .retro_pants + .set_worn_on(Some(Some(RlvWearableType::Pants))), + Setup::WatchTattoo => tree.watch.set_worn_on(Some(Some(RlvWearableType::Tattoo))), + Setup::PartyAndBusinessPelvis => { + tree.party_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Pelvis))); + tree.party_hat + .set_attached_prim_id(Some(Some(guid(PRIM_2)))); + tree.business_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Pelvis))); + tree.business_pants + .set_attached_prim_id(Some(Some(guid(PRIM_1)))); + } + Setup::PartyAndBusinessPelvisDetach => { + tree.party_hat + .set_attached_to(Some(Some(RlvAttachmentPoint::Pelvis))); + tree.party_hat + .set_attached_prim_id(Some(Some(guid(PRIM_1)))); + tree.business_pants + .set_attached_to(Some(Some(RlvAttachmentPoint::Pelvis))); + tree.business_pants + .set_attached_prim_id(Some(Some(guid(PRIM_3)))); + } + } +} + +fn locked_folders_match( + h: &RlvHarness, + identities: &FolderIdentity, + expected: &[FolderKey], + mode: LockMode, +) -> bool { + let locked = h.service.restrictions().get_locked_folders().unwrap(); + if locked.len() != expected.len() { + return false; + } + for key in expected { + let (id, name) = match key { + FolderKey::Clothing => &identities.clothing, + FolderKey::Hats => &identities.hats, + FolderKey::SubHats => &identities.sub_hats, + FolderKey::Accessories => &identities.accessories, + }; + let Some(folder) = locked.get(id) else { + return false; + }; + let common = folder.id() == *id + && folder.name() == *name + && folder.is_locked() + && folder.attach_exceptions().is_empty() + && folder.detach_exceptions().is_empty(); + let mode_matches = match mode { + LockMode::Attach => { + !folder.can_attach() + && folder.can_detach() + && folder.attach_restrictions().len() == 1 + && folder.detach_restrictions().is_empty() + } + LockMode::Detach => { + folder.can_attach() + && !folder.can_detach() + && folder.attach_restrictions().is_empty() + && folder.detach_restrictions().len() == 1 + } + }; + if !common || !mode_matches { + return false; + } + } + true +} + +fn folder_case_matches( + command: &str, + sender: Option<(&str, &str)>, + setup: Setup, + mode: LockMode, + expected_items: [bool; 7], + expected_folders: &[FolderKey], +) -> bool { + let h = RlvHarness::new().expect("RlvService constructor"); + let mut tree = SampleInventoryTree::build().expect("sample inventory tree"); + apply_setup(&mut tree, setup); + let identities = FolderIdentity { + clothing: (tree.clothing.id(), tree.clothing.name()), + hats: (tree.hats.id(), tree.hats.name()), + sub_hats: (tree.sub_hats.id(), tree.sub_hats.name()), + accessories: (tree.accessories.id(), tree.accessories.name()), + }; + h.queries.lock().unwrap().inventory_map = Some(InventoryMap::new(tree.root, vec![]).unwrap()); + for command in command.split(',') { + let processed = sender.map_or_else( + || block_on(h.process(command)), + |(id, name)| block_on(h.process_from(command, id, name)), + ); + if !processed.unwrap() { + return false; + } + } + + let permissions = h.service.permissions(); + let actual = match mode { + LockMode::Attach => [ + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.party_hat, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.fancy_hat, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.business_pants, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.happy_shirt, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.retro_pants, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.glasses, true) + .unwrap(), + permissions + .can_attach_with_rlv_inventory_item_boolean(tree.watch, true) + .unwrap(), + ], + LockMode::Detach => [ + permissions + .can_detach_with_rlv_inventory_item(tree.party_hat) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.fancy_hat) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.business_pants) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.happy_shirt) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.retro_pants) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.glasses) + .unwrap(), + permissions + .can_detach_with_rlv_inventory_item(tree.watch) + .unwrap(), + ], + }; + actual == expected_items && locked_folders_match(&h, &identities, expected_folders, mode) +} + +const HATS_LOCKED: [bool; 7] = [false, false, true, true, true, true, true]; +const CLOTHING_LOCKED: [bool; 7] = [true, true, false, false, false, true, true]; +const CLOTHING_RECURSIVE_LOCKED: [bool; 7] = [false, false, false, false, false, true, true]; +const ACCESSORIES_LOCKED: [bool; 7] = [true, true, true, true, true, false, false]; +const ALL_ALLOWED: [bool; 7] = [true; 7]; + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis::test 39bc0c4581f8277f4d5c90ec715c40f4715b5ae7007a28a04fe762f2f6adfbfd translated +#[test] +fn attach_all_this() { + assert!(folder_case_matches( + "@attachallthis=n", + Some((PRIM_3, "Party Hat (Spine)")), + Setup::PartyChin, + LockMode::Attach, + HATS_LOCKED, + &[FolderKey::Hats, FolderKey::SubHats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive::test d051e7783e79bf91a8092cd2d29cf1aacec3b0af86ecf0c7ca590ce25bc8393c translated +#[test] +fn attach_all_this_recursive() { + assert!(folder_case_matches( + "@attachallthis=n", + Some((PRIM_3, "Business Pants (Pelvis)")), + Setup::BusinessChin, + LockMode::Attach, + CLOTHING_RECURSIVE_LOCKED, + &[FolderKey::Clothing, FolderKey::Hats, FolderKey::SubHats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Path::test b4db2b29ad376777b382f8c6f4f7b62643bb2dd43858de4be69ac2252f18c963 translated +#[test] +fn attach_all_this_recursive_path() { + assert!(folder_case_matches( + "@attachallthis:Clothing=n", + None, + Setup::BusinessChin, + LockMode::Attach, + CLOTHING_RECURSIVE_LOCKED, + &[FolderKey::Clothing, FolderKey::Hats, FolderKey::SubHats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Worn::test 6ecfc6ffe71896979a37dac6dd8149a015b8d3e7e952247954333c053da4961e translated +#[test] +fn attach_all_this_recursive_worn() { + assert!(folder_case_matches( + "@attachallthis:pants=n", + None, + Setup::RetroPants, + LockMode::Attach, + CLOTHING_RECURSIVE_LOCKED, + &[FolderKey::Clothing, FolderKey::Hats, FolderKey::SubHats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached::test 8ac38c77c6bdb03e4cbaa96600bead9a760eb5eec098504b05cfb3a1bdfb8557 translated +#[test] +fn attach_all_this_recursive_attached() { + assert!(folder_case_matches( + "@attachallthis:chest=n", + Some((PRIM_3, "Business Pants (Pelvis)")), + Setup::BusinessChest, + LockMode::Attach, + CLOTHING_RECURSIVE_LOCKED, + &[FolderKey::Clothing, FolderKey::Hats, FolderKey::SubHats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached_AddRem::test 495f288e0fa86059d13a027075700ba6308e9c9d585fa56e3d1adf4a71df912b translated +#[test] +fn attach_all_this_recursive_attached_removed() { + assert!(folder_case_matches( + "@attachallthis:chest=n,@attachallthis:chest=y", + Some((PRIM_3, "Business Pants (Pelvis)")), + Setup::BusinessChest, + LockMode::Attach, + ALL_ALLOWED, + &[], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis::test 3a8a5acc4ad5cbec76737239ea23330a34f54146a4ff9d5d25082c220527a3e4 translated +#[test] +fn attach_this() { + assert!(folder_case_matches( + "@attachthis=n", + Some((PRIM_3, "Party Hat (Spine)")), + Setup::PartySpine, + LockMode::Attach, + HATS_LOCKED, + &[FolderKey::Hats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_NotRecursive::test a5818b4e30d04aba7d6427b2b94e025d34e82eb3bdcb7ac80a23e55f2382ec29 translated +#[test] +fn attach_this_not_recursive() { + assert!(folder_case_matches( + "@attachthis=n", + Some((PRIM_1, "Business Pants (Pelvis)")), + Setup::BusinessPelvis, + LockMode::Attach, + CLOTHING_LOCKED, + &[FolderKey::Clothing], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByPath::test 93e1721f171e24e540160e738f731b895ebd868d840bcdf7c16ba92f6eb4c49a translated +#[test] +fn attach_this_by_path() { + assert!(folder_case_matches( + "@attachthis:Clothing/Hats=n", + None, + Setup::None, + LockMode::Attach, + HATS_LOCKED, + &[FolderKey::Hats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByRlvAttachmentPoint::test 90a562b2c120daa0ea2612befe9e09649bc2ffac59c2cd360fe4a37dedf85ae3 translated +#[test] +fn attach_this_by_attachment_point() { + assert!(folder_case_matches( + "@attachthis:pelvis=n", + None, + Setup::PartyAndBusinessPelvis, + LockMode::Attach, + CLOTHING_RECURSIVE_LOCKED, + &[FolderKey::Clothing, FolderKey::Hats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByWornLayer::test a444d51c2091fa36f1a010e98ad896042aa0262153ea8a833a14dfcbf02de85e translated +#[test] +fn attach_this_by_worn_layer() { + assert!(folder_case_matches( + "@attachthis:tattoo=n", + None, + Setup::WatchTattoo, + LockMode::Attach, + ACCESSORIES_LOCKED, + &[FolderKey::Accessories], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByWornLayer_AddRem::test dd3d9a0d9b56f08f6be7a6200e1f50e834ecc7613de0cdf44ee89262b3abdb30 translated +#[test] +fn attach_this_by_worn_layer_removed() { + assert!(folder_case_matches( + "@attachthis:tattoo=n,@attachthis:tattoo=y", + None, + Setup::WatchTattoo, + LockMode::Attach, + ALL_ALLOWED, + &[], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis::test ee74f952bd602bd23cfc7b203940a902e1b30e02cff60c1abc1f74da964c1f7d translated +#[test] +fn detach_all_this() { + assert!(folder_case_matches( + "@detachallthis=n", + Some((PRIM_3, "Party Hat (Spine)")), + Setup::PartySpine, + LockMode::Detach, + HATS_LOCKED, + &[FolderKey::Hats, FolderKey::SubHats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive::test 2b6a646ee82484a6d1901ea4425b0e32fe553827f5bea37b506ffe29d1aec192 translated +#[test] +fn detach_all_this_recursive() { + assert!(folder_case_matches( + "@detachallthis=n", + Some((PRIM_3, "Business Pants (Pelvis)")), + Setup::BusinessPelvis, + LockMode::Detach, + CLOTHING_RECURSIVE_LOCKED, + &[FolderKey::Clothing, FolderKey::Hats, FolderKey::SubHats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Path::test 731244b623f23a8870d011280a062add751607ce2c58be3261485bb61d488297 translated +#[test] +fn detach_all_this_recursive_path() { + assert!(folder_case_matches( + "@detachallthis:Clothing=n", + None, + Setup::None, + LockMode::Detach, + CLOTHING_RECURSIVE_LOCKED, + &[FolderKey::Clothing, FolderKey::Hats, FolderKey::SubHats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Worn::test d8424a48e64346edd683b7a68652dd5a0be615658f085b0390699ac7b4db5d2c translated +#[test] +fn detach_all_this_recursive_worn() { + assert!(folder_case_matches( + "@detachallthis:pants=n", + None, + Setup::RetroPants, + LockMode::Detach, + CLOTHING_RECURSIVE_LOCKED, + &[FolderKey::Clothing, FolderKey::Hats, FolderKey::SubHats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached::test f399592217e7a4638ea25d469681ab9cc58bf8a937af2bfff8895996f7bbc493 translated +#[test] +fn detach_all_this_recursive_attached() { + assert!(folder_case_matches( + "@detachallthis:chest=n", + None, + Setup::BusinessChest, + LockMode::Detach, + CLOTHING_RECURSIVE_LOCKED, + &[FolderKey::Clothing, FolderKey::Hats, FolderKey::SubHats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached_AddRem::test 507273250b932ff93fa34f87190ad1ab289edeed275be6d2259bab05c5b055d1 translated +#[test] +fn detach_all_this_recursive_attached_removed() { + assert!(folder_case_matches( + "@detachallthis:chest=n,@detachallthis:chest=y", + None, + Setup::BusinessChest, + LockMode::Detach, + ALL_ALLOWED, + &[], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis::test bf6cdb48a5271d5116db4d0cbf12dbf63fc3cc93862bf718cf849d4abf9eb7cc translated +#[test] +fn detach_this() { + assert!(folder_case_matches( + "@detachthis=n", + Some((PRIM_3, "Party Hat (Spine)")), + Setup::PartySpine, + LockMode::Detach, + HATS_LOCKED, + &[FolderKey::Hats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_NotRecursive::test a8452e2b0abcf82447394bae981a1d25677147fad17828d8f6d0705264efa429 translated +#[test] +fn detach_this_not_recursive() { + assert!(folder_case_matches( + "@detachthis=n", + Some((PRIM_3, "Business Pants (Pelvis)")), + Setup::BusinessPelvis, + LockMode::Detach, + CLOTHING_LOCKED, + &[FolderKey::Clothing], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByPath::test e6378e0db310005b8426cabd25969818ed36252e1995de97c6b29d5ab155ee58 translated +#[test] +fn detach_this_by_path() { + assert!(folder_case_matches( + "@detachthis:Clothing=n", + None, + Setup::None, + LockMode::Detach, + CLOTHING_LOCKED, + &[FolderKey::Clothing], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByRlvAttachmentPoint::test 278e4cbf0f9999efec04fcabade19da97439cca732e0e7e3e3c004e232c27224 translated +#[test] +fn detach_this_by_attachment_point() { + assert!(folder_case_matches( + "@detachthis:pelvis=n", + None, + Setup::PartyAndBusinessPelvisDetach, + LockMode::Detach, + CLOTHING_RECURSIVE_LOCKED, + &[FolderKey::Clothing, FolderKey::Hats], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByWornLayer::test 66b7eba54e34ed58c59d594cdcb85d874c4db9bbbd871e5438c40fd3d47ad3f6 translated +#[test] +fn detach_this_by_worn_layer() { + assert!(folder_case_matches( + "@detachthis:tattoo=n", + None, + Setup::WatchTattoo, + LockMode::Detach, + ACCESSORIES_LOCKED, + &[FolderKey::Accessories], + )); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByWornLayer_AddRem::test 7424bf38db1abd74132618ee3bcf95a79c32942da26086760dc82355a815d37e translated +#[test] +fn detach_this_by_worn_layer_removed() { + assert!(folder_case_matches( + "@detachthis:tattoo=n,@detachthis:tattoo=y", + None, + Setup::WatchTattoo, + LockMode::Detach, + ALL_ALLOWED, + &[], + )); +} diff --git a/tests/compat/tests/rlv_rem_attach_commands_semantics.rs b/tests/compat/tests/rlv_rem_attach_commands_semantics.rs new file mode 100644 index 0000000..f67d2ee --- /dev/null +++ b/tests/compat/tests/rlv_rem_attach_commands_semantics.rs @@ -0,0 +1,424 @@ +//! Exact Rust translations of every `detach`/`remattach` alias case. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SampleInventoryTree, guid}; +use libremetaverse_rlv::{InventoryMap, RlvAttachmentPoint, RlvInventoryItem, RlvWearableType}; +use libremetaverse_types::compat::Guid; +const HAPPY: &str = "b1111111-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const RETRO: &str = "b2222222-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const FANCY: &str = "d1111111-dddd-4ddd-8ddd-dddddddddddd"; +const EXTERNAL: &str = "12312312-0002-4aaa-8aaa-aaaaaaaaaaaa"; +const PRIM1: &str = "11111111-0001-4aaa-8aaa-ffffffffffff"; +const EXTERNAL_PRIM: &str = "12312312-0002-4aaa-8aaa-ffffffffffff"; +#[derive(Clone, Copy)] +enum Setup { + Normal, + NoStrip, + NoStripLink, + External, + Folder, + FolderNoStrip, + FolderLink, + Point, + PointNoStrip, + PointLink, + PointNone, + Uuid, + UuidItemNoStrip, + UuidFolderNoStrip, + UuidFolderLink, + UuidRestricted, + UuidExternal, +} +fn attach(item: &mut RlvInventoryItem, point: RlvAttachmentPoint, prim: &str) { + item.set_attached_to(Some(Some(point))); + item.set_attached_prim_id(Some(Some(guid(prim)))); +} +fn external( + id: &str, + name: &str, + point: Option, + prim: Option<&str>, + worn: Option, +) -> RlvInventoryItem { + RlvInventoryItem::new( + guid(id), + name.into(), + false, + Some(Some(guid("12312312-aaaa-4aaa-8aaa-aaaaaaaaaaaa"))), + point.map(Some), + prim.map(|v| Some(guid(v))), + worn.map(Some), + None, + ) + .unwrap() +} +fn base(tree: &mut SampleInventoryTree) { + attach(&mut tree.happy_shirt, RlvAttachmentPoint::Chest, PRIM1); + attach( + &mut tree.fancy_hat, + RlvAttachmentPoint::Chin, + "11111111-0003-4aaa-8aaa-ffffffffffff", + ); + tree.retro_pants + .set_worn_on(Some(Some(RlvWearableType::Pants))); +} +#[allow(clippy::too_many_lines)] +fn run(command: &str, setup: Setup) -> Vec { + let h = RlvHarness::new().expect("RlvService constructor"); + let mut tree = SampleInventoryTree::build().unwrap(); + let mut external_items = vec![]; + base(&mut tree); + match setup { + Setup::NoStrip | Setup::NoStripLink => { + tree.hats.set_name("nostrip Hats".into()); + tree.happy_shirt.set_name("nostrip Happy Shirt".into()); + attach( + &mut tree.retro_pants, + RlvAttachmentPoint::Groin, + "11111111-0005-4aaa-8aaa-ffffffffffff", + ); + if matches!(setup, Setup::NoStripLink) { + tree.fancy_hat.set_is_link(true); + } + } + Setup::External => { + external_items.push(external( + "12312312-0001-4aaa-8aaa-aaaaaaaaaaaa", + "External Tattoo", + None, + None, + Some(RlvWearableType::Tattoo), + )); + external_items.push(external( + EXTERNAL, + "External Jaw Thing", + Some(RlvAttachmentPoint::Jaw), + Some(EXTERNAL_PRIM), + None, + )); + } + Setup::FolderNoStrip | Setup::FolderLink => { + tree.hats.set_name("nostrip Hats".into()); + if matches!(setup, Setup::FolderLink) { + tree.fancy_hat.set_is_link(true); + } + } + Setup::Point => external_items.push(external( + EXTERNAL, + "External Chest Thing", + Some(RlvAttachmentPoint::Chest), + Some(EXTERNAL_PRIM), + None, + )), + Setup::PointNoStrip | Setup::PointLink => { + tree.hats.set_name("nostrip Hats".into()); + tree.happy_shirt.set_name("nostrip Happy Shirt".into()); + attach( + &mut tree.fancy_hat, + RlvAttachmentPoint::Chest, + "11111111-0003-4aaa-8aaa-ffffffffffff", + ); + attach( + &mut tree.retro_pants, + RlvAttachmentPoint::Chest, + "11111111-0005-4aaa-8aaa-ffffffffffff", + ); + if matches!(setup, Setup::PointLink) { + tree.fancy_hat.set_is_link(true); + } + external_items.push(external( + EXTERNAL, + "External Chest Thing", + Some(RlvAttachmentPoint::Chest), + Some(EXTERNAL_PRIM), + None, + )); + external_items.push(external( + "12312312-0003-4aaa-8aaa-aaaaaaaaaaaa", + "nostrip External Chest Thing", + Some(RlvAttachmentPoint::Chest), + Some("12312312-0003-4aaa-8aaa-ffffffffffff"), + None, + )); + } + Setup::UuidItemNoStrip => tree.happy_shirt.set_name("nostrip Happy Shirt".into()), + Setup::UuidFolderNoStrip | Setup::UuidFolderLink => { + tree.clothing.set_name("nostrip Clothing".into()); + if matches!(setup, Setup::UuidFolderLink) { + tree.happy_shirt.set_is_link(true); + } + } + Setup::UuidExternal => external_items.push(external( + EXTERNAL, + "External Jaw Thing", + Some(RlvAttachmentPoint::Jaw), + Some(EXTERNAL_PRIM), + None, + )), + _ => {} + } + h.queries.lock().unwrap().inventory_map = + Some(InventoryMap::new(tree.root, external_items).unwrap()); + if matches!(setup, Setup::UuidRestricted) { + block_on(h.process("@detachallthis:Clothing=n")).unwrap(); + } + block_on(h.process(command)).unwrap(); + let mut v = h.actions.lock().unwrap().detachments[0].clone(); + v.sort_by_key(|id| id.0); + v +} +fn ids(values: &[&str]) -> Vec { + let mut v: Vec<_> = values.iter().map(|s| guid(s)).collect(); + v.sort_by_key(|id| id.0); + v +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach::case:bb1d34dc76ade75f 16420d56c60229e8d8b6a2a0d63b1f500112c23cef451d69bb0ed97fe9b63bae translated +#[test] +fn detach_all_attachments() { + assert_eq!(run("@detach=force", Setup::Normal), ids(&[HAPPY, FANCY])); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach::case:c9faa5be8fef55e8 16420d56c60229e8d8b6a2a0d63b1f500112c23cef451d69bb0ed97fe9b63bae translated +#[test] +fn remattach_all_attachments() { + assert_eq!(run("@remattach=force", Setup::Normal), ids(&[HAPPY, FANCY])); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip::case:bb1d34dc76ade75f 5b3f1cbe99833e16c6f10ef568618627445babbcdfc9be555b48257bfdffeea7 translated +#[test] +fn detach_honors_nostrip() { + assert_eq!(run("@detach=force", Setup::NoStrip), ids(&[RETRO])); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip::case:c9faa5be8fef55e8 5b3f1cbe99833e16c6f10ef568618627445babbcdfc9be555b48257bfdffeea7 translated +#[test] +fn remattach_honors_nostrip() { + assert_eq!(run("@remattach=force", Setup::NoStrip), ids(&[RETRO])); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip_LinkException::case:bb1d34dc76ade75f 96a4b53d9e55dcd656c25af6619a3d0d67f5bc2517a759d722559a4ffb225472 translated +#[test] +fn detach_honors_nostrip_link_exception() { + assert_eq!( + run("@detach=force", Setup::NoStripLink), + ids(&[RETRO, FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip_LinkException::case:c9faa5be8fef55e8 96a4b53d9e55dcd656c25af6619a3d0d67f5bc2517a759d722559a4ffb225472 translated +#[test] +fn remattach_honors_nostrip_link_exception() { + assert_eq!( + run("@remattach=force", Setup::NoStripLink), + ids(&[RETRO, FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ExternalItems::case:bb1d34dc76ade75f 7545f36532fcb7974a9e009e567b2342754a11da95eb3f17ee04089dcec42664 translated +#[test] +fn detach_external_items() { + assert_eq!( + run("@detach=force", Setup::External), + ids(&[HAPPY, FANCY, EXTERNAL]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ExternalItems::case:c9faa5be8fef55e8 7545f36532fcb7974a9e009e567b2342754a11da95eb3f17ee04089dcec42664 translated +#[test] +fn remattach_external_items() { + assert_eq!( + run("@remattach=force", Setup::External), + ids(&[HAPPY, FANCY, EXTERNAL]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder::case:97eb7af1f9c3c62c 583d3f596c80411d950038e3ec64032bee75150b8c819741fe89a4ca40eb2553 translated +#[test] +fn detach_by_folder() { + assert_eq!( + run("@detach:Clothing/Hats=force", Setup::Folder), + ids(&[FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder::case:1a04fd408fddaac0 583d3f596c80411d950038e3ec64032bee75150b8c819741fe89a4ca40eb2553 translated +#[test] +fn remattach_by_folder() { + assert_eq!( + run("@remattach:Clothing/Hats=force", Setup::Folder), + ids(&[FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip::case:2117c838922f5ba4 3a21b8ae807126d6f93ac95e16c47330b4146ace9781e9c9665ad493ee8c48b1 translated +#[test] +fn detach_by_folder_honors_nostrip() { + assert!(run("@detach:Clothing/nostrip Hats=force", Setup::FolderNoStrip).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip::case:11d4ca4fd3e35db1 3a21b8ae807126d6f93ac95e16c47330b4146ace9781e9c9665ad493ee8c48b1 translated +#[test] +fn remattach_by_folder_honors_nostrip() { + assert!( + run( + "@remattach:Clothing/nostrip Hats=force", + Setup::FolderNoStrip + ) + .is_empty() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException::case:2117c838922f5ba4 7c00e7dc70b3078d75009cf78a9fece889eee85f237c1a3c79c6249ae5e5327f translated +#[test] +fn detach_by_folder_honors_link_exception() { + assert_eq!( + run("@detach:Clothing/nostrip Hats=force", Setup::FolderLink), + ids(&[FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException::case:11d4ca4fd3e35db1 7c00e7dc70b3078d75009cf78a9fece889eee85f237c1a3c79c6249ae5e5327f translated +#[test] +fn remattach_by_folder_honors_link_exception() { + assert_eq!( + run("@remattach:Clothing/nostrip Hats=force", Setup::FolderLink), + ids(&[FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint::case:644d3f75f3570ac3 e09627228c1cf8311e56ac6660389bc1b268db8fd4f883dc40aaf3d2ec00916b translated +#[test] +fn detach_by_attachment_point() { + assert_eq!( + run("@detach:chest=force", Setup::Point), + ids(&[HAPPY, EXTERNAL]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint::case:53be219b37533fa6 e09627228c1cf8311e56ac6660389bc1b268db8fd4f883dc40aaf3d2ec00916b translated +#[test] +fn remattach_by_attachment_point() { + assert_eq!( + run("@remattach:chest=force", Setup::Point), + ids(&[HAPPY, EXTERNAL]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip::case:644d3f75f3570ac3 ffaaad92700d5d606154abdddd05c24c7584c5c3e55290df61e2b2a71d8148d7 translated +#[test] +fn detach_by_attachment_point_honors_nostrip() { + assert_eq!( + run("@detach:chest=force", Setup::PointNoStrip), + ids(&[RETRO, EXTERNAL]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip::case:53be219b37533fa6 ffaaad92700d5d606154abdddd05c24c7584c5c3e55290df61e2b2a71d8148d7 translated +#[test] +fn remattach_by_attachment_point_honors_nostrip() { + assert_eq!( + run("@remattach:chest=force", Setup::PointNoStrip), + ids(&[RETRO, EXTERNAL]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException::case:644d3f75f3570ac3 af1b1caf070a186bc2b02b598919b52d47c289d708fde3713e48ce1a40d7c025 translated +#[test] +fn detach_by_attachment_point_honors_link_exception() { + assert_eq!( + run("@detach:chest=force", Setup::PointLink), + ids(&[RETRO, FANCY, EXTERNAL]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException::case:53be219b37533fa6 af1b1caf070a186bc2b02b598919b52d47c289d708fde3713e48ce1a40d7c025 translated +#[test] +fn remattach_by_attachment_point_honors_link_exception() { + assert_eq!( + run("@remattach:chest=force", Setup::PointLink), + ids(&[RETRO, FANCY, EXTERNAL]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_None::case:9a124e69f33b279f afed603254ad6048a46e157254f16253063e6c76c9ea16f46a69d8455bc0e6fb translated +#[test] +fn detach_by_missing_attachment_point() { + assert!(run("@detach:skull=force", Setup::PointNone).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_None::case:800d7d8ba57071b1 afed603254ad6048a46e157254f16253063e6c76c9ea16f46a69d8455bc0e6fb translated +#[test] +fn remattach_by_missing_attachment_point() { + assert!(run("@remattach:skull=force", Setup::PointNone).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID::case:e5bdbdba9613b46a 4b1a8acea7f1bb100bf11e9329672c64b53aba4974558f1c693460eef7f56c2d translated +#[test] +fn detach_by_uuid() { + assert_eq!( + run(&format!("@detach:{PRIM1}=force"), Setup::Uuid), + ids(&[HAPPY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID::case:7cb3f81460bd8e9f 4b1a8acea7f1bb100bf11e9329672c64b53aba4974558f1c693460eef7f56c2d translated +#[test] +fn remattach_by_uuid() { + assert_eq!( + run(&format!("@remattach:{PRIM1}=force"), Setup::Uuid), + ids(&[HAPPY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName::case:e5bdbdba9613b46a 6857733912b45ef9153b0f58cd74ae6c9dc0034fa10933d153cae88a2c7d9423 translated +#[test] +fn detach_by_uuid_honors_item_nostrip() { + assert!(run(&format!("@detach:{PRIM1}=force"), Setup::UuidItemNoStrip).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName::case:7cb3f81460bd8e9f 6857733912b45ef9153b0f58cd74ae6c9dc0034fa10933d153cae88a2c7d9423 translated +#[test] +fn remattach_by_uuid_honors_item_nostrip() { + assert!(run(&format!("@remattach:{PRIM1}=force"), Setup::UuidItemNoStrip).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName::case:e5bdbdba9613b46a 1a3189f931e086ab3d2d3e99c53dba2e9d39dce75a52fd02400c6892aef5d0c4 translated +#[test] +fn detach_by_uuid_honors_folder_nostrip() { + assert!(run(&format!("@detach:{PRIM1}=force"), Setup::UuidFolderNoStrip).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName::case:7cb3f81460bd8e9f 1a3189f931e086ab3d2d3e99c53dba2e9d39dce75a52fd02400c6892aef5d0c4 translated +#[test] +fn remattach_by_uuid_honors_folder_nostrip() { + assert!( + run( + &format!("@remattach:{PRIM1}=force"), + Setup::UuidFolderNoStrip + ) + .is_empty() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException::case:e5bdbdba9613b46a bd7bc72a107b4a21b00977e13b086da192bef2c2e6f0fdb73b8e332016c6ef23 translated +#[test] +fn detach_by_uuid_honors_folder_link_exception() { + assert_eq!( + run(&format!("@detach:{PRIM1}=force"), Setup::UuidFolderLink), + ids(&[HAPPY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException::case:7cb3f81460bd8e9f bd7bc72a107b4a21b00977e13b086da192bef2c2e6f0fdb73b8e332016c6ef23 translated +#[test] +fn remattach_by_uuid_honors_folder_link_exception() { + assert_eq!( + run(&format!("@remattach:{PRIM1}=force"), Setup::UuidFolderLink), + ids(&[HAPPY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions::case:e5bdbdba9613b46a 2ecf40d1d338117ddac4cfd6c7a030e96b7adf72cd90e0d8327787317e1f38d7 translated +#[test] +fn detach_by_uuid_honors_restrictions() { + assert!(run(&format!("@detach:{PRIM1}=force"), Setup::UuidRestricted).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions::case:7cb3f81460bd8e9f 2ecf40d1d338117ddac4cfd6c7a030e96b7adf72cd90e0d8327787317e1f38d7 translated +#[test] +fn remattach_by_uuid_honors_restrictions() { + assert!(run(&format!("@remattach:{PRIM1}=force"), Setup::UuidRestricted).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_External::case:e5bdbdba9613b46a e0bdc682df3416bdc01855e6e63974e64c21951aac629807352220baf572dded translated +#[test] +fn detach_external_by_uuid() { + assert_eq!( + run( + &format!("@detach:{EXTERNAL_PRIM}=force"), + Setup::UuidExternal + ), + ids(&[EXTERNAL]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_External::case:7cb3f81460bd8e9f e0bdc682df3416bdc01855e6e63974e64c21951aac629807352220baf572dded translated +#[test] +fn remattach_external_by_uuid() { + assert_eq!( + run( + &format!("@remattach:{EXTERNAL_PRIM}=force"), + Setup::UuidExternal + ), + ids(&[EXTERNAL]) + ); +} diff --git a/tests/compat/tests/rlv_rem_outfit_commands_semantics.rs b/tests/compat/tests/rlv_rem_outfit_commands_semantics.rs new file mode 100644 index 0000000..d5c273a --- /dev/null +++ b/tests/compat/tests/rlv_rem_outfit_commands_semantics.rs @@ -0,0 +1,257 @@ +//! Exact Rust translations of `RemOutfitCommandTests`. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, SampleInventoryTree, guid}; +use libremetaverse_rlv::{InventoryMap, RlvInventoryItem, RlvWearableType}; +use libremetaverse_types::compat::Guid; + +const RETRO: &str = "b2222222-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const HAPPY: &str = "b1111111-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; +const WATCH: &str = "c0000000-cccc-4ccc-8ccc-cccccccccccc"; +const PARTY: &str = "d0000000-dddd-4ddd-8ddd-dddddddddddd"; +const FANCY: &str = "d1111111-dddd-4ddd-8ddd-dddddddddddd"; +const EXTERNAL1: &str = "12312312-0001-4aaa-8aaa-aaaaaaaaaaaa"; +const EXTERNAL2: &str = "12312312-0002-4aaa-8aaa-aaaaaaaaaaaa"; + +#[derive(Clone, Copy)] +enum Setup { + All, + PrivateClothing, + External, + ExternalNoStrip, + ExternalNoStripLink, + ExternalByType, + Folder, + PrivateFolder, + FolderNoStripItem, + FolderNoStripName, + FolderNoStripNameLink, + Specific, + SpecificPrivate, + SpecificNoStrip, + SpecificNoStripLink, + BodyPart, +} + +fn external(id: &str, name: &str) -> RlvInventoryItem { + RlvInventoryItem::new( + guid(id), + name.into(), + false, + Some(Some(guid("12312312-aaaa-4aaa-8aaa-aaaaaaaaaaaa"))), + None, + None, + Some(Some(RlvWearableType::Tattoo)), + None, + ) + .unwrap() +} + +fn base_worn(tree: &mut SampleInventoryTree) { + tree.retro_pants + .set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.happy_shirt + .set_worn_on(Some(Some(RlvWearableType::Shirt))); + tree.watch.set_worn_on(Some(Some(RlvWearableType::Tattoo))); + tree.fancy_hat + .set_worn_on(Some(Some(RlvWearableType::Tattoo))); + tree.party_hat + .set_worn_on(Some(Some(RlvWearableType::Skin))); +} + +fn run(command: &str, setup: Setup) -> Vec { + let h = RlvHarness::new().expect("RlvService constructor"); + let mut tree = SampleInventoryTree::build().unwrap(); + let mut external_items = vec![]; + match setup { + Setup::All | Setup::Folder | Setup::Specific | Setup::BodyPart => base_worn(&mut tree), + Setup::PrivateClothing => { + base_worn(&mut tree); + tree.clothing.set_name(".Clothing".into()); + } + Setup::External | Setup::ExternalByType => { + base_worn(&mut tree); + external_items.push(external(EXTERNAL1, "External Tattoo")); + } + Setup::ExternalNoStrip | Setup::ExternalNoStripLink => { + base_worn(&mut tree); + tree.hats.set_name("nostrip Hats".into()); + tree.happy_shirt.set_name("nostrip Happy Shirt".into()); + if matches!(setup, Setup::ExternalNoStripLink) { + tree.fancy_hat.set_is_link(true); + } + external_items.push(external(EXTERNAL1, "External Tattoo")); + external_items.push(external(EXTERNAL2, "nostrip External Tattoo")); + } + Setup::PrivateFolder | Setup::SpecificPrivate => { + base_worn(&mut tree); + tree.hats.set_name(".Hats".into()); + } + Setup::FolderNoStripItem => { + base_worn(&mut tree); + tree.fancy_hat.set_name("nostrip Fancy Hat".into()); + } + Setup::FolderNoStripName | Setup::FolderNoStripNameLink => { + base_worn(&mut tree); + tree.hats.set_name("nostrip Hats".into()); + if matches!(setup, Setup::FolderNoStripNameLink) { + tree.fancy_hat.set_is_link(true); + } + } + Setup::SpecificNoStrip | Setup::SpecificNoStripLink => { + tree.retro_pants + .set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.watch.set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.party_hat + .set_worn_on(Some(Some(RlvWearableType::Pants))); + tree.glasses + .set_worn_on(Some(Some(RlvWearableType::Tattoo))); + tree.watch.set_name("nostrip Watch".into()); + tree.clothing.set_name("nostrip clothing".into()); + if matches!(setup, Setup::SpecificNoStripLink) { + tree.retro_pants.set_is_link(true); + } + } + } + h.queries.lock().unwrap().inventory_map = + Some(InventoryMap::new(tree.root, external_items).unwrap()); + block_on(h.process(command)).unwrap(); + let mut ids = h.actions.lock().unwrap().removed_outfits[0].clone(); + ids.sort_by_key(|id| id.0); + ids +} + +fn ids(values: &[&str]) -> Vec { + let mut result: Vec<_> = values.iter().map(|value| guid(value)).collect(); + result.sort_by_key(|id| id.0); + result +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit::test 60bd0e62bbd4613c4d2d1a65705644dc25fd7327408adfc0bb7e95c45d79cdcb translated +#[test] +fn remove_outfit() { + assert_eq!( + run("@remoutfit=force", Setup::All), + ids(&[RETRO, HAPPY, WATCH, FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_PrivateFolders::test d79ac3806f50915390edd0a24b756ef398c1334017f69d16f4cb887dcdd41fb1 translated +#[test] +fn remove_outfit_in_private_folders() { + assert_eq!( + run("@remoutfit=force", Setup::PrivateClothing), + ids(&[RETRO, HAPPY, WATCH, FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems::test 0265a9fee1070cbcc458bfcb05fe267991cbdb5480500c1b32aace1eb4935217 translated +#[test] +fn remove_outfit_external_items() { + assert_eq!( + run("@remoutfit=force", Setup::External), + ids(&[RETRO, HAPPY, WATCH, FANCY, EXTERNAL1]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip::test b93d39d919fb70b02ccdb724969f7b983c726c707bca96e1b1ddc6ee248a734f translated +#[test] +fn remove_outfit_external_items_honors_nostrip() { + assert_eq!( + run("@remoutfit=force", Setup::ExternalNoStrip), + ids(&[RETRO, WATCH, EXTERNAL1]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip_LinkException::test 5ecc44228573645e0a0c78d100dab54b793c6ce8dc50a02d79a919fe6d7c1678 translated +#[test] +fn remove_outfit_external_items_honors_link_exception() { + assert_eq!( + run("@remoutfit=force", Setup::ExternalNoStripLink), + ids(&[RETRO, WATCH, FANCY, EXTERNAL1]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_ByType::test 8ba106f071f8768af1d6213c04f67dd0aec846ae47552686eba86c489bdb0292 translated +#[test] +fn remove_outfit_external_items_by_type() { + assert_eq!( + run("@remoutfit:tattoo=force", Setup::ExternalByType), + ids(&[FANCY, WATCH, EXTERNAL1]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder::test 45f9e7a9d0ef99ec7d58b59f1c1db7b6065994939717842bb02486b470b357b5 translated +#[test] +fn remove_outfit_folder() { + assert_eq!( + run("@remoutfit:Clothing/Hats=force", Setup::Folder), + ids(&[FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_PrivateFolder::test 68f3050a1b667304ff2b252690cc7d1994964dbd2c7633d54e5c6654714c0aed translated +#[test] +fn remove_outfit_private_folder() { + assert_eq!( + run("@remoutfit:Clothing/Hats=force", Setup::PrivateFolder), + ids(&[FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStrip::test d56b83a72d6d3529af0390674550ce40733c14de6210cf71e277f0e195d1e330 translated +#[test] +fn remove_outfit_folder_honors_item_nostrip() { + assert!(run("@remoutfit:Clothing/Hats=force", Setup::FolderNoStripItem).is_empty()); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName::test a28f5517a9d05085627d5acaf33441d598912301962f6e99aaff49ef5114af53 translated +#[test] +fn remove_outfit_folder_honors_folder_nostrip() { + assert!( + run( + "@remoutfit:Clothing/nostrip Hats=force", + Setup::FolderNoStripName + ) + .is_empty() + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName_LinkException::test 80efc201f976365e68d32ae1b30db0f10a17cbc65aedc82895ffa679700008da translated +#[test] +fn remove_outfit_folder_honors_link_exception() { + assert_eq!( + run( + "@remoutfit:Clothing/nostrip Hats=force", + Setup::FolderNoStripNameLink + ), + ids(&[FANCY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific::test 7235143679739442ec942d294a8a68f69b7fb5678ed4e3ca03be35c74e9c71a9 translated +#[test] +fn remove_outfit_specific() { + assert_eq!( + run("@remoutfit:tattoo=force", Setup::Specific), + ids(&[FANCY, WATCH]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_PrivateFolder::test 3feea26f000dc7eb86b1413f1a5bdd5f109c5f9f969918cd1ce2e7f926f26c12 translated +#[test] +fn remove_outfit_specific_private_folder() { + assert_eq!( + run("@remoutfit:tattoo=force", Setup::SpecificPrivate), + ids(&[FANCY, WATCH]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_NoStrip::test 6e4b8bc53933a889df1cf553ca7e0601e5061bb87013a4075c2ff357cc9d987f translated +#[test] +fn remove_outfit_specific_honors_nostrip() { + assert_eq!( + run("@remoutfit:pants=force", Setup::SpecificNoStrip), + ids(&[PARTY]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_NoStrip_LinkException::test 72b1409f70531d859f15a012cb1fb03d795d2065c5d03b7a263d352ca4b80e98 translated +#[test] +fn remove_outfit_specific_honors_link_exception() { + assert_eq!( + run("@remoutfit:pants=force", Setup::SpecificNoStripLink), + ids(&[PARTY, RETRO]) + ); +} +// parity-case: LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_BodyPart_Specific::test 13804c96395db86821371dc8f2cacd2cb182338f8ea88034afcc5da19e3f0691 translated +#[test] +fn remove_outfit_does_not_remove_body_part() { + assert!(run("@remoutfit:skin=force", Setup::BodyPart).is_empty()); +} diff --git a/tests/compat/tests/rlv_restriction_manager_semantics.rs b/tests/compat/tests/rlv_restriction_manager_semantics.rs new file mode 100644 index 0000000..80bdb19 --- /dev/null +++ b/tests/compat/tests/rlv_restriction_manager_semantics.rs @@ -0,0 +1,256 @@ +// Exact Rust translations of RlvRestrictionManagerTests. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, guid}; +use libremetaverse_rlv::RlvRestrictionType; +use libremetaverse_types::compat::Guid; +use std::sync::{Arc, Mutex}; + +const PRIM_1: &str = "11111111-1111-1111-1111-111111111111"; +const PRIM_2: &str = "22222222-2222-2222-2222-222222222222"; +const PRIM_3: &str = "33333333-3333-3333-3333-333333333333"; +const MISSING: &str = "99999999-9999-9999-9999-999999999999"; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn process_from(h: &RlvHarness, sender: &str, commands: &[&str]) { + for command in commands { + block_on(h.process_from(command, sender, "TestObject")).unwrap(); + } +} + +fn tracked(h: &RlvHarness) -> Vec { + h.service + .restrictions() + .get_tracked_prim_ids() + .unwrap() + .collect() +} + +async fn remove(h: &RlvHarness, ids: Vec) { + h.service + .restrictions() + .remove_restrictions_for_objects(Box::new(ids.into_iter()), None) + .await + .unwrap(); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_NoRestrictions_ReturnsEmptyCollection::test 327086a5aa514ddf8b2cc40891f7ae5e8039788f5cbfeda86f04bd9161f39ded translated +#[test] +fn tracked_prim_ids_empty() { + assert!(tracked(&harness()).is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_SingleRestriction_ReturnsSingleId::test 85a822c9e2e8beb2e70748513a397b8ccbb2977c0581b0519bd8ad43e699ad57 translated +#[test] +fn tracked_prim_ids_single_restriction() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n"]); + assert_eq!(tracked(&h), vec![guid(PRIM_1)]); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleRestrictionsFromSameObject_ReturnsSingleId::test 933070f933b0a5a39b3d0cd5fd9be9423a538609d0106b352a7d9c339665d6d1 translated +#[test] +fn tracked_prim_ids_deduplicates_one_object() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n", "@jump=n", "@sit=n"]); + assert_eq!(tracked(&h), vec![guid(PRIM_1)]); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleObjects_ReturnsAllUniqueIds::test 8c2afe66145e4815e73d7849f83cfec50e4a7a49793cc757917cd608c9387419 translated +#[test] +fn tracked_prim_ids_multiple_objects() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n"]); + process_from(&h, PRIM_2, &["@jump=n"]); + process_from(&h, PRIM_3, &["@sit=n"]); + let ids = tracked(&h); + assert_eq!(ids.len(), 3); + assert!(ids.contains(&guid(PRIM_1))); + assert!(ids.contains(&guid(PRIM_2))); + assert!(ids.contains(&guid(PRIM_3))); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MixedRestrictionsAndExceptions_ReturnsAllUniqueIds::test 25ea3c36aba93d5183816962bf49bfdbc3e17e6b06d73a41dee5b51407a84746 translated +#[test] +fn tracked_prim_ids_include_restrictions_and_exceptions() { + let h = harness(); + process_from(&h, PRIM_1, &["@detachthis=n"]); + process_from(&h, PRIM_2, &["@detachthis_except:folder=n"]); + let ids = tracked(&h); + assert_eq!(ids.len(), 2); + assert!(ids.contains(&guid(PRIM_1))); + assert!(ids.contains(&guid(PRIM_2))); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_AfterRemovingRestriction_DoesNotReturnRemovedObjectId::test af3d5328e5c829bd2de2b72c3f4ede6f083efa789ccef1d73d752612a177360f translated +#[test] +fn tracked_prim_ids_after_removing_restriction() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n"]); + process_from(&h, PRIM_2, &["@jump=n"]); + process_from(&h, PRIM_1, &["@fly=y"]); + let ids = tracked(&h); + assert_eq!(ids, vec![guid(PRIM_2)]); + assert!(!ids.contains(&guid(PRIM_1))); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_AfterClearingAllRestrictions_ReturnsEmptyCollection::test 191a8cc3dba7e68155083a6892f1b4a29ab589023e22cffbc8cd69c005884cca translated +#[test] +fn tracked_prim_ids_after_clear() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n", "@jump=n", "@clear"]); + assert!(tracked(&h).is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_EmptyInput_NoEffect::test 8718e08bb2bf951a94803b4947943b5f7f9eb85e906b4ac6c639cb8cd065cf9d translated +#[test] +fn remove_restrictions_empty_input() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n"]); + block_on(remove(&h, vec![])); + assert!(!h.service.permissions().can_fly().unwrap()); + assert_eq!(tracked(&h).len(), 1); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_NonExistentId_NoEffect::test 882d2315f40317cce9c9a026eda498325b6227886652795ed45e87cc4e5697ac translated +#[test] +fn remove_restrictions_missing_id() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n"]); + block_on(remove(&h, vec![guid(MISSING)])); + assert!(!h.service.permissions().can_fly().unwrap()); + assert_eq!(tracked(&h), vec![guid(PRIM_1)]); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_SingleObject_RemovesAllRestrictionsFromObject::test 73ab6ee30a336372f6aef5bc4a99dbb58215b9445daea5d9708d0ea9cabe8bd1 translated +#[test] +fn remove_restrictions_single_object() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n", "@jump=n", "@sit=n"]); + assert!(!h.service.permissions().can_fly().unwrap()); + assert!(!h.service.permissions().can_jump().unwrap()); + block_on(remove(&h, vec![guid(PRIM_1)])); + assert!(h.service.permissions().can_fly().unwrap()); + assert!(h.service.permissions().can_jump().unwrap()); + assert!(tracked(&h).is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_MultipleObjects_RemovesOnlySpecifiedObjects::test 03b6a6a3e02f6a6a5f296ff1d6cca31c9fc53982cbc9c27e73cfb698ed82acf5 translated +#[test] +fn remove_restrictions_multiple_objects() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n"]); + process_from(&h, PRIM_2, &["@jump=n"]); + process_from(&h, PRIM_3, &["@sit=n"]); + assert!(!h.service.permissions().can_fly().unwrap()); + assert!(!h.service.permissions().can_jump().unwrap()); + block_on(remove(&h, vec![guid(PRIM_1), guid(PRIM_3)])); + assert!(h.service.permissions().can_fly().unwrap()); + assert!(!h.service.permissions().can_jump().unwrap()); + assert_eq!(tracked(&h), vec![guid(PRIM_2)]); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_PartialMatch_RemovesOnlyMatchingObjects::test 00a26d807882b2bbb375c5ce7cf1074d3227acd891e859602e78abbdc6eefb6a translated +#[test] +fn remove_restrictions_partial_match() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n"]); + process_from(&h, PRIM_2, &["@jump=n"]); + block_on(remove(&h, vec![guid(PRIM_1), guid(MISSING)])); + assert!(h.service.permissions().can_fly().unwrap()); + assert!(!h.service.permissions().can_jump().unwrap()); + assert_eq!(tracked(&h), vec![guid(PRIM_2)]); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithNotificationRestrictions_SendsNotifications::test ba82b183dfdb01b36f9b45520e1808290c360f327d4afa833ba3b8c7a7cecffb translated +#[test] +fn remove_restrictions_sends_notification() { + let h = harness(); + process_from(&h, PRIM_2, &["@notify:123=n"]); + process_from(&h, PRIM_1, &["@fly=n"]); + block_on(remove(&h, vec![guid(PRIM_1)])); + assert_eq!( + h.actions + .lock() + .unwrap() + .replies + .iter() + .filter(|reply| **reply == (123, "/fly=y".into())) + .count(), + 1 + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly::test 631de2d39fa56b29014fae4ce3b57c480f540ad41ce08a0037b7f8bbfcb3c502 translated +#[test] +fn remove_restrictions_complex_types() { + let h = harness(); + process_from( + &h, + PRIM_1, + &[ + "@detachthis=n", + "@detachthis_except:folder=n", + "@touchfar:1.5=n", + ], + ); + process_from(&h, PRIM_2, &["@fly=n"]); + assert_eq!( + h.service + .restrictions() + .find_restrictions(None, Some(Some(guid(PRIM_1)))) + .unwrap() + .len(), + 3 + ); + assert_eq!( + h.service + .restrictions() + .find_restrictions(None, Some(Some(guid(PRIM_2)))) + .unwrap() + .len(), + 1 + ); + block_on(remove(&h, vec![guid(PRIM_1)])); + assert!( + h.service + .restrictions() + .find_restrictions(None, Some(Some(guid(PRIM_1)))) + .unwrap() + .is_empty() + ); + assert_eq!( + h.service + .restrictions() + .find_restrictions(None, Some(Some(guid(PRIM_2)))) + .unwrap() + .len(), + 1 + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent::test 318f1f4207b04d01076d3498aceea781c4889b05cdbef199cdbea43dde355f4c translated +#[test] +fn remove_restrictions_triggers_update_event() { + let h = harness(); + process_from(&h, PRIM_1, &["@fly=n"]); + let removed = Arc::new(Mutex::new(None)); + let captured = Arc::clone(&removed); + let _subscription = h + .service + .restrictions() + .subscribe_restriction_updated(Some(Arc::new(move |args| { + if !args.is_new() && args.is_deleted() { + let restriction = args.restriction(); + *captured.lock().unwrap() = Some((restriction.behavior(), restriction.sender())); + } + }))); + block_on(remove(&h, vec![guid(PRIM_1)])); + assert_eq!( + *removed.lock().unwrap(), + Some((RlvRestrictionType::Fly, guid(PRIM_1))) + ); +} diff --git a/tests/compat/tests/rlv_simple_commands_semantics.rs b/tests/compat/tests/rlv_simple_commands_semantics.rs new file mode 100644 index 0000000..e3672d4 --- /dev/null +++ b/tests/compat/tests/rlv_simple_commands_semantics.rs @@ -0,0 +1,383 @@ +//! Exact Rust translations of the non-inventory RLV command tests. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, TeleportCall, guid}; + +const OBJECT: &str = "00000000-0000-4000-8000-000000000000"; +const OTHER_SENDER: &str = "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight::test fb3adb86988b10b2d3fe9223324f8a3c1ba7b8c2ea909ee6b57b38c590fed372 translated +#[test] +fn adjust_height() { + let h = harness(); + block_on(h.process("@adjustheight:4.3;1.25=force")).unwrap(); + assert_eq!( + h.actions.lock().unwrap().adjusted_heights, + vec![(4.3, 1.25, 0.0)] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight_WithDelta::test 1f37a125fd9df8585740d37c711888dfcd92460d86c19077f771d7f3fab54264 translated +#[test] +fn adjust_height_with_delta() { + let h = harness(); + block_on(h.process("@adjustheight:4.3;1.25;12.34=force")).unwrap(); + assert_eq!( + h.actions.lock().unwrap().adjusted_heights, + vec![(4.3, 1.25, 12.34)] + ); +} + +fn seed_clear(h: &RlvHarness) { + block_on(h.process("@tploc=n")).unwrap(); + block_on(h.process("@tplm=n")).unwrap(); + block_on(h.process("@unsit=n")).unwrap(); + block_on(h.process("@fly=n")).unwrap(); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear::test 865d022233930e9582fec5b0e99063f15506a339c430755aba83706b594182ad translated +#[test] +fn clear() { + let h = harness(); + seed_clear(&h); + block_on(h.process("@clear")).unwrap(); + assert!( + h.service + .restrictions() + .find_restrictions(None, None) + .unwrap() + .is_empty() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_CaseInSensitive::test b70296f9d2b6c9eb8c6dd6e560056ab8320d746a991fafec858812fc2ebb3141 translated +#[test] +fn clear_is_case_insensitive() { + let h = harness(); + seed_clear(&h); + block_on(h.process("@cLEaR")).unwrap(); + assert!( + h.service + .restrictions() + .find_restrictions(None, None) + .unwrap() + .is_empty() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_SenderBased::test 1ae70737411e18626227c0b15181572c1c623eefce0a8fa1a874b2229c44c38e translated +#[test] +fn clear_is_sender_based() { + let h = harness(); + block_on(h.process("@tploc=n")).unwrap(); + block_on(h.process("@tplm=n")).unwrap(); + block_on(h.process_from("@unsit=n", OTHER_SENDER, "Sender 2")).unwrap(); + block_on(h.process_from("@fly=n", OTHER_SENDER, "Sender 2")).unwrap(); + block_on(h.process_from("@clear", OTHER_SENDER, "Sender 2")).unwrap(); + let permissions = h.service.permissions(); + assert_eq!( + [ + permissions.can_tp_loc().unwrap(), + permissions.can_tp_lm().unwrap(), + permissions.can_unsit().unwrap(), + permissions.can_fly().unwrap() + ], + [false, false, true, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_Filtered::test e0f0b5a42c3baf92fef6a8d4fc2c60dbd6963db6f844fed55b06968f0c9e543f translated +#[test] +fn clear_is_filtered() { + let h = harness(); + seed_clear(&h); + block_on(h.process("@clear=tp")).unwrap(); + let permissions = h.service.permissions(); + assert_eq!( + [ + permissions.can_tp_loc().unwrap(), + permissions.can_tp_lm().unwrap(), + permissions.can_unsit().unwrap(), + permissions.can_fly().unwrap() + ], + [true, true, false, false] + ); +} + +fn set_debug(setting: &str, value: &str) -> Vec<(String, String)> { + let h = harness(); + block_on(h.process(&format!("@setdebug_{setting}:{value}=force"))).unwrap(); + h.actions.lock().unwrap().debug_settings.clone() +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Default::case:fa77559e30768d15 abcee425068df326a3258ab4d881218e6eee52523fa5d306b191308e85dfff3d translated +#[test] +fn set_debug_known_setting() { + assert_eq!( + set_debug("RenderResolutionDivisor", "RenderResolutionDivisor Success"), + vec![( + "renderresolutiondivisor".into(), + "RenderResolutionDivisor Success".into() + )] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Default::case:55694f25ed879d95 abcee425068df326a3258ab4d881218e6eee52523fa5d306b191308e85dfff3d translated +#[test] +fn set_debug_unknown_setting() { + assert_eq!( + set_debug("Unknown Setting", "Unknown Setting Success"), + vec![("unknown setting".into(), "Unknown Setting Success".into())] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Invalid::test 2e0595319ba8e2c9a8280c5b034363ad7998eb740cb6b7fff3d75bb0167c6464 translated +#[test] +fn set_debug_rejects_empty_name() { + let h = harness(); + assert!(!block_on(h.process("@setdebug_:42=force")).unwrap()); + assert!(h.actions.lock().unwrap().debug_settings.is_empty()); +} + +fn set_env(setting: &str, value: &str) -> Vec<(String, String)> { + let h = harness(); + block_on(h.process(&format!("@setenv_{setting}:{value}=force"))).unwrap(); + h.actions.lock().unwrap().environment_settings.clone() +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs::SetEnvCommandTests.SetEnv_Default::case:f656b648d00a6d91 836c1332ca9c4f645e5c9dca8b4a2b967d55fd8148901b05ce5d741e665ab7e1 translated +#[test] +fn set_environment_known_setting() { + assert_eq!( + set_env("Daytime", "Daytime Success"), + vec![("daytime".into(), "Daytime Success".into())] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs::SetEnvCommandTests.SetEnv_Default::case:55694f25ed879d95 836c1332ca9c4f645e5c9dca8b4a2b967d55fd8148901b05ce5d741e665ab7e1 translated +#[test] +fn set_environment_unknown_setting() { + assert_eq!( + set_env("Unknown Setting", "Unknown Setting Success"), + vec![("unknown setting".into(), "Unknown Setting Success".into())] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByName::test fae27e58cd981f5471f4c2b8356bb07aa5e76a57aaf0882d0dbfb86360e077e3 translated +#[test] +fn set_group_by_name() { + let h = harness(); + block_on(h.process("@setgroup:Group Name=force")).unwrap(); + assert_eq!( + h.actions.lock().unwrap().group_names, + vec![("Group Name".into(), None)] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByNameAndRole::test 408442b86bb8259eb9bbb4cf8a5d3b0830c7ba9357fa04cb6e851511a7a24df1 translated +#[test] +fn set_group_by_name_and_role() { + let h = harness(); + block_on(h.process("@setgroup:Group Name;Admin Role=force")).unwrap(); + assert_eq!( + h.actions.lock().unwrap().group_names, + vec![("Group Name".into(), Some("Admin Role".into()))] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ById::test 27f13c52c8c5e2e4298fee3f4322f9906d5f82e900aa5f46c9a8ffac3a6dfae7 translated +#[test] +fn set_group_by_id() { + let h = harness(); + block_on(h.process(&format!("@setgroup:{OBJECT}=force"))).unwrap(); + assert_eq!( + h.actions.lock().unwrap().group_ids, + vec![(guid(OBJECT), None)] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByIdAndRole::test e18fd0c318ebd4f9a189418449568b3a34b8f7d3a0097f100a7253c4d5a31bde translated +#[test] +fn set_group_by_id_and_role() { + let h = harness(); + block_on(h.process(&format!("@setgroup:{OBJECT};Admin Role=force"))).unwrap(); + assert_eq!( + h.actions.lock().unwrap().group_ids, + vec![(guid(OBJECT), Some("Admin Role".into()))] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SetRotCommandTests.cs::SetRotCommandTests.SetRot::test c3302d63cdda9d72b85dad2749e2684cc26d51c72ddc6ace8275911f8ba67ef4 translated +#[test] +fn set_rotation() { + let h = harness(); + block_on(h.process("@setrot:1.5=force")).unwrap(); + assert_eq!(h.actions.lock().unwrap().rotations, vec![1.5]); +} + +fn sit_harness(is_sitting: bool, exists: bool) -> RlvHarness { + let h = harness(); + h.queries.lock().unwrap().is_sitting = is_sitting; + h.queries + .lock() + .unwrap() + .object_exists + .insert(guid(OBJECT), exists); + h +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_Default::test 24e45ba898cb8ed0919369d07a39d0b21982fa4fc4c41eb4835ba765c05e2469 translated +#[test] +fn force_sit() { + let h = sit_harness(false, true); + block_on(h.process(&format!("@sit:{OBJECT}=force"))).unwrap(); + assert_eq!(h.actions.lock().unwrap().sits, vec![guid(OBJECT)]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedUnsit_WhileStanding::test 8d179277f6a7f98ead813de7bd02ab5146b46ce240d1d5e4a69037885e5f626a translated +#[test] +fn force_sit_with_unsit_restricted_while_standing() { + let h = sit_harness(false, true); + block_on(h.process("@unsit=n")).unwrap(); + block_on(h.process(&format!("@sit:{OBJECT}=force"))).unwrap(); + assert_eq!(h.actions.lock().unwrap().sits, vec![guid(OBJECT)]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedUnsit_WhileSeated::test 1f2debd6e644c86698577e1c04db96d6aac43267ceae8de9f28435b62ff92817 translated +#[test] +fn force_sit_rejects_unsit_restriction_while_seated() { + let h = sit_harness(true, true); + block_on(h.process("@unsit=n")).unwrap(); + assert!(!block_on(h.process(&format!("@sit:{OBJECT}=force"))).unwrap()); + assert!(h.actions.lock().unwrap().sits.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedSit::test 8ac0964fc07bb5e860123ce8de1102c2254ffde28f246896d81f7524c3c87021 translated +#[test] +fn force_sit_rejects_sit_restriction() { + let h = sit_harness(true, true); + block_on(h.process("@sit=n")).unwrap(); + assert!(!block_on(h.process(&format!("@sit:{OBJECT}=force"))).unwrap()); + assert!(h.actions.lock().unwrap().sits.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedStandTp::test bc0c259477ef5f1e5a76b1081f604ba421c82340f738e37fd52b91a421037cf6 translated +#[test] +fn force_sit_rejects_standtp_restriction() { + let h = sit_harness(true, true); + block_on(h.process("@standtp=n")).unwrap(); + assert!(!block_on(h.process(&format!("@sit:{OBJECT}=force"))).unwrap()); + assert!(h.actions.lock().unwrap().sits.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_InvalidObject::test 787bfe6fefe3895b4bcb5da027ffeac70bf67c3c7a295dbbf7e1526156290040 translated +#[test] +fn force_sit_rejects_invalid_object() { + let h = sit_harness(false, false); + assert!(!block_on(h.process(&format!("@sit:{OBJECT}=force"))).unwrap()); + assert!(h.actions.lock().unwrap().sits.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs::SitGroundCommandTests.ForceSitGround::test 2319cd49aaae5ac824bc5ffd4f33a5e4f3f684ebec1dc1f1732071eb44ee1cb8 translated +#[test] +fn force_sit_ground() { + let h = harness(); + assert!(block_on(h.process("@sitground=force")).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs::SitGroundCommandTests.ForceSitGround_RestrictedSit::test 5ac661e9f7fa93cf6ca76aa69f6d84ac61ebd22f26620203f084777010b6de4d translated +#[test] +fn force_sit_ground_rejects_sit_restriction() { + let h = harness(); + block_on(h.process("@sit=n")).unwrap(); + assert!(!block_on(h.process("@sitground=force")).unwrap()); +} + +fn teleport(command: &str) -> Vec { + let h = harness(); + block_on(h.process(command)).unwrap(); + h.actions.lock().unwrap().teleports.clone() +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_Default::test 1613e723da60f84dfb54a7345b96566a055a9b7a017e66b0929d6f37c04b62a3 translated +#[test] +fn teleport_default() { + assert_eq!( + teleport("@tpto:1.5/2.5/3.5=force"), + vec![TeleportCall { + x: 1.5, + y: 2.5, + z: 3.5, + region: None, + look_at: None + }] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_WithRegion::test 50c5f63c5cb0da221846fd7c0c7f2d471bef2aa2ab203a9b5bdb4eceeb3d97bf translated +#[test] +fn teleport_with_region() { + assert_eq!( + teleport("@tpto:Region Name/1.5/2.5/3.5=force"), + vec![TeleportCall { + x: 1.5, + y: 2.5, + z: 3.5, + region: Some("Region Name".into()), + look_at: None + }] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_WithRegionAndLookAt::test c9030189de7acdad0db5c8f83e49ee0433ec0588a35436ab39cdcf40a4fd4d36 translated +#[test] +#[allow(clippy::approx_constant)] // Exact C# fixture literal, not a PI approximation. +fn teleport_with_region_and_look_at() { + assert_eq!( + teleport("@tpto:Region Name/1.5/2.5/3.5;3.1415=force"), + vec![TeleportCall { + x: 1.5, + y: 2.5, + z: 3.5, + region: Some("Region Name".into()), + look_at: Some(Some(3.1415)) + }] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_RestrictedUnsit::test 4dc00a1048593f7468271a4262cf311a3516ea4a53e288eeca69d1297dafc9f2 translated +#[test] +fn teleport_rejects_unsit_restriction() { + let h = harness(); + block_on(h.process("@unsit=n")).unwrap(); + assert!(!block_on(h.process("@tpto:1.5/2.5/3.5=force")).unwrap()); + assert!(h.actions.lock().unwrap().teleports.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_RestrictedTpLoc::test 3e1ecc1d04973a496edf9d156e52ba76a93ff431181a3ece93c0e4f82884895a translated +#[test] +fn teleport_rejects_tploc_restriction() { + let h = harness(); + block_on(h.process("@tploc=n")).unwrap(); + assert!(!block_on(h.process("@tpto:1.5/2.5/3.5=force")).unwrap()); + assert!(h.actions.lock().unwrap().teleports.is_empty()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs::UnsitCommandTests.ForceUnSit::test 2f91e1112e1c4e97b79a4dc7bcd4d4a85f13125bd636f81147ce5b396366ebed translated +#[test] +fn force_unsit() { + let h = harness(); + assert!(block_on(h.process("@unsit=force")).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs::UnsitCommandTests.ForceUnSit_RestrictedUnsit::test 2ecf210dc83b06018cdcf44cb44bdf43f1040133e7523542a2e1126d6d98004f translated +#[test] +fn force_unsit_rejects_unsit_restriction() { + let h = harness(); + block_on(h.process("@unsit=n")).unwrap(); + assert!(!block_on(h.process("@unsit=force")).unwrap()); +} diff --git a/tests/compat/tests/rlv_simple_restrictions_semantics.rs b/tests/compat/tests/rlv_simple_restrictions_semantics.rs new file mode 100644 index 0000000..59762f7 --- /dev/null +++ b/tests/compat/tests/rlv_simple_restrictions_semantics.rs @@ -0,0 +1,329 @@ +// Exact Rust translations of the simple RLV permission restrictions. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, guid}; +use libremetaverse_rlv::{ + RlvPermissionsService, RlvPermissionsServiceObjectLocation as ObjectLocation, + RlvPermissionsServiceTouchLocation as TouchLocation, +}; +use libremetaverse_types::Error; + +fn check_simple( + command: &str, + permission: fn(&RlvPermissionsService) -> Result, +) -> [bool; 2] { + let h = RlvHarness::new().expect("RlvService constructor"); + block_on(h.process(&format!("@{command}=n"))).unwrap(); + let restricted = permission(&h.service.permissions()).unwrap(); + block_on(h.process(&format!("@{command}=y"))).unwrap(); + [restricted, permission(&h.service.permissions()).unwrap()] +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AllowIdleRestrictionTests.cs::AllowIdleRestrictionTests.CanAllowIdle::test 6278bb1a70f024f687080cb8e8a56bbc923f679fb4adb61c6c91c3397a3de7fc translated +#[test] +fn allow_idle_restriction() { + assert_eq!( + check_simple("allowIdle", RlvPermissionsService::can_allow_idle), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/AlwaysRunRestrictionTests.cs::AlwaysRunRestrictionTests.CanAlwaysRun::test 9c0a34e0960e3e2a834ccfc1c129a1f5a8f8c6cfd30b322671b4e5c4cd25a24c translated +#[test] +fn always_run_restriction() { + assert_eq!( + check_simple("alwaysRun", RlvPermissionsService::can_always_run), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ChatNormalTests.cs::ChatNormalTests.CanChatNormal::test 9a23c49327636e769c7ff2688a0649d441f3531406e8f51e152ec7186a312287 translated +#[test] +fn chat_normal_restriction() { + assert_eq!( + check_simple("chatNormal", RlvPermissionsService::can_chat_normal), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ChatShoutRestrictionTests.cs::ChatShoutRestrictionTests.CanChatShout::test 493e1dd87afaaa7f8183e677df5c32d00f150ffcdd53f9afad8684672837aa28 translated +#[test] +fn chat_shout_restriction() { + assert_eq!( + check_simple("chatShout", RlvPermissionsService::can_chat_shout), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ChatWhisperRestrictionTests.cs::ChatWhisperRestrictionTests.CanChatWhisper::test 67c5d2cb8b3e9424fbcf08378c2a28368fe07aa83ec028df7cf88b91576d3e9f translated +#[test] +fn chat_whisper_restriction() { + assert_eq!( + check_simple("chatWhisper", RlvPermissionsService::can_chat_whisper), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/DefaultWearRestrictionTests.cs::DefaultWearRestrictionTests.CanDefaultWear::test 64eef4c82d1c5a21bc923cfd44616ddc1a5e6403a9a1c5ad6bd2e5ee06e9704c translated +#[test] +fn default_wear_restriction() { + assert_eq!( + check_simple("defaultWear", RlvPermissionsService::can_default_wear), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FlyRestrictionTests.cs::FlyRestrictionTests.CanFly::test 5f60149edccece6b8a6827bbdc6f593ffd863961c13b506f1171aa0cf37fd5b7 translated +#[test] +fn fly_restriction() { + assert_eq!( + check_simple("fly", RlvPermissionsService::can_fly), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs::InteractRestrictionTests.CanInteract::test 935d319e07b613ba39b06db30cfd18306670f7dc97186db38c0374c3aac6901e translated +#[test] +fn interact_restriction() { + assert_eq!( + check_simple("interact", RlvPermissionsService::can_interact), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs::InteractRestrictionTests.CanInteract_default::test 53b9d7f7cfd63a10538060624f81b7a6b1754a7462c230671ed909698dd18923 translated +#[test] +fn interact_restriction_blocks_touch_edit_rez_and_sit() { + let h = RlvHarness::new().unwrap(); + block_on(h.process("@interact=n")).unwrap(); + let permissions = h.service.permissions(); + let object = guid("00000000-0000-4000-8000-000000000000"); + let user = Some(Some(guid("55555555-5555-4555-8555-555555555555"))); + for (location, user, distance) in [ + (TouchLocation::AttachedSelf, None, None), + (TouchLocation::AttachedOther, user, None), + (TouchLocation::RezzedInWorld, None, Some(Some(5.0))), + (TouchLocation::Hud, None, None), + ] { + assert!( + !permissions + .can_touch(location, object, user, distance) + .unwrap() + ); + } + for location in [ + ObjectLocation::Attached, + ObjectLocation::RezzedInWorld, + ObjectLocation::Hud, + ] { + assert!(!permissions.can_edit(location, Some(Some(object))).unwrap()); + } + assert!(!permissions.can_rez().unwrap()); + assert!(!permissions.can_sit().unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/JumpRestrictionTests.cs::JumpRestrictionTests.CanJump::test 104374c66e6748d101b69ed5343d9972f29e937305cb17f90244ffa74fc7ed35 translated +#[test] +fn jump_restriction() { + assert_eq!( + check_simple("jump", RlvPermissionsService::can_jump), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RezRestrictionTests.cs::RezRestrictionTests.CanRez::test 5cae348cc241a884803692031c0af4f33fb3a2ce8331129a9866c5364599eccb translated +#[test] +fn rez_restriction() { + assert_eq!( + check_simple("rez", RlvPermissionsService::can_rez), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs::SendChatRestrictionTests.CanSendChat::test 36cfbe5123b4b37ee43f0b4ba6453ebbe2754960825b1a8481e77e4f3a0e8015 translated +#[test] +fn send_chat_restriction() { + assert_eq!( + check_simple("sendChat", RlvPermissionsService::can_send_chat), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs::SendChatRestrictionTests.CanChat_SendChatRestriction::test 793a31da070038e90c41e4bdb1161daaf51376617a7444867f19c7125ad34313 translated +#[test] +fn send_chat_restriction_preserves_slash_messages_and_private_channels() { + let h = RlvHarness::new().unwrap(); + block_on(h.process("@sendchat=n")).unwrap(); + let permissions = h.service.permissions(); + assert!(!permissions.can_chat(0, "Hello".into()).unwrap()); + assert!(permissions.can_chat(0, "/me says Hello".into()).unwrap()); + assert!(permissions.can_chat(0, "/ something?".into()).unwrap()); + assert!( + !permissions + .can_chat(0, "/me says Hello ^_^".into()) + .unwrap() + ); + assert!(permissions.can_chat(5, "Hello".into()).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendGestureRestrictionTests.cs::SendGestureRestrictionTests.CanSendGesture::test 91367110c04e3c6ad173f56f209a166d828560850d3d084893e899bcc756428a translated +#[test] +fn send_gesture_restriction() { + assert_eq!( + check_simple("sendGesture", RlvPermissionsService::can_send_gesture), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SetDebugRestrictionTests.cs::SetDebugRestrictionTests.CanSetDebug::test d4fb9da4879ef8d1be115e00b7a8de959fd58e32722bc9e2985bca8e97dd2ce3 translated +#[test] +fn set_debug_restriction() { + assert_eq!( + check_simple("setDebug", RlvPermissionsService::can_set_debug), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SetEnvRestrictionTests.cs::SetEnvRestrictionTests.CanSetEnv::test bb4c82afd643d267264467282cdfe09095c804079e73dd15179e1aa0b063c08f translated +#[test] +fn set_env_restriction() { + assert_eq!( + check_simple("setEnv", RlvPermissionsService::can_set_env), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SetGroupRestrictionTests.cs::SetGroupRestrictionTests.CanSetGroup::test 9d89210cbc5c188985a535ae045e44d296c796f700d4a1e2b7b4d75345cc4a6d translated +#[test] +fn set_group_restriction() { + assert_eq!( + check_simple("setGroup", RlvPermissionsService::can_set_group), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowInvRestrictionTests.cs::ShowInvRestrictionTests.CanShowInv::test b7c8bb7ad9d2c02c1c0168531c8ac0636885817a40b13bc006f4f5b20d28591c translated +#[test] +fn show_inventory_restriction() { + assert_eq!( + check_simple("showInv", RlvPermissionsService::can_show_inv), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowLocRestrictionTests.cs::ShowLocRestrictionTests.CanShowLoc::test a8b154f2db967ab72781f31dcd7701d204f66ece1ef95a30cc67d788c78da617 translated +#[test] +fn show_location_restriction() { + assert_eq!( + check_simple("showLoc", RlvPermissionsService::can_show_loc), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowMiniMapRestrictionTests.cs::ShowMiniMapRestrictionTests.CanShowMiniMap::test da901135b533aee1b025cf5dd925e857b4734ea00770ced4518f501453ea9736 translated +#[test] +fn show_mini_map_restriction() { + assert_eq!( + check_simple("showMiniMap", RlvPermissionsService::can_show_mini_map), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNearbyRestrictionTests.cs::ShowNearbyRestrictionTests.CanShowNearby::test 4faa79795b1143934efbd8ebea7a926b270dd5d1e69f8a64f496063d570d868d translated +#[test] +fn show_nearby_restriction() { + assert_eq!( + check_simple("showNearby", RlvPermissionsService::can_show_nearby), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowWorldMapRestrictionTests.cs::ShowWorldMapRestrictionTests.CanShowWorldMap::test da16f247df929f83ed21377869790c00cb5922fa6086da3787e90570f5684f67 translated +#[test] +fn show_world_map_restriction() { + assert_eq!( + check_simple("showWorldMap", RlvPermissionsService::can_show_world_map), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitRestrictionTests.cs::SitRestrictionTests.CanSit::test 813906dbfd09bb02c129a794f40a2f5dcda6e73d232e167359a6360a350fa4b4 translated +#[test] +fn sit_restriction() { + assert_eq!( + check_simple("sit", RlvPermissionsService::can_sit), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/StandTpRestrictionTests.cs::StandTpRestrictionTests.CanStandTp::test 0f694e59d32c3c97fbee072d591b74c89561f4648bd3440002d8f54db0058a94 translated +#[test] +fn stand_tp_restriction() { + assert_eq!( + check_simple("standTp", RlvPermissionsService::can_stand_tp), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TempRunRestrictionTests.cs::TempRunRestrictionTests.CanTempRun::test 8893bb24bf10de7e914874c347ac5b73982d33925a1cf29ae8c361c3087be408 translated +#[test] +fn temp_run_restriction() { + assert_eq!( + check_simple("tempRun", RlvPermissionsService::can_temp_run), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLmRestrictionTests.cs::TpLmRestrictionTests.CanTpLm::test 847bd3264fd831837d8dab25b235450f19591fef3b3bd0315021727453ad64ee translated +#[test] +fn tp_landmark_restriction() { + assert_eq!( + check_simple("tpLm", RlvPermissionsService::can_tp_lm), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLocRestrictionTests.cs::TpLocRestrictionTests.CanTpLoc::test 8e5e2ab1b55b710ecce509b141ccac9bcd9ebbad479868496645ac89574bd089 translated +#[test] +fn tp_location_restriction() { + assert_eq!( + check_simple("tpLoc", RlvPermissionsService::can_tp_loc), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/UnsitRestrictionTests.cs::UnsitRestrictionTests.CanUnsit::test 2341a0d230eace08d612a1ae3f9aac7b5a1d3d914f04b6ada4726523e9bd3a37 translated +#[test] +fn unsit_restriction() { + assert_eq!( + check_simple("unsit", RlvPermissionsService::can_unsit), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ViewNoteRestrictionTests.cs::ViewNoteRestrictionTests.CanViewNote::test 954472ccc5e060f987260c7d8f87f09dcb252e832c22810ed48dd316a173cf5e translated +#[test] +fn view_note_restriction() { + assert_eq!( + check_simple("viewNote", RlvPermissionsService::can_view_note), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ViewScriptRestrictionTests.cs::ViewScriptRestrictionTests.CanViewScript::test 5e9246991c14d80bc83aad4b5944bd9701dc32b354a701a378def8924f7b5315 translated +#[test] +fn view_script_restriction() { + assert_eq!( + check_simple("viewScript", RlvPermissionsService::can_view_script), + [false, true] + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ViewTextureRestrictionTests.cs::ViewTextureRestrictionTests.CanViewTexture::test d1ee89e12ea9c2d971b4d11c82f3129412fd56fa28d2bd2fb923f082eda62571 translated +#[test] +fn view_texture_restriction() { + assert_eq!( + check_simple("viewTexture", RlvPermissionsService::can_view_texture), + [false, true] + ); +} diff --git a/tests/compat/tests/rlv_social_restrictions_semantics.rs b/tests/compat/tests/rlv_social_restrictions_semantics.rs new file mode 100644 index 0000000..8faed99 --- /dev/null +++ b/tests/compat/tests/rlv_social_restrictions_semantics.rs @@ -0,0 +1,605 @@ +// Exact Rust translations of the message, sharing, and name restriction tests. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, guid}; +use libremetaverse_rlv::RlvPermissionsServiceHoverTextLocation as HoverTextLocation; + +const USER_1: &str = "00000000-0000-4000-8000-000000000000"; +const USER_2: &str = "11111111-1111-4111-8111-111111111111"; +const SENDER_2: &str = "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"; +const SENDER_3: &str = "22222222-2222-4222-8222-222222222222"; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn process(h: &RlvHarness, commands: &[&str]) { + for command in commands { + block_on(h.process(command)).unwrap(); + } +} + +fn receive_im(h: &RlvHarness, user: &str, group: Option<&str>) -> bool { + h.service + .permissions() + .can_receive_im( + "Hello world".into(), + Some(Some(guid(user))), + group.map(Into::into), + ) + .unwrap() +} + +fn send_im(h: &RlvHarness, user: &str, group: Option<&str>) -> bool { + h.service + .permissions() + .can_send_im( + "Hello world".into(), + Some(Some(guid(user))), + group.map(Into::into), + ) + .unwrap() +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvChatExceptionTests.cs::RecvChatExceptionTests.CanRecvChat::test 017906038e211352d7d2751fafbcab5028cd8b189e7aa29a6202ff578976a23c translated +#[test] +fn receive_chat_blocks_chat_but_not_emote() { + let h = harness(); + process(&h, &["@recvchat=n"]); + let permissions = h.service.permissions(); + assert!( + !permissions + .can_receive_chat("Hello world".into(), guid(SENDER_2)) + .unwrap() + ); + assert!( + permissions + .can_receive_chat("/me says Hello world".into(), guid(SENDER_2)) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvChatFromRestrictionTests.cs::RecvChatFromRestrictionTests.CanRecvChatFrom::test aaf24dc0b8533a7e93cc567fecbb866067b72da1837207869f879647840bfa21 translated +#[test] +fn receive_chat_from_one_user() { + let h = harness(); + process(&h, &[&format!("@recvchatfrom:{USER_1}=add")]); + let permissions = h.service.permissions(); + assert!( + !permissions + .can_receive_chat("Hello world".into(), guid(USER_1)) + .unwrap() + ); + assert!( + permissions + .can_receive_chat("/me says Hello world".into(), guid(USER_1)) + .unwrap() + ); + assert!( + permissions + .can_receive_chat("Hello world".into(), guid(USER_2)) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvChatSecExceptionTests.cs::RecvChatSecExceptionTests.CanRecvChat_Secure::test cba089ebe607088e37be285918a1d2c674f1acc4cad075733108afea3ad0279b translated +#[test] +fn secure_receive_chat_exceptions_are_sender_scoped() { + let h = harness(); + process(&h, &["@recvchat_sec=n"]); + block_on(h.process_from(&format!("@recvchat:{USER_1}=add"), SENDER_2, "Sender 2")).unwrap(); + process(&h, &[&format!("@recvchat:{USER_2}=add")]); + let permissions = h.service.permissions(); + assert!( + !permissions + .can_receive_chat("Hello world".into(), guid(USER_1)) + .unwrap() + ); + assert!( + permissions + .can_receive_chat("Hello world".into(), guid(USER_2)) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteFromRestrictionTests.cs::RecvEmoteFromRestrictionTests.CanRecvChat_RecvEmoteFrom::test d07ded724315cf135603d4dc5a684e5a59a5cf8415963acc30d402ad81916ac1 translated +#[test] +fn receive_emote_from_one_user() { + let h = harness(); + process(&h, &[&format!("@recvemotefrom:{USER_1}=n")]); + let permissions = h.service.permissions(); + assert!( + permissions + .can_receive_chat("Hello world".into(), guid(USER_1)) + .unwrap() + ); + assert!( + permissions + .can_receive_chat("Hello world".into(), guid(USER_2)) + .unwrap() + ); + assert!( + !permissions + .can_receive_chat("/me says Hello world".into(), guid(USER_1)) + .unwrap() + ); + assert!( + permissions + .can_receive_chat("/me says Hello world".into(), guid(USER_2)) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteRestrictionTests.cs::RecvEmoteRestrictionTests.CanRecvChat_RecvEmote::test 438b72e6c44570580bf41aa7b8ed00afb800eff8836ee971eab9fc6a00fecc19 translated +#[test] +fn receive_emote_restriction() { + let h = harness(); + process(&h, &["@recvemote=n"]); + let permissions = h.service.permissions(); + assert!( + permissions + .can_receive_chat("Hello world".into(), guid(SENDER_2)) + .unwrap() + ); + assert!( + !permissions + .can_receive_chat("/me says Hello world".into(), guid(SENDER_2)) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteSecRestrictionTests.cs::RecvEmoteSecRestrictionTests.CanRecvChat_RecvEmote_Secure::test 9e1f72426762569b1c650fdf80c53e4a590b6476f8539fff6e110101e48459e8 translated +#[test] +fn secure_receive_emote_exceptions_are_sender_scoped() { + let h = harness(); + process(&h, &["@recvemote_sec=n"]); + block_on(h.process_from(&format!("@recvemote:{USER_1}=add"), SENDER_2, "Sender 2")).unwrap(); + process(&h, &[&format!("@recvemote:{USER_2}=add")]); + let permissions = h.service.permissions(); + assert!( + permissions + .can_receive_chat("Hello world".into(), guid(USER_1)) + .unwrap() + ); + assert!( + permissions + .can_receive_chat("Hello world".into(), guid(USER_2)) + .unwrap() + ); + assert!( + !permissions + .can_receive_chat("/me says Hello world".into(), guid(USER_1)) + .unwrap() + ); + assert!( + permissions + .can_receive_chat("/me says Hello world".into(), guid(USER_2)) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMFrom::test ebe072c7e1c8ba440b560c2e4a0aa5151ba546f5b6cd5505012958e901c58201 translated +#[test] +fn receive_im_from_one_user() { + let h = harness(); + process(&h, &[&format!("@recvimfrom:{USER_1}=n")]); + assert!(!receive_im(&h, USER_1, None)); + assert!(receive_im(&h, USER_2, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMFrom_Group::test d3d155240723ca2d379f00111a3b27acb41786615a2f5b0ad2c968040d7f4447 translated +#[test] +fn receive_im_from_one_group() { + let h = harness(); + process(&h, &["@recvimfrom:First Group=n"]); + assert!(!receive_im(&h, USER_1, Some("First Group"))); + assert!(receive_im(&h, USER_2, Some("Second Group"))); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMTo_AllGroups::test dd1050e7ef3e9805b88964822485856d6b2e5e98ee647ee08251cbc5bd452208 translated +#[test] +fn receive_im_from_all_groups() { + let h = harness(); + process(&h, &["@recvimfrom:allgroups=n"]); + assert!(!receive_im(&h, USER_1, Some("First Group"))); + assert!(!receive_im(&h, USER_2, Some("Second Group"))); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImRestrictionTests.cs::RecvImRestrictionTests.CanReceiveIM::test 9c88e79ed2686e571e32ccecbc93c130423b966ff4e65e72f228f1713e5047cd translated +#[test] +fn receive_im_restriction() { + let h = harness(); + process(&h, &["@recvim=n"]); + assert!( + !h.service + .permissions() + .can_receive_im("Hello".into(), Some(Some(guid(USER_1))), None) + .unwrap() + ); + assert!( + !h.service + .permissions() + .can_receive_im( + "Hello".into(), + Some(Some(guid(USER_1))), + Some("Group Name".into()) + ) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure::test e549fe9719efd180f8ab8c80b989701cd23ebf07cd004d9a5a18a0cc7db12e64 translated +#[test] +fn secure_receive_im_user_exceptions_are_sender_scoped() { + let h = harness(); + process(&h, &["@recvim_sec=n", &format!("@recvim:{USER_1}=add")]); + block_on(h.process_from(&format!("@recvim:{USER_2}=add"), SENDER_2, "Sender 2")).unwrap(); + assert!(receive_im(&h, USER_1, None)); + assert!(!receive_im(&h, USER_2, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure_Group::test 13653ee7443d2eca88f2940d0c3804de3685dcf6c9277a4717a42dad4c01fca4 translated +#[test] +fn secure_receive_im_group_exception() { + let h = harness(); + process(&h, &["@recvim_sec=n", "@recvim:Group Name=add"]); + block_on(h.process_from("@recvim:allgroups=add", SENDER_2, "Sender 2")).unwrap(); + assert!(receive_im(&h, USER_1, Some("Group Name"))); + assert!(!receive_im(&h, USER_1, Some("Another Group"))); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure_AllGroups::test d99435b52a3b774ab5d2bb6911824fa45803fe82cfe0b2c192a05473b72463c8 translated +#[test] +fn secure_receive_im_all_groups_exception() { + let h = harness(); + process(&h, &["@recvim_sec=n", "@recvim:allgroups=add"]); + assert!(receive_im(&h, USER_1, Some("Group Name"))); + assert!(receive_im(&h, USER_1, Some("Another Group"))); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendChannelRestrictionTests.cs::SendChannelRestrictionTests.CanSendChannel::test 8496734391f57cf2f2d8156f3b5a9ad9147c959e3bf99f9e76a4072e971a5b42 translated +#[test] +fn send_channel_restriction() { + let h = harness(); + process(&h, &["@sendchannel=n"]); + assert!( + !h.service + .permissions() + .can_chat(123, "Hello world".into()) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs::SendChannelSecRestrictionTests.CanSendChannel_Secure::test 5bd9096e9af488d5cdb08ed78120ef46f81f9be1eaf132c49a955eb07ae904eb translated +#[test] +fn secure_send_channel_restrictions_are_sender_scoped() { + let h = harness(); + process(&h, &["@sendchannel_sec=n", "@sendchannel:123=n"]); + block_on(h.process_from("@sendchannel:456=n", SENDER_2, "Sender 2")).unwrap(); + assert!( + h.service + .permissions() + .can_chat(123, "Hello world".into()) + .unwrap() + ); + assert!( + !h.service + .permissions() + .can_chat(456, "Hello world".into()) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs::SendChannelSecRestrictionTests.CanSendChannel_Secure_Exception::test e675121ba9f6ab8f6e4484e66d76d0dd14f8ef39122c8fff2878ba5e6b3a7409 translated +#[test] +fn secure_send_channel_exception() { + let h = harness(); + process(&h, &["@sendchannel_sec=n", "@sendchannel_sec:123=n"]); + assert!( + h.service + .permissions() + .can_chat(123, "Hello world".into()) + .unwrap() + ); + assert!( + !h.service + .permissions() + .can_chat(456, "Hello world".into()) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImRestrictionTests.cs::SendImRestrictionTests.CanSendIM::test c63ab3a41b6b302e7c84c54374c7193335840bafc40f2d0f2b1c3a2787b26203 translated +#[test] +fn send_im_restriction() { + let h = harness(); + process(&h, &["@sendim=n"]); + assert!( + !h.service + .permissions() + .can_send_im("Hello".into(), Some(Some(guid(USER_1))), None) + .unwrap() + ); + assert!( + !h.service + .permissions() + .can_send_im( + "Hello".into(), + Some(Some(guid(USER_1))), + Some("Group Name".into()) + ) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure::test 65422234501bcbf151f27e0d45c74726e670665f39d90df23396f79450ba2b91 translated +#[test] +fn secure_send_im_user_exceptions_are_sender_scoped() { + let h = harness(); + process(&h, &["@sendim_sec=n", &format!("@sendim:{USER_1}=add")]); + block_on(h.process_from(&format!("@sendim:{USER_2}=add"), SENDER_2, "Sender 2")).unwrap(); + assert!(send_im(&h, USER_1, None)); + assert!(!send_im(&h, USER_2, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure_Group::test 4ed2e6416a86eb2406e20bbb7e60a380de25577ad034ba613530ed28f6001df9 translated +#[test] +fn secure_send_im_group_exception() { + let h = harness(); + process(&h, &["@sendim_sec=n", "@sendim:Group Name=add"]); + block_on(h.process_from("@sendim:allgroups=add", SENDER_2, "Sender 2")).unwrap(); + assert!(send_im(&h, USER_1, Some("Group Name"))); + assert!(!send_im(&h, USER_1, Some("Another Group"))); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure_AllGroups::test a4b699c9ada01ca4ce4d535739178e5310affa938d02dfaede6d034488d24f5f translated +#[test] +fn secure_send_im_all_groups_exception() { + let h = harness(); + process(&h, &["@sendim_sec=n", "@sendim:allgroups=add"]); + assert!(send_im(&h, USER_1, Some("Group Name"))); + assert!(send_im(&h, USER_1, Some("Another Group"))); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo::test 38258cda1081160b6b34f8e909adbc683a0f08efce8c63066bcac09835e5cdcc translated +#[test] +fn send_im_to_one_user() { + let h = harness(); + process(&h, &[&format!("@sendimto:{USER_1}=n")]); + assert!(!send_im(&h, USER_1, None)); + assert!(send_im(&h, USER_2, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo_Group::test 1e12f7e3dbbee7d8dfb757fc8797644a353dfaa995e343e59124aa85126d70aa translated +#[test] +fn send_im_to_one_group() { + let h = harness(); + process(&h, &["@sendimto:First Group=n"]); + assert!(!send_im(&h, USER_1, Some("First Group"))); + assert!(send_im(&h, USER_2, Some("Second Group"))); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo_AllGroups::test bc9b87ab7b171c76987ddaf94f05c0ac2ad8dc0c1f24f5dfce2f4125e7b28df5 translated +#[test] +fn send_im_to_all_groups() { + let h = harness(); + process(&h, &["@sendimto:allgroups=n"]); + assert!(!send_im(&h, USER_1, Some("First Group"))); + assert!(!send_im(&h, USER_2, Some("Second Group"))); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShareRestrictionTests.cs::ShareRestrictionTests.CanShare::test 23052e5792ff72624d45b54ccfd02fa5d8025d977010f1e8d34a90d27a4d0e29 translated +#[test] +fn share_restriction() { + let h = harness(); + process(&h, &["@share=n"]); + assert!(!h.service.permissions().can_share(None).unwrap()); + assert!( + !h.service + .permissions() + .can_share(Some(Some(guid(SENDER_2)))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs::ShareSecRestrictionTests.CanShare_Secure_Default::test 6d61bafb190791ceaccb6c46cde3adf5b5479e6b5e76bafeadd0942400389248 translated +#[test] +fn secure_share_default() { + let h = harness(); + process(&h, &["@share_sec=n"]); + assert!(!h.service.permissions().can_share(None).unwrap()); + assert!( + !h.service + .permissions() + .can_share(Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + !h.service + .permissions() + .can_share(Some(Some(guid(USER_2)))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs::ShareSecRestrictionTests.CanShare_Secure::test e1aed5b3b8efccef47094788c3221e20240c671c1004d6d6bd899e5d9ddd51fa translated +#[test] +fn secure_share_exceptions_are_sender_scoped() { + let h = harness(); + process(&h, &["@share_sec=n", &format!("@share:{USER_1}=add")]); + block_on(h.process_from(&format!("@share:{USER_2}=add"), SENDER_2, "Sender 2")).unwrap(); + assert!(!h.service.permissions().can_share(None).unwrap()); + assert!( + h.service + .permissions() + .can_share(Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + !h.service + .permissions() + .can_share(Some(Some(guid(USER_2)))) + .unwrap() + ); +} + +fn hover(h: &RlvHarness, location: HoverTextLocation, object: &str) -> bool { + h.service + .permissions() + .can_show_hover_text(location, Some(Some(guid(object)))) + .unwrap() +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextAllRestrictionTests.cs::ShowHoverTextAllRestrictionTests.CanShowHoverTextAll::test 6a855738e87477d31dc7867d0c75ba1bf563e2b1e180f54759657a58b7da9793 translated +#[test] +fn show_hover_text_all_restriction() { + let h = harness(); + process(&h, &["@showhovertextall=n"]); + assert!(!hover(&h, HoverTextLocation::World, USER_1)); + assert!(!hover(&h, HoverTextLocation::Hud, USER_1)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextHudRestrictionTests.cs::ShowHoverTextHudRestrictionTests.CanShowHoverTextHud::test 9d08e2a3eb303b14c4b222cae5d52537e81a7d9cfc9fcfe9625d513b6311a6ed translated +#[test] +fn show_hover_text_hud_restriction() { + let h = harness(); + process(&h, &["@showhovertexthud=n"]); + for object in [USER_1, USER_2] { + assert!(hover(&h, HoverTextLocation::World, object)); + assert!(!hover(&h, HoverTextLocation::Hud, object)); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextRestrictionTests.cs::ShowHoverTextRestrictionTests.CanShowHoverText::test 5642102d6832b227c37c14d0fbfc30921022c5789b811021805db6f3a2120f36 translated +#[test] +fn show_hover_text_one_object_restriction() { + let h = harness(); + process(&h, &[&format!("@showhovertext:{USER_1}=n")]); + assert!(!hover(&h, HoverTextLocation::World, USER_1)); + assert!(!hover(&h, HoverTextLocation::Hud, USER_1)); + assert!(hover(&h, HoverTextLocation::World, USER_2)); + assert!(hover(&h, HoverTextLocation::Hud, USER_2)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextWorldRestrictionTests.cs::ShowHoverTextWorldRestrictionTests.CanShowHoverTextWorld::test 1be82408fbc87f1525dc7652e01fbbc17a993b70a2268f0b742d035b37cbf70c translated +#[test] +fn show_hover_text_world_restriction() { + let h = harness(); + process(&h, &["@showhovertextworld=n"]); + for object in [USER_1, USER_2] { + assert!(!hover(&h, HoverTextLocation::World, object)); + assert!(hover(&h, HoverTextLocation::Hud, object)); + } +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNameTagsRestrictionTests.cs::ShowNameTagsRestrictionTests.CanShowNameTags::test 74e8a6aefdefb9eb41509f6b4438e6854e5ad0ace38ab663f445aae484e94e22 translated +#[test] +fn show_name_tags_restriction() { + let h = harness(); + process(&h, &["@shownametags=n"]); + assert!(!h.service.permissions().can_show_name_tags(None).unwrap()); + assert!( + !h.service + .permissions() + .can_show_name_tags(Some(Some(guid(SENDER_2)))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNamesRestrictionTests.cs::ShowNamesRestrictionTests.CanShowNames::test c44fe98d881a89af5db856e98f7bd7480d9bfb4378730002e518a7d1da412812 translated +#[test] +fn show_names_restriction() { + let h = harness(); + process(&h, &["@shownames=n"]); + assert!(!h.service.permissions().can_show_names(None).unwrap()); + assert!( + !h.service + .permissions() + .can_show_names(Some(Some(guid(SENDER_2)))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure_Default::test 98d2c84d2f226fbb4b03c365f3ab007142d87b1980dda3666ce5ec36909fc599 translated +#[test] +fn secure_show_names_default() { + let h = harness(); + process(&h, &["@shownames_sec=n"]); + assert!(!h.service.permissions().can_show_names(None).unwrap()); + assert!( + !h.service + .permissions() + .can_show_names(Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + !h.service + .permissions() + .can_show_names(Some(Some(guid(USER_2)))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure::test 90ae29916dc2b60cd3de336e4a37683de8967f448fef26af360e3d24278773d3 translated +#[test] +fn secure_show_names_exceptions_are_sender_scoped() { + let h = harness(); + process( + &h, + &["@shownames_sec=n", &format!("@shownames:{USER_1}=add")], + ); + block_on(h.process_from(&format!("@shownames:{USER_2}=add"), SENDER_3, "Sender 2")).unwrap(); + assert!(!h.service.permissions().can_show_names(None).unwrap()); + assert!( + h.service + .permissions() + .can_show_names(Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + !h.service + .permissions() + .can_show_names(Some(Some(guid(USER_2)))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure_Except::test 457772321f7fd1ea88a279e99a4b0a955e462652bac1fb7953b8455f3d67a155 translated +#[test] +fn secure_show_names_direct_exception() { + let h = harness(); + process( + &h, + &["@shownames_sec=n", &format!("@shownames_sec:{USER_1}=n")], + ); + assert!(!h.service.permissions().can_show_names(None).unwrap()); + assert!( + h.service + .permissions() + .can_show_names(Some(Some(guid(USER_1)))) + .unwrap() + ); + assert!( + !h.service + .permissions() + .can_show_names(Some(Some(guid(USER_2)))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/StartImRestrictionTests.cs::StartImRestrictionTests.CanStartIM::test cc8318d5233b947ca96939369de3a2fdc2c21468cc13a87c87908126c6e45500 translated +#[test] +fn start_im_restriction() { + let h = harness(); + process(&h, &["@startim=n"]); + assert!(!h.service.permissions().can_start_im(guid(USER_1)).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/StartImToRestrictionTests.cs::StartImToRestrictionTests.CanStartIMTo::test 0c7e19de2ecf94a6db09ee409ff88ff503e02d8dd8f7f11f427cebc51a3ac09f translated +#[test] +fn start_im_to_one_user() { + let h = harness(); + process(&h, &[&format!("@startimto:{USER_2}=n")]); + assert!(h.service.permissions().can_start_im(guid(USER_1)).unwrap()); + assert!(!h.service.permissions().can_start_im(guid(USER_2)).unwrap()); +} diff --git a/tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs b/tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs new file mode 100644 index 0000000..cd1b2d9 --- /dev/null +++ b/tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs @@ -0,0 +1,441 @@ +// Exact Rust translations of far-touch, touch, sit-teleport, and teleport restrictions. + +use libremetaverse_compat_tests::block_on; +use libremetaverse_compat_tests::rlv_support::{RlvHarness, guid}; +use libremetaverse_rlv::RlvPermissionsServiceTouchLocation as TouchLocation; + +const OBJECT_1: &str = "00000000-0000-4000-8000-000000000000"; +const OBJECT_2: &str = "11111111-1111-4111-8111-111111111111"; +const USER_1: &str = "55555555-5555-4555-8555-555555555555"; +const USER_2: &str = "66666666-6666-4666-8666-666666666666"; +const SENDER_2: &str = "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"; +const SENDER_3: &str = "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb"; + +fn harness() -> RlvHarness { + RlvHarness::new().expect("RlvService constructor") +} + +fn process(h: &RlvHarness, commands: &[&str]) { + for command in commands { + block_on(h.process(command)).unwrap(); + } +} + +fn far_touch(command: &str) -> (bool, f32) { + let h = harness(); + process(&h, &[command]); + let mut distance = 0.0; + let found = h + .service + .permissions() + .try_get_max_far_touch_distance(&mut distance); + (found, distance) +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch::case:ccd63fc5b9c064fb a5568e0040a3c0ac8875a11596b7d0799ac5169b919e4fc65587555b2d3edd52 translated +#[test] +fn far_touch_fartouch_value() { + assert_eq!(far_touch("@fartouch:0.9=n"), (true, 0.9)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch::case:ae3d093c6c7267ac a5568e0040a3c0ac8875a11596b7d0799ac5169b919e4fc65587555b2d3edd52 translated +#[test] +fn far_touch_touchfar_value() { + assert_eq!(far_touch("@touchfar:0.9=n"), (true, 0.9)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Synonym::case:ccd63fc5b9c064fb c7aff866d539ceb26cc028532a901f18b58bb020f34da56444f08c9f4df1eb52 translated +#[test] +fn far_touch_fartouch_synonym() { + assert_eq!(far_touch("@fartouch:0.9=n"), (true, 0.9)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Synonym::case:ae3d093c6c7267ac c7aff866d539ceb26cc028532a901f18b58bb020f34da56444f08c9f4df1eb52 translated +#[test] +fn far_touch_touchfar_synonym() { + assert_eq!(far_touch("@touchfar:0.9=n"), (true, 0.9)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Default::case:ccd63fc5b9c064fb e894c744ea780a0a46cd2387157077c1a62c3c6b982303f3b7bff0b5d950816a translated +#[test] +fn far_touch_fartouch_default() { + assert_eq!(far_touch("@fartouch=n"), (true, 1.5)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Default::case:ae3d093c6c7267ac e894c744ea780a0a46cd2387157077c1a62c3c6b982303f3b7bff0b5d950816a translated +#[test] +fn far_touch_touchfar_default() { + assert_eq!(far_touch("@touchfar=n"), (true, 1.5)); +} + +fn far_touch_multiple_matches(first: &str, second: &str) -> bool { + let h = harness(); + process( + &h, + &[&format!("@{first}:12.34=n"), &format!("@{second}:6.78=n")], + ); + let mut before_removal = 0.0; + let found_before = h + .service + .permissions() + .try_get_max_far_touch_distance(&mut before_removal); + process(&h, &[&format!("@{first}:6.78=y")]); + let mut after_removal = 0.0; + let found_after = h + .service + .permissions() + .try_get_max_far_touch_distance(&mut after_removal); + found_before + && found_after + && (after_removal - 12.34).abs() < 0.0001 + && (before_removal - 6.78).abs() < 0.0001 +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:5788809ef8877342 423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905 translated +#[test] +fn far_touch_multiple_fartouch_fartouch() { + assert!(far_touch_multiple_matches("fartouch", "fartouch")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:b3ebeae1885ed5db 423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905 translated +#[test] +fn far_touch_multiple_fartouch_touchfar() { + assert!(far_touch_multiple_matches("fartouch", "touchfar")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:07cf5c5cabecfebf 423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905 translated +#[test] +fn far_touch_multiple_touchfar_touchfar() { + assert!(far_touch_multiple_matches("touchfar", "touchfar")); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:8008f95bc76b47e9 423a8781a2de94943fa028ac64d61532509c90375cf1ca80edf1d0ef8edd9905 translated +#[test] +fn far_touch_multiple_touchfar_fartouch() { + assert!(far_touch_multiple_matches("touchfar", "fartouch")); +} + +fn sit_tp(h: &RlvHarness) -> (bool, f32) { + let mut distance = 0.0; + let active = h.service.permissions().can_sit_tp(&mut distance).unwrap(); + (active, distance) +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Default::test ddcdba94af060ede43f0d585688966ccd923238a2365164b32a301b04d83cdfc translated +#[test] +fn sit_tp_default() { + assert_eq!(sit_tp(&harness()), (false, 1.5)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Single::test 041c57829ab1032eed79e6f47c8b9026124b681fb6ffa4b3c5ac16b16d0b354b translated +#[test] +fn sit_tp_single() { + let h = harness(); + process(&h, &["@SitTp:2.5=n"]); + assert_eq!(sit_tp(&h), (true, 2.5)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_SingleSender::test feed9f3cca3395e1eb5a8d831304a4171e79f6e1d93f03a4aca0e27edba5ed6d translated +#[test] +fn sit_tp_multiple_single_sender() { + let h = harness(); + process(&h, &["@SitTp:3.5=n", "@SitTp:4.5=n", "@SitTp:2.5=n"]); + assert_eq!(sit_tp(&h), (true, 2.5)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_SingleSender_WithRemoval::test 4b26c525e0a13fbc79b280f0a6c3b0f9e3e0e664241e9f55a88eda3dd80b203a translated +#[test] +fn sit_tp_multiple_single_sender_with_removal() { + let h = harness(); + process( + &h, + &[ + "@SitTp:3.5=n", + "@SitTp:4.5=n", + "@SitTp:2.5=n", + "@SitTp:8.5=n", + "@SitTp:8.5=y", + ], + ); + assert_eq!(sit_tp(&h), (true, 2.5)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_MultipleSenders::test cd9e3508d44e2e008609ac0cc12d3e207ec454a3f5c6e36aa325d33be9b6718f translated +#[test] +fn sit_tp_multiple_senders() { + let h = harness(); + process(&h, &["@SitTp:3.5=n"]); + block_on(h.process_from("@SitTp:4.5=n", SENDER_2, "Sender 2")).unwrap(); + block_on(h.process_from("@SitTp:2.5=n", SENDER_3, "Sender 3")).unwrap(); + assert_eq!(sit_tp(&h), (true, 2.5)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Off::test e871d15d797e0f8f0b02613c2a421b47b87068c8757bbd0104cd15d406137854 translated +#[test] +fn sit_tp_off() { + let h = harness(); + process(&h, &["@SitTp:2.5=n", "@SitTp:2.5=y"]); + assert_eq!(sit_tp(&h), (false, 1.5)); +} + +fn touch( + h: &RlvHarness, + location: TouchLocation, + object: &str, + user: Option<&str>, + distance: Option, +) -> bool { + h.service + .permissions() + .can_touch( + location, + guid(object), + user.map(|value| Some(guid(value))), + distance.map(Some), + ) + .unwrap() +} + +fn touch_matrix(h: &RlvHarness) -> [bool; 4] { + [ + touch(h, TouchLocation::AttachedSelf, OBJECT_1, None, None), + touch( + h, + TouchLocation::AttachedOther, + OBJECT_1, + Some(USER_1), + None, + ), + touch(h, TouchLocation::RezzedInWorld, OBJECT_1, None, Some(5.0)), + touch(h, TouchLocation::Hud, OBJECT_1, None, None), + ] +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs::TouchAllRestrictionTests.TouchAll::test 06da3251125bf4d3b2d542cfba7fa0a7b0c18dc0f97024a57c0e0ddf6cfc8dd6 translated +#[test] +fn touch_all_default_permissions() { + assert_eq!(touch_matrix(&harness()), [true, true, true, true]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs::TouchAllRestrictionTests.TouchAll_default::test 9526d7bed6473afd41f97fb11ec950caae157865cec8eee719030ca109ab2681 translated +#[test] +fn touch_all_restricted() { + let h = harness(); + process(&h, &["@touchall=n"]); + assert_eq!(touch_matrix(&h), [false, false, false, true]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs::TouchAttachOtherRestrictionTests.TouchAttachOther_default::test 1f8157f5fd5db8b5a4596d5be6a5d780704cac85370204c77eca08da286adb86 translated +#[test] +fn touch_attach_other_default() { + let h = harness(); + process(&h, &["@touchattachother=n"]); + assert_eq!(touch_matrix(&h), [true, false, true, true]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs::TouchAttachOtherRestrictionTests.TouchAttachOther_Specific::test add9d393d4aaf03768239611a8a64b2ef73fc4c8561dbbc51950a10c006198e6 translated +#[test] +fn touch_attach_other_specific_user() { + let h = harness(); + process(&h, &[&format!("@touchattachother:{USER_2}=n")]); + assert!(touch(&h, TouchLocation::AttachedSelf, OBJECT_1, None, None)); + assert!(touch( + &h, + TouchLocation::AttachedOther, + OBJECT_1, + Some(USER_1), + None + )); + assert!(!touch( + &h, + TouchLocation::AttachedOther, + OBJECT_1, + Some(USER_2), + None + )); + assert!(touch( + &h, + TouchLocation::RezzedInWorld, + OBJECT_1, + None, + Some(5.0) + )); + assert!(touch(&h, TouchLocation::Hud, OBJECT_1, None, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAttachRestrictionTests.cs::TouchAttachRestrictionTests.TouchAttach_default::test 4c4c65f8ed4b29367c353a02e52c91e9402788ffd35c75e5a6a40a827710e20a translated +#[test] +fn touch_attach_default() { + let h = harness(); + process(&h, &["@touchattach=n"]); + assert_eq!(touch_matrix(&h), [false, false, true, true]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchAttachSelfRestrictionTests.cs::TouchAttachSelfRestrictionTests.TouchAttachSelf_default::test 09f7d7a45a9899746c1c63608f95db89ef2ae4a875437a2b594bb120da8139ff translated +#[test] +fn touch_attach_self_default() { + let h = harness(); + process(&h, &["@touchattachself=n"]); + assert_eq!(touch_matrix(&h), [false, true, true, true]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs::TouchHudRestrictionTests.TouchHud_default::test b15afadb1f45b51eb47651a9d890ed2a6b1de8066d986d9b1ccc33da734c0194 translated +#[test] +fn touch_hud_default() { + let h = harness(); + process(&h, &["@touchhud=n"]); + assert_eq!(touch_matrix(&h), [true, true, true, false]); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs::TouchHudRestrictionTests.TouchHud_specific::test 4c4e1a9493e5cf34f220ebec54c5373e1b30c81044803deece263dced5f7155d translated +#[test] +fn touch_hud_specific_object() { + let h = harness(); + process(&h, &[&format!("@touchhud:{OBJECT_2}=n")]); + assert_eq!(touch_matrix(&h), [true, true, true, true]); + assert!(!touch(&h, TouchLocation::Hud, OBJECT_2, None, None)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TouchWorldRestrictionTests.cs::TouchWorldRestrictionTests.TouchWorld_default::test 5995288721c44beaa329b266e15d619f2314c9ca74386145294183c7c509b42a translated +#[test] +fn touch_world_default() { + let h = harness(); + process(&h, &["@touchworld=n"]); + assert_eq!(touch_matrix(&h), [true, true, false, true]); +} + +fn tp_local_matches(command: &str, expected_distance: f32) -> bool { + let h = harness(); + process(&h, &[command]); + let mut distance = -1.0; + h.service.permissions().can_tp_local(&mut distance).unwrap() + && (distance - expected_distance).abs() < 0.0001 +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs::TpLocalRestrictionTests.CanTpLocal_Default::test 4b251429c6561c1d29f19f8fbc33dd0fb11344fe0d10962e789823ffedb3777b translated +#[test] +fn tp_local_default_distance() { + assert!(tp_local_matches("@TpLocal=n", 0.0)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs::TpLocalRestrictionTests.CanTpLocal::test f9dd3daf337533beab1f4c2dce488f44dea5d17880e8f61b33e3c17c1a4c776f translated +#[test] +fn tp_local_explicit_distance() { + assert!(tp_local_matches("@TpLocal:0.9=n", 0.9)); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs::TpLureRestrictionTests.CanTpLure_Default::test 595e468736aab4136404842adf36a79f37b9900c3ee3993079621a5a6c96dec1 translated +#[test] +fn tp_lure_default() { + let permissions = harness().service.permissions(); + assert!(permissions.can_tp_lure(None).unwrap()); + assert!(permissions.can_tp_lure(Some(Some(guid(SENDER_2)))).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs::TpLureRestrictionTests.CanTpLure::test a57f7803128d75a0f1ba35a1c7489f78ca99d7e5e540f06b84725da8a5cd10da translated +#[test] +fn tp_lure_restricted() { + let h = harness(); + process(&h, &["@tplure=n"]); + let permissions = h.service.permissions(); + assert!(!permissions.can_tp_lure(None).unwrap()); + assert!(!permissions.can_tp_lure(Some(Some(guid(SENDER_2)))).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs::TpLureSecRestrictionTests.CanTpLure_Secure_Default::test 577c2c8d22ba1aa8d4426832807ea4ed8cd243836b0d38b0ebc9f32a851c34f4 translated +#[test] +fn secure_tp_lure_default() { + let h = harness(); + process(&h, &["@tplure_sec=n"]); + let permissions = h.service.permissions(); + assert!(!permissions.can_tp_lure(None).unwrap()); + assert!(!permissions.can_tp_lure(Some(Some(guid(OBJECT_1)))).unwrap()); + assert!(!permissions.can_tp_lure(Some(Some(guid(OBJECT_2)))).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs::TpLureSecRestrictionTests.CanTpLure_Secure::test 38f2894e39bdd7c3c8e1520fa6ed02573be3dfdef0bc5bd1073d9d2240917804 translated +#[test] +fn secure_tp_lure_exceptions_are_sender_scoped() { + let h = harness(); + process(&h, &["@tplure_sec=n", &format!("@tplure:{OBJECT_1}=add")]); + block_on(h.process_from(&format!("@tplure:{OBJECT_2}=add"), SENDER_2, "Sender 2")).unwrap(); + let permissions = h.service.permissions(); + assert!(!permissions.can_tp_lure(None).unwrap()); + assert!(permissions.can_tp_lure(Some(Some(guid(OBJECT_1)))).unwrap()); + assert!(!permissions.can_tp_lure(Some(Some(guid(OBJECT_2)))).unwrap()); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs::TpRequestRestrictionTests.CanTpRequest::test 08ddf0e6dd1faf1f249bc7f7a9545d9e33efb5a438eacc3606b1495a83cf57db translated +#[test] +fn tp_request_restricted() { + let h = harness(); + process(&h, &["@tprequest=n"]); + let permissions = h.service.permissions(); + assert!(!permissions.can_tp_request(None).unwrap()); + assert!( + !permissions + .can_tp_request(Some(Some(guid(SENDER_2)))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs::TpRequestRestrictionTests.CanTpRequest_Except::test 89ccb1dd172928c41079555cb6d7ff3fcbd34594dcff0399670cdebc739ac109 translated +#[test] +fn tp_request_exception() { + let h = harness(); + process(&h, &["@tprequest=n", &format!("@tprequest:{OBJECT_1}=add")]); + let permissions = h.service.permissions(); + assert!(!permissions.can_tp_request(None).unwrap()); + assert!( + permissions + .can_tp_request(Some(Some(guid(OBJECT_1)))) + .unwrap() + ); + assert!( + !permissions + .can_tp_request(Some(Some(guid(OBJECT_2)))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs::TpRequestSecRestrictionTests.CanTpRequest_Secure_Default::test 87cb0ffa95d408d55045ade0966979360c28762e05729893b068801ed3b877ed translated +#[test] +fn secure_tp_request_default() { + let h = harness(); + process(&h, &["@tprequest_sec=n"]); + let permissions = h.service.permissions(); + assert!(!permissions.can_tp_request(None).unwrap()); + assert!( + !permissions + .can_tp_request(Some(Some(guid(OBJECT_1)))) + .unwrap() + ); + assert!( + !permissions + .can_tp_request(Some(Some(guid(OBJECT_2)))) + .unwrap() + ); +} + +// parity-case: LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs::TpRequestSecRestrictionTests.CanTpRequest_Secure::test 623310f5c9150f6d6527b0db0446e2c33bf873a849a8dc68b78a4173d130da93 translated +#[test] +fn secure_tp_request_exceptions_are_sender_scoped() { + let h = harness(); + process( + &h, + &["@tprequest_sec=n", &format!("@tprequest:{OBJECT_1}=add")], + ); + block_on(h.process_from(&format!("@tprequest:{OBJECT_2}=add"), SENDER_2, "Sender 2")).unwrap(); + let permissions = h.service.permissions(); + assert!(!permissions.can_tp_request(None).unwrap()); + assert!( + permissions + .can_tp_request(Some(Some(guid(OBJECT_1)))) + .unwrap() + ); + assert!( + !permissions + .can_tp_request(Some(Some(guid(OBJECT_2)))) + .unwrap() + ); +} diff --git a/tests/upstream-tests.json b/tests/upstream-tests.json index bb41209..690315f 100644 --- a/tests/upstream-tests.json +++ b/tests/upstream-tests.json @@ -3,12 +3,12 @@ "upstream_commit": "2aa70bb68513b39795da5d13c88f31b86e85a3ba", "expected_cases": 1289, "report": { - "pending": 616, - "translated": 650, + "pending": 0, + "translated": 1266, "ignored_live": 19, "benchmark": 4, "drifted": 0, - "unreviewed": 616 + "unreviewed": 0 }, "tests": [ { @@ -9724,12 +9724,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "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": "28d4f4061cda8e6c64b95d122b44c773314f8495455c5402196c9d197cee4796", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 13, + "rust_test": "adjust_height", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AdjustHeightCommandTests.cs::AdjustHeightCommandTests.AdjustHeight_WithDelta::test", @@ -9745,12 +9745,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "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": "f1e73aaae5801faad592097b1ed57a440a33d505979f4bb552437f5af7721143", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 24, + "rust_test": "adjust_height_with_delta", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:eee2b1b757fc196e", @@ -9767,12 +9767,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "a00b90825046de742899969a8daf721472dcfc37320780acbe84bf19b6c9c075", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 468, + "rust_test": "attach_all_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:e6bc1820d9335b07", @@ -9789,12 +9789,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "fbf133e2f57a1301bd9610bc6d9b90e24bc22684a484230e5413fb8a2f5e590c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 477, + "rust_test": "attach_all_over_or_replace_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive::case:fb63a8c8c9b75b99", @@ -9811,12 +9811,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "917b50bf03ab3e71ce14d17ce9fbdd56ea5ebf1beab49dfa88b866c8e4c2fad6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 486, + "rust_test": "attach_all_over_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:eee2b1b757fc196e", @@ -9833,12 +9833,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "9e2503cfbaf0612eba4b25004a4f7395bd8fdb6e87c56a0c0a04317436090ded", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 495, + "rust_test": "attach_all_skips_hidden_subfolder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:e6bc1820d9335b07", @@ -9855,12 +9855,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "a18520869d1dd2dac037fa85aad1ad6ee1ef53b5c65e1560289edb24e875bc97", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 504, + "rust_test": "attach_all_over_or_replace_skips_hidden_subfolder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_WithHiddenSubfolder::case:fb63a8c8c9b75b99", @@ -9877,12 +9877,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "cc4b15b6fc5a8f7acdb568d75e84a74b9371375e6c097499d57443cf25a98260", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 517, + "rust_test": "attach_all_over_skips_hidden_subfolder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:eee2b1b757fc196e", @@ -9899,12 +9899,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "30dee00531eda82f692982b968e9a2736fc22bc78351703a5d0dcb73f83575b1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 526, + "rust_test": "attach_all_honors_recursive_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:e6bc1820d9335b07", @@ -9921,12 +9921,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "9a5d1d3b054fcfb9dfcf1ecad2fe91f82e03f67330b6b852647444a296e178cd", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 535, + "rust_test": "attach_all_over_or_replace_honors_recursive_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:fb63a8c8c9b75b99", @@ -9943,12 +9943,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "0b90957874b41d6b5f58cfe5f58e39be9bbd33eabcc69a28b42c8b3f44c0b97a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 548, + "rust_test": "attach_all_over_honors_recursive_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:eee2b1b757fc196e", @@ -9965,12 +9965,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "9448b65ba9c330f8d5a052b61ec14bfcce4b83e6901a2e8d667eab2aa0c77fd8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 557, + "rust_test": "attach_all_allows_private_source", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:e6bc1820d9335b07", @@ -9987,12 +9987,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "c16e78466c3402406fdeb24a5f65c801b7a5a774809c198df13f0ad1ee5db65d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 566, + "rust_test": "attach_all_over_or_replace_allows_private_source", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllCommandTests.cs::AttachAllCommandTests.AttachForce_Recursive_SourceFolderPrivate::case:fb63a8c8c9b75b99", @@ -10009,12 +10009,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "9770f73dfd658db92e969eeeaabe2e95cbf12f1f98fc2717185cef085be64059", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 579, + "rust_test": "attach_all_over_allows_private_source", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:bc5a9cb6a299a551", @@ -10031,12 +10031,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "cfa6b99140ced40f206e7926731c2055bd61f1f290b88cd50283dd0eda2c0063", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 888, + "rust_test": "attach_all_this_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:0f04a34ae77465d3", @@ -10053,12 +10053,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "b7169d7d743907a8935d19c25a78d9eb9d8324657b9ce1a40840982e587808ca", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 896, + "rust_test": "attach_all_this_over_or_replace_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive::case:1560d5268a46ddf1", @@ -10075,12 +10075,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "54a83f584d729a86ded0a0eab16d2c71724d65063524aaa7b51177e418937f4f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 909, + "rust_test": "attach_all_this_over_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:bc5a9cb6a299a551", @@ -10097,12 +10097,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "0fab3a015522194949780b9cdec7de149183fbcf8a2b8577659ed844e01cb7ef", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 918, + "rust_test": "attach_all_this_recursive_by_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:0f04a34ae77465d3", @@ -10119,12 +10119,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "964f134ab65e9e0464d111c661c6ed22f8a986619f015cc17c32d3a5e1781485", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 926, + "rust_test": "attach_all_this_over_or_replace_recursive_by_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_ById::case:1560d5268a46ddf1", @@ -10141,12 +10141,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "dd104ad0a711dc6ac3858e20abd126794d42550d7372f3ff4053495bb673a725", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 939, + "rust_test": "attach_all_this_over_recursive_by_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:bc5a9cb6a299a551", @@ -10163,12 +10163,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "04ff456987a0c30aa2e0c5ac8730236da968e5d7f1315b7eeee95444f85b1a25", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 953, + "rust_test": "attach_all_this_skips_hidden_subfolder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:0f04a34ae77465d3", @@ -10185,12 +10185,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "bac858916ecf63aba708caabd88987e398c6e99095fe667ee9f373349bb0b1c1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 961, + "rust_test": "attach_all_this_over_or_replace_skips_hidden_subfolder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_WithHiddenSubfolder::case:1560d5268a46ddf1", @@ -10207,12 +10207,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "dc67063f6ff579f64c3cf3fab1cd1c5ee5de2fad9d8c798fc851038665e4f521", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 974, + "rust_test": "attach_all_this_over_skips_hidden_subfolder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:bc5a9cb6a299a551", @@ -10229,12 +10229,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "f29f49aeb357db82d53146a297fe3da3d25b1e41eef7851b8c8622ab2996b1cd", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 983, + "rust_test": "attach_all_this_honors_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:0f04a34ae77465d3", @@ -10251,12 +10251,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "8f4ec3d476101fc889b9e0624ee45e7f13c373341f261e37ab702066cd3aa281", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 991, + "rust_test": "attach_all_this_over_or_replace_honors_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_Recursive_FolderNameSpecifiesToAddInsteadOfReplace::case:1560d5268a46ddf1", @@ -10273,12 +10273,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "544ad5d5fcd019fa01fbc9f10ffdd2213baf63fc843385962d1fdbb3ce9d455a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 1004, + "rust_test": "attach_all_this_over_honors_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:bc5a9cb6a299a551", @@ -10295,12 +10295,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "5fc212ee5fdc227e87f84f18bf4f4672e00b8a5dc87fdf19c02ef3e0347f4c12", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 1018, + "rust_test": "attach_all_this_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:0f04a34ae77465d3", @@ -10317,12 +10317,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "d840b47191a45d12ba73dd316a7c956f5095c206729fecf152add1feb3d2288f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 1031, + "rust_test": "attach_all_this_over_or_replace_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_AttachPoint::case:1560d5268a46ddf1", @@ -10339,12 +10339,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "014d9cedde2edaabbc8c167eb152c8d292eaffe2465c55e0e01169411fc29694", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 1044, + "rust_test": "attach_all_this_over_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:bc5a9cb6a299a551", @@ -10361,12 +10361,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "7adcd56a1d3aa87c9c7cd1f066b4565760b7b55c636dc0c2679893fdd5f1bd4d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 1058, + "rust_test": "attach_all_this_by_wearable", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:0f04a34ae77465d3", @@ -10383,12 +10383,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "a544e6199f43df7dd7eace33acb29ca62f293367c561ddf51f2adfadf0ce1f51", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 1071, + "rust_test": "attach_all_this_over_or_replace_by_wearable", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachAllThisCommandTests.cs::AttachAllThisCommandTests.AttachAllThisForce_RlvWearableType::case:1560d5268a46ddf1", @@ -10405,12 +10405,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "513616b9758b9808a3c5ca41c96fd2147e34e5d6683c407b2ffc9cd7e50b942f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 1084, + "rust_test": "attach_all_this_over_by_wearable", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:5e4fd9176ccab2f0", @@ -10427,12 +10427,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "69f73ea2b850fa322e052a2cef6740b79d32072d33b3a71b0e0031b2c8ea9b46", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 281, + "rust_test": "attach_hats", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:1112c98c6420210d", @@ -10449,12 +10449,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "e4a582aec81999cbfcf484b731e4fece780221af89591c90cf3950a6d31b6df9", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 290, + "rust_test": "attach_over_or_replace_hats", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce::case:0dd9d8fadf48e313", @@ -10471,12 +10471,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "0fccf95583f4568e8ba464f0a1f58a23747848d99673692807f20307b020cc95", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 299, + "rust_test": "attach_over_hats", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:5e4fd9176ccab2f0", @@ -10493,12 +10493,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "f3ac7f8ba85cb1a6234e8603e65f18ea3308f6a47fbcb52e3d6a034729251f15", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 308, + "rust_test": "attach_clothing", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:1112c98c6420210d", @@ -10515,12 +10515,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "e9ee387999f6219880695da6168bfe91194704a5dc6a5ec6d0b12eb7b24d5b0d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 317, + "rust_test": "attach_over_or_replace_clothing", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_WithClothing::case:0dd9d8fadf48e313", @@ -10537,12 +10537,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "70243e3ef338b5fdad4c2e41a223bc999d35fd661b07e19c6c14421b4ea31f97", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 326, + "rust_test": "attach_over_clothing", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:2a7ad8f0a57b741d", @@ -10559,12 +10559,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "c08c5e6ac600a07ac2b04122683b7a36042ece57cf1671b054637e3994602490", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 335, + "rust_test": "attach_skips_already_attached", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:da775b6e5cf13e70", @@ -10581,12 +10581,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "fd55d54c22a486e46e6d826251fc378eda59e440b953d9ca86626fc7009e60ed", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 341, + "rust_test": "attach_over_or_replace_skips_already_attached", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AlreadyAttached::case:e59967ec103647cc", @@ -10603,12 +10603,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "548490685e7df42b764e1fb336efbc1d5b0480445f5a7effde8a64e01170146b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 354, + "rust_test": "attach_over_skips_already_attached", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:5e4fd9176ccab2f0", @@ -10625,12 +10625,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "3079e52f5d7b39a3fa1f3b3b03e686bc64f1ac06dc0daa5f2ef95b813edd45ac", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 367, + "rust_test": "attach_uses_position_from_folder_name", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:1112c98c6420210d", @@ -10647,12 +10647,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "18b92a51f70c445a4cf39ee4051ee356ba3bc85cb578dedde837af0c8fbaa43e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 380, + "rust_test": "attach_over_or_replace_uses_position_from_folder_name", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_PositionFromFolderName::case:0dd9d8fadf48e313", @@ -10669,12 +10669,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "6eb85ab72867f89834e0eb532e2627d7c46e1e255b7b9c121285764dfec07043", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 393, + "rust_test": "attach_over_uses_position_from_folder_name", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:2a7ad8f0a57b741d", @@ -10691,12 +10691,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "9232cdfa7f71a47278c89b83aaaa0dd7dfa74c795c03baad0cae3c1dd7eda30b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 406, + "rust_test": "attach_honors_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:da775b6e5cf13e70", @@ -10713,12 +10713,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "96e00ff88c865750a61f8fb6571dfb36820853170777a722f813d13263362aa8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 415, + "rust_test": "attach_over_or_replace_honors_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_FolderNameSpecifiesToAddInsteadOfReplace::case:e59967ec103647cc", @@ -10735,12 +10735,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "28c8be4c23a487920c0b78a24c25b4130ae49dc7137e1fa3bfb038797ee4f949", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 428, + "rust_test": "attach_over_honors_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:5e4fd9176ccab2f0", @@ -10757,12 +10757,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "d55f59f43c71a22984ccd5a7b47efa671c7cc5a0f6522f632cdca57e72431602", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 437, + "rust_test": "attach_allows_private_parent", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:1112c98c6420210d", @@ -10779,12 +10779,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "42a9db2fedf03d376587313f29244f748d0ae63aec47eb81ebe79e2e458e527c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 446, + "rust_test": "attach_over_or_replace_allows_private_parent", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachCommandTests.cs::AttachCommandTests.AttachForce_AttachPrivateParentFolder::case:0dd9d8fadf48e313", @@ -10801,12 +10801,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "fca4936b6b209776ac8c173d51681e5fe1c03aab483526ff75ab1db05e93e119", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 459, + "rust_test": "attach_over_allows_private_parent", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:6882162efd904e15", @@ -10823,12 +10823,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "41e4a2438e60bd06891dec4a5c5fd542e23a478425f1de46b291def78a15b023", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 618, + "rust_test": "attach_this_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:45b5361aae1131d0", @@ -10845,12 +10845,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "730c23b70f079aabc0c45e398074ef5817dd5865f4c09064c389ccb3e2cc0a4c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 626, + "rust_test": "attach_this_over_or_replace_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_Default::case:f66e403049f440cf", @@ -10867,12 +10867,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "676b6976e4bd427522bfbeadbe5117dabf06926ea4ac165f9fd47d84f5602c83", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 639, + "rust_test": "attach_this_over_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:6882162efd904e15", @@ -10889,12 +10889,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "e8ea6021ad6ca52379eb43f34c3538afc15751c438540424e90675b579ad7a1e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 648, + "rust_test": "attach_this_by_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:45b5361aae1131d0", @@ -10911,12 +10911,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "041edc03852b6edf4d8e0330323c56da0c5c380853c808f75005b58aec3140f1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 656, + "rust_test": "attach_this_over_or_replace_by_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_ById::case:f66e403049f440cf", @@ -10933,12 +10933,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "3eb16ffadc52f468ed5d23efb7f9387c8f371cec59b6ddebf7b22b444e152312", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 669, + "rust_test": "attach_this_over_by_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:a2681d046a6f6fef", @@ -10955,12 +10955,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "a881405b95bf3e531a7f52bfb4fe043b6653360b08de8feb4d8741b024f618fd", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 678, + "rust_test": "attach_this_honors_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:34172d9d6ebbcf53", @@ -10977,12 +10977,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "df40f012e2e07410c93b3c3c6e833a6b2ad909649ae840c81e3e0d8772bb3798", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 686, + "rust_test": "attach_this_over_or_replace_honors_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesToAddInsteadOfReplace::case:30379630ffa50e68", @@ -10999,12 +10999,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "52bb8d751b7c26e3d5ff1d7782185d4dd295ddc2c1a07e65e2cf62e6646f1192", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 699, + "rust_test": "attach_this_over_honors_add_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:6882162efd904e15", @@ -11021,12 +11021,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "58d962716336c18fc479809ec20089c0d74b9cd38d065cbe24368b8ffb584bd2", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 708, + "rust_test": "attach_this_uses_folder_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:45b5361aae1131d0", @@ -11043,12 +11043,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "558f12f61786348488d8a3b7e06adc053baf5035b076cae5ad907c1d71f4e1f8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 716, + "rust_test": "attach_this_over_or_replace_uses_folder_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FolderNameSpecifiesRlvAttachmentPoint::case:f66e403049f440cf", @@ -11065,12 +11065,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "434e66544ef450254abbb6499b184d0f6d61181f045dce28617314960cb3c959", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 729, + "rust_test": "attach_this_over_uses_folder_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:6882162efd904e15", @@ -11087,12 +11087,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "ddf95166e10dff0206af6da01593289e4bf1effbb1dcbe820e18bc66531c288a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 738, + "rust_test": "attach_this_from_hidden_subfolder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:45b5361aae1131d0", @@ -11109,12 +11109,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "b2902c91ba63a8bea2526ed41d0be4c7d4c84e403061e922d4e0941fe576090d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 746, + "rust_test": "attach_this_over_or_replace_from_hidden_subfolder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_FromHiddenSubfolder::case:f66e403049f440cf", @@ -11131,12 +11131,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "462668f53c82f52d1c7d4e4aadd4f1938702e270cacc94dbf364b49e1aa6f446", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 759, + "rust_test": "attach_this_over_from_hidden_subfolder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:6882162efd904e15", @@ -11153,12 +11153,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "ae67a1ba8ce6a3c385b524e4ff62b80425fe3a33215991c37f290a4fcdd048a9", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 768, + "rust_test": "attach_this_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:45b5361aae1131d0", @@ -11175,12 +11175,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "c64bbda59340f93075a799fc5fab026644d6af2a41ec6a6d2d54b80e5d19114e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 781, + "rust_test": "attach_this_over_or_replace_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_AttachPoint::case:f66e403049f440cf", @@ -11197,12 +11197,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "eb3d37a254f1cab2a87b3d9ca7b9e261bbfb8345a7bd6d3e93db5c90d46dc465", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 794, + "rust_test": "attach_this_over_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:6882162efd904e15", @@ -11219,12 +11219,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "11bd9d15790439bd79a997d305af7a85f1a88beb78943061114a2fb8b76de4ce", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 808, + "rust_test": "attach_this_by_wearable", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:45b5361aae1131d0", @@ -11241,12 +11241,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "7d93be94fab2616710b141333d6bb1929afe7828035c21da786a281a9659ff1d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 821, + "rust_test": "attach_this_over_or_replace_by_wearable", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/AttachThisCommandTests.cs::AttachThisCommandTests.AttachThis_RlvWearableType::case:f66e403049f440cf", @@ -11263,12 +11263,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.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": "035c752f4638ca38394577d3b552a8dcc7a124fe24432be77d327264194da351", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attach_commands_semantics.rs", + "rust_line": 834, + "rust_test": "attach_this_over_by_wearable", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear::test", @@ -11284,12 +11284,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 76, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4a32d44cfaa1f6d6547d93491107b40b636ca4b80c7395cab8a9a1646eccbb96", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 42, + "rust_test": "clear", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_CaseInSensitive::test", @@ -11305,12 +11305,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 77, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5e90f2d0f22856e6618c844de663fda53776d111dbade38e09f0c60f43d28c6b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 57, + "rust_test": "clear_is_case_insensitive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_SenderBased::test", @@ -11326,12 +11326,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 78, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1187f6fbc132fc68bef4b9b0835e801dd7c3e4ad7056d857f034eac4340d3221", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 72, + "rust_test": "clear_is_sender_based", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/ClearCommandTests.cs::ClearCommandTests.Clear_Filtered::test", @@ -11347,12 +11347,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 79, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4f0625afeeeebe091e1909cdce20b93f886dcd51d150f40bc8aa4c093197771c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 93, + "rust_test": "clear_is_filtered", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive::test", @@ -11369,12 +11369,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 80, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6c378c6366685a8ce0127c9489e38ae67c304714d65b33e689e956b9c9c455b4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_commands_semantics.rs", + "rust_line": 81, + "rust_test": "detach_all_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_EnforceRestrictions::test", @@ -11391,12 +11391,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 81, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f094b45311a69324298055b8325058379b70376e5b6e0eb3d38ec81a5eaeff33", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_commands_semantics.rs", + "rust_line": 86, + "rust_test": "detach_all_enforces_restrictions", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_PrivateTargetDir::test", @@ -11413,12 +11413,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 82, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2b1b9e21d84c0d9213d539e120fac5e40938f9de5e1b70e28b179e2b818485ff", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_commands_semantics.rs", + "rust_line": 91, + "rust_test": "detach_all_private_target", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_PrivateSubFolders::test", @@ -11435,12 +11435,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "bc8647c2e5fdc5a7e1fa836918d46cc0772d24c217b859c3eaf250044a238d01", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_commands_semantics.rs", + "rust_line": 96, + "rust_test": "detach_all_skips_private_subfolders", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders::test", @@ -11457,12 +11457,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "2ad71ab32f5d8e7c705b003656736aeeaf97c9adbede76ad7d96a3c009c2cc6c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_commands_semantics.rs", + "rust_line": 101, + "rust_test": "detach_all_honors_nostrip_subfolders", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripSubFolders_LinkException::test", @@ -11479,12 +11479,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "5f46c5f2408462bd16c54426db1a3773e711882ffe27dd24d1c7df106a927596", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_commands_semantics.rs", + "rust_line": 106, + "rust_test": "detach_all_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllCommandTests.cs::DetachAllCommandTests.DetachAllForce_Recursive_NostripItemName::test", @@ -11501,12 +11501,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "29ae3e57d39c02833a18bfd519c758e0d543b877d480f26a919486d21558ac35", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_commands_semantics.rs", + "rust_line": 111, + "rust_test": "detach_all_honors_nostrip_item", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Default::test", @@ -11523,12 +11523,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "c681986cdc3ae595970780c93a18cdd251ce85cf10daeae3321bf4f9fabcdaf8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 117, + "rust_test": "detach_all_this_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Nostrip::test", @@ -11545,12 +11545,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "cae060da146969a4a24b9538e539de976b8604212ea5cb30c52bcef6a4b7b74e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 122, + "rust_test": "detach_all_this_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_Nostrip_LinkException::test", @@ -11567,12 +11567,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "642274ccb49e0f263cd080b0ee5dc56b8e54bb5bc174269cf994e6f7d1c8178b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 127, + "rust_test": "detach_all_this_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById::test", @@ -11589,12 +11589,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "f6f61549654f4e88165d11591e640fca2018b44a92ea8bb102ac89956aa9f32d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 135, + "rust_test": "detach_all_this_by_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip::test", @@ -11611,12 +11611,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "7e9fd9ee7f94a2ee7138ea978437bedaf7e8f39d9da0f2d8393656904d8fb30d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 147, + "rust_test": "detach_all_this_by_id_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ById_Nostrip_LinkException::test", @@ -11633,12 +11633,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "7607454f70a0437d4f3fc2c43649562a5762b60e94e5118bbd893833bc55f5db", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 159, + "rust_test": "detach_all_this_by_id_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint::test", @@ -11655,12 +11655,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "f430f1b151d54fc92b76b4be56cb666e49baae9ce3615ce67ee4ab8c06dc0670", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 171, + "rust_test": "detach_all_this_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip::test", @@ -11677,12 +11677,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "599b22ffbe78f57712d15e6f93c4c0742bb567dec609d7eaef16a70fde808fd0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 179, + "rust_test": "detach_all_this_by_attachment_point_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachThisAllForce_ByRlvAttachmentPoint_NoStrip_LinkException::test", @@ -11699,12 +11699,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "a379a9bc1e135afc53d857839b2e948c95bcf16bcc1e8b865fd969ce100f20e7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 187, + "rust_test": "detach_all_this_by_attachment_point_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType::test", @@ -11721,12 +11721,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "5e1909e9526e5ef734cbc18d4224633e4be678e1a2562571519b77881b6b8e9d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 195, + "rust_test": "detach_all_this_by_wearable", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip::test", @@ -11743,12 +11743,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "485242789637a14b8b23ca197cff62b2ab53067818ce9b7b3a19e35b74cb48a0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 203, + "rust_test": "detach_all_this_by_wearable_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_NoStrip_LinkException::test", @@ -11765,12 +11765,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "efd3bd307022ac9e6e6759428de68a54aad9a1000d065643f3624977542a0100", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 211, + "rust_test": "detach_all_this_by_wearable_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachAllThisCommandTests.cs::DetachAllThisCommandTests.DetachAllThisForce_ByRlvWearableType_PrivateFolder::test", @@ -11787,12 +11787,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "d6e007e5f1bb5901ee78cad2012fd34dae571f084abb49b5cb42b07f6aa89718", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_all_this_commands_semantics.rs", + "rust_line": 219, + "rust_test": "detach_all_this_by_wearable_skips_private_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce::test", @@ -11809,12 +11809,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "8af7845ca02bcc64f927a903ea4e2ba0cb148d31125707bf5024552c621517f5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_me_commands_semantics.rs", + "rust_line": 62, + "rust_test": "detach_me", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_WithNoStripItemName_SpecialException::test", @@ -11831,12 +11831,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "6ef2985b3da13f101a39ba195bda192ab887b0d88fb2df240a6f72f82ccb61c6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_me_commands_semantics.rs", + "rust_line": 67, + "rust_test": "detach_me_ignores_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_WithLockedFolderRestriction::test", @@ -11853,12 +11853,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "127e2543b50b648aed28b0c038fd908e7a47f1104ab3b8d1110687d9fc595676", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_me_commands_semantics.rs", + "rust_line": 72, + "rust_test": "detach_me_honors_locked_linked_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachMeCommandTests.cs::DetachMeCommandTests.DetachMeForce_MultipleLinksSameItem::test", @@ -11875,12 +11875,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "bbd53954be5c6add0b7a1cc179a2e42dd8631e3e6240b082afcadd2e3db568eb", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_me_commands_semantics.rs", + "rust_line": 77, + "rust_test": "detach_me_deduplicates_multiple_links", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_Default::test", @@ -11897,12 +11897,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "1148507a7d321c499350d35dc9df206d70c08568241e51598d2468cedc07a1eb", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 101, + "rust_test": "detach_this_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStrip::test", @@ -11919,12 +11919,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "1d403149f99f166bc637a94e6715d0986591ceca5d130c268dfd37d33642f99a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 109, + "rust_test": "detach_this_honors_item_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStripFolder::test", @@ -11941,12 +11941,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "7debcecc7dd1f41cf84d28147c76211484ca37793196b434ae3ce4ab2150b2c8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 117, + "rust_test": "detach_this_honors_folder_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_NoStripFolder_LinkException::test", @@ -11963,12 +11963,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "29cb8259d99cd8ed894c6e93c92debcb0d39db88d8e21709317a7a4521f23955", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 122, + "rust_test": "detach_this_honors_folder_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById::test", @@ -11985,12 +11985,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "fcc5c16800d9404260633f92f92c8baed9ee1b641baa8a615b2372164e11933e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 130, + "rust_test": "detach_this_by_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripItemName::test", @@ -12007,12 +12007,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "6cbd74f2fc893e4fee28eb5c4878d2d600933a2faf56c2f86001e8aa35a8e341", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 138, + "rust_test": "detach_this_by_id_honors_item_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripFolderName::test", @@ -12029,12 +12029,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "24f2e0b3b48b8e51c3568c634f9c3392a8fd76c2ce35a60ff9dbd61eae00af14", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 150, + "rust_test": "detach_this_by_id_honors_folder_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ById_NostripFolderName_LinkException::test", @@ -12051,12 +12051,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "126011ba868d7ddfc94801cc068ae721fae3f6571e28ae867b8b9b670bb4f6bb", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 162, + "rust_test": "detach_this_by_id_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint::test", @@ -12073,12 +12073,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "cf4ccc60fab1762ad2a094fe236c6e807c128ed1ee63b2aa49611145697ae5a4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 174, + "rust_test": "detach_this_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip::test", @@ -12095,12 +12095,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "b97672d0964fbec6954a7f7925e5a1966a699b328232e592dbe829937a57324a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 182, + "rust_test": "detach_this_by_attachment_point_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvAttachmentPoint_NoStrip_LinkException::test", @@ -12117,12 +12117,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "6d8cf3da9722f153760afa215fad17707633b67fcdfb86db26afef83a157aac5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 190, + "rust_test": "detach_this_by_attachment_point_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType::test", @@ -12139,12 +12139,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "b3925bd0472eafcf348556d35eb1086c749205e25436f44e894f76fb56f1b15a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 198, + "rust_test": "detach_this_by_wearable", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip::test", @@ -12161,12 +12161,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "e133c6c91d06c50368bf0862befc0e488353c0cd5ab560f08e60bfde25157866", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 206, + "rust_test": "detach_this_by_wearable_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_NoStrip_LinkException::test", @@ -12183,12 +12183,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "8a57fa87c7d565531dc2edd65891daa4ae19f573a37a0a97534852312e82ea3b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 214, + "rust_test": "detach_this_by_wearable_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/DetachThisCommandTests.cs::DetachThisCommandTests.DetachThisForce_ByRlvWearableType_PrivateFolder::test", @@ -12205,12 +12205,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "dddede32d4d5f45c9efc732a2fe42fc1814b9b46d89275a7619f0cc6ec61e406", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_detach_this_commands_semantics.rs", + "rust_line": 222, + "rust_test": "detach_this_by_wearable_skips_private_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach::case:bb1d34dc76ade75f", @@ -12227,12 +12227,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "ad702cc1e3eac211aa6dd7f2f22238a68ac8354348d2b567396fea254e5ca206", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 177, + "rust_test": "detach_all_attachments", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach::case:c9faa5be8fef55e8", @@ -12249,12 +12249,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "a132cd4a046f40af69f3e8578b8837b59a55361b21670d4866be9d567ff1e88e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 182, + "rust_test": "remattach_all_attachments", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip::case:bb1d34dc76ade75f", @@ -12271,12 +12271,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "a3bb90287147d062a19cbd9f357dfcc2e6e090b0389c890c9cf6b16a58b2e5e1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 187, + "rust_test": "detach_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip::case:c9faa5be8fef55e8", @@ -12293,12 +12293,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "1bafda01ebef3b94a1aa60ffa6ee87e57f3c43fe0ea35dac313a935d086c5719", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 192, + "rust_test": "remattach_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip_LinkException::case:bb1d34dc76ade75f", @@ -12315,12 +12315,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "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": "384fd28492003f2c353bbfc32c6f23bb44bf294b095706ee76f005b3cd1ec53a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 197, + "rust_test": "detach_honors_nostrip_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_NoStrip_LinkException::case:c9faa5be8fef55e8", @@ -12337,12 +12337,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 124, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e827ddf10d86f18997bb147ded1121cb1b0cb40cd3935ab416367cb08923d47b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 205, + "rust_test": "remattach_honors_nostrip_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ExternalItems::case:bb1d34dc76ade75f", @@ -12359,12 +12359,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 125, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ad29480c0f53f09c8a79e9837f7ea30b62a192717de90f946b086c6a9af0552e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 213, + "rust_test": "detach_external_items", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ExternalItems::case:c9faa5be8fef55e8", @@ -12381,12 +12381,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 126, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5733396c20440fe473db73ec24fe1de0b7cae0113ab614553092eabfe4e38e4a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 221, + "rust_test": "remattach_external_items", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder::case:97eb7af1f9c3c62c", @@ -12403,12 +12403,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 127, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4a549ba43e2ec346f84da84cd1dc7621ec6a22534ce2b44578fb8b79d0c35ce1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 229, + "rust_test": "detach_by_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder::case:1a04fd408fddaac0", @@ -12425,12 +12425,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 128, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b72bc33db0d3333fe36494b6dfbed2f0a82779126e1a8d11c6ad91905c86678d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 237, + "rust_test": "remattach_by_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip::case:2117c838922f5ba4", @@ -12447,12 +12447,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 129, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2bd0a71707dbe59f33936a297f8f4e67801fd87e10ec9c4ee4d27c3f030ab33a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 245, + "rust_test": "detach_by_folder_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip::case:11d4ca4fd3e35db1", @@ -12469,12 +12469,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 130, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b7e224782d611a8f3dd9b4f7d88d51ed22bcbf9f1c615f7822c4f35afad171af", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 250, + "rust_test": "remattach_by_folder_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException::case:2117c838922f5ba4", @@ -12491,12 +12491,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 131, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "fae9ef3138381a2f602787455bde010ddc6d0ce454bb272f91488075d8f8f3e6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 261, + "rust_test": "detach_by_folder_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByFolder_NoStrip_LinkException::case:11d4ca4fd3e35db1", @@ -12513,12 +12513,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 132, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ae5d72c852fdda1d1b427dcd9e7e6051d6acdd60a89220aa68b59e3b42198e1e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 269, + "rust_test": "remattach_by_folder_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint::case:644d3f75f3570ac3", @@ -12535,12 +12535,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 133, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "40255dd6dce67c79ea9e7149030fa89cc498cf02842340634d2ff6e52406d989", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 277, + "rust_test": "detach_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint::case:53be219b37533fa6", @@ -12557,12 +12557,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 134, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f161e60f519fb7a146e02f36d7f5d521dc60d59a55d7bc2e61d31c3c2ec123ec", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 285, + "rust_test": "remattach_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip::case:644d3f75f3570ac3", @@ -12579,12 +12579,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 135, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "96dd371b806beaa4c79887e6ab3e506f182a154dc93100aa5970d0b87c5493cc", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 293, + "rust_test": "detach_by_attachment_point_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip::case:53be219b37533fa6", @@ -12601,12 +12601,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 136, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d0b0711b1195e1f1ab933a38517995a5a587bac8f35d4d9f7517f49f81c7059c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 301, + "rust_test": "remattach_by_attachment_point_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException::case:644d3f75f3570ac3", @@ -12623,12 +12623,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 137, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "dd2998063b38b6912aaa691ac9341a3756280bf4339f2f61becc85c272317494", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 309, + "rust_test": "detach_by_attachment_point_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_NoStrip_LinkException::case:53be219b37533fa6", @@ -12645,12 +12645,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 138, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "eba98a74f0b455d3dfe9a7977ff3b2e925789c447c7949ddaff9efec27331cd6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 317, + "rust_test": "remattach_by_attachment_point_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_None::case:9a124e69f33b279f", @@ -12667,12 +12667,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 139, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "893fee07a3c5f137a3b13e8c20d0df5d3cd956677b9de21702e31a70d37bc8c8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 325, + "rust_test": "detach_by_missing_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByAttachmentPoint_None::case:800d7d8ba57071b1", @@ -12689,12 +12689,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 140, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "48087c9ce0fd83dbe0df5ffdf26d03f538ecd93b8e11a45478400720dbf5ae88", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 330, + "rust_test": "remattach_by_missing_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID::case:e5bdbdba9613b46a", @@ -12711,12 +12711,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 141, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "088e97582c1e197b69a4fcca30a793164a67784f8524cf18edd4ff0790e9e196", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 335, + "rust_test": "detach_by_uuid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID::case:7cb3f81460bd8e9f", @@ -12733,12 +12733,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 142, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "61c2faf43f29fa657bcc0b5c90ba77462719c7ea365eb68ca79a2d7cf70422f8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 343, + "rust_test": "remattach_by_uuid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName::case:e5bdbdba9613b46a", @@ -12755,12 +12755,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 143, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "46214afd5f599bac113ef6303150b22b1c2ac73ffb4ab66e6302aeaa61094bbc", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 351, + "rust_test": "detach_by_uuid_honors_item_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInItemName::case:7cb3f81460bd8e9f", @@ -12777,12 +12777,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 144, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c0699def01372963874f8dbbc265534290fbc5b04b8d02fd735d75cd90b52736", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 356, + "rust_test": "remattach_by_uuid_honors_item_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName::case:e5bdbdba9613b46a", @@ -12799,12 +12799,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 145, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5ea53edf6e06440ef271f3b21b798f4495790ca9ada908d33267360beaaeb137", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 361, + "rust_test": "detach_by_uuid_honors_folder_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName::case:7cb3f81460bd8e9f", @@ -12821,12 +12821,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 146, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2b77e4271ad3a98ed69a773fd1d443852702830bb1f52b454d4b9a6402e2a6d0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 366, + "rust_test": "remattach_by_uuid_honors_folder_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException::case:e5bdbdba9613b46a", @@ -12843,12 +12843,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 147, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "14f5d1ae7109d6f9a87177121f9f1003b6f5e2610d9c7f38223dfb56b480bf6f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 377, + "rust_test": "detach_by_uuid_honors_folder_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_NostripInFolderName_LinkException::case:7cb3f81460bd8e9f", @@ -12865,12 +12865,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 148, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8fd7c367fe4bb525118bda32650e7aa55beed5e821c6dd7614ad9846210cd16f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 385, + "rust_test": "remattach_by_uuid_honors_folder_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions::case:e5bdbdba9613b46a", @@ -12887,12 +12887,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 149, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2c53df80d4e141eb18dfbfd9d520667a0ab213335132916dba8376a07662d110", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 393, + "rust_test": "detach_by_uuid_honors_restrictions", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_WithRestrictions::case:7cb3f81460bd8e9f", @@ -12909,12 +12909,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 150, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "edce34c38899a925d670a0659c075579ae34cf5d9e530b9d1c761308bc694340", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 398, + "rust_test": "remattach_by_uuid_honors_restrictions", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_External::case:e5bdbdba9613b46a", @@ -12931,12 +12931,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 151, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "002f3e68cbe9e5ffcdcd308f154ac2fd8cf0ffa99222a6740fb0ebeb4dfba243", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 403, + "rust_test": "detach_external_by_uuid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemAttachCommandTests.cs::RemAttachCommandTests.RemAttach_ByUUID_External::case:7cb3f81460bd8e9f", @@ -12953,12 +12953,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 152, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b876a7820dbff6537cca679420bb010978552a339640337ce5d0055e5c9c1270", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_attach_commands_semantics.rs", + "rust_line": 414, + "rust_test": "remattach_external_by_uuid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit::test", @@ -12975,12 +12975,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 153, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "971f43d44ae4863075f1515bf0f2fd3902d433d66a0e21fb65270ce1bd2936a4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 130, + "rust_test": "remove_outfit", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_PrivateFolders::test", @@ -12997,12 +12997,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 154, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6e0f68f0a2c29c861d5c06a0085684fca3cbf99c0b42f455ae1a15909a9773e5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 138, + "rust_test": "remove_outfit_in_private_folders", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems::test", @@ -13019,12 +13019,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 155, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "52889bcbe7fb2a1256d3db87b7cf79b58fe5487954869468df0412e82e6f335c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 146, + "rust_test": "remove_outfit_external_items", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip::test", @@ -13041,12 +13041,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 156, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "de2310bc3a7a277eebd8f00af9008504bf6022808e665ae0ce6ca9238413af58", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 154, + "rust_test": "remove_outfit_external_items_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_NoStrip_LinkException::test", @@ -13063,12 +13063,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 157, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "fdb455aa5511d61662f3b972b35e757eb4a52608382d68b7d75a4f7a38c22883", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 162, + "rust_test": "remove_outfit_external_items_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_ExternalItems_ByType::test", @@ -13085,12 +13085,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 158, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a2cf0160bb9ab69db04055feef2cad8e4f0b4864d39e89f4b448585e22b81ac1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 170, + "rust_test": "remove_outfit_external_items_by_type", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder::test", @@ -13107,12 +13107,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 159, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "042af9f595457b170f80d4f217c6d50e6e8a036bab8d8ae744c6fd383f1d0375", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 178, + "rust_test": "remove_outfit_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_PrivateFolder::test", @@ -13129,12 +13129,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 160, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b885729cb17511dabfb177fcc090ec06d0e00e549e9381211c556345139971d9", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 186, + "rust_test": "remove_outfit_private_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStrip::test", @@ -13151,12 +13151,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 161, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d556347b930130582f4d0e9bf04674534ca402f1469c9452d66c0b5ff80a131c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 194, + "rust_test": "remove_outfit_folder_honors_item_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName::test", @@ -13173,12 +13173,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 162, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ed776323d6809f4d7484dbf573e8eefd849c711d8950b4eb06466fc9fb77e3fa", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 199, + "rust_test": "remove_outfit_folder_honors_folder_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Folder_NoStripFolderName_LinkException::test", @@ -13195,12 +13195,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 163, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "276bd64cbc5c6fb43cfa3ec9cedc9fca74bfc5b1174f39d3c92b7e34ba937c14", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 210, + "rust_test": "remove_outfit_folder_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific::test", @@ -13217,12 +13217,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 164, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "93ac127b181b8b65cf1b8d450329dcdf7516dc4022509b18ee658c7d2d1e75a4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 221, + "rust_test": "remove_outfit_specific", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_PrivateFolder::test", @@ -13239,12 +13239,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 165, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "494f21c1a0b2751018d4dba3a8c476fb85f6e85374ba5e6cf556019313554030", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 229, + "rust_test": "remove_outfit_specific_private_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_NoStrip::test", @@ -13261,12 +13261,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 166, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d6d0fc83d2cdd5879bd4629ab3754a9c6c5ec66f93457540c427f0ab5b38c1d1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 237, + "rust_test": "remove_outfit_specific_honors_nostrip", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_Specific_NoStrip_LinkException::test", @@ -13283,12 +13283,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 167, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4d16e235f5c6a11fe2242e33f5a206abc927c80f5bed82a56b9b772726aa2403", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 245, + "rust_test": "remove_outfit_specific_honors_link_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/RemOutfitCommandTests.cs::RemOutfitCommandTests.RemOutfit_BodyPart_Specific::test", @@ -13305,12 +13305,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 168, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "06e07a067c9ac77f7a9768b48bbb76d84a3f02b59ffa198dfe594fbfe41f2b94", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_rem_outfit_commands_semantics.rs", + "rust_line": 253, + "rust_test": "remove_outfit_does_not_remove_body_part", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Default::case:fa77559e30768d15", @@ -13326,12 +13326,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 169, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0e53228b81a62b59f0f48b21ac2b20c885bb3fafa46dd2b58752ce162e3196dc", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 117, + "rust_test": "set_debug_known_setting", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Default::case:55694f25ed879d95", @@ -13347,12 +13347,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 170, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "bfc8c3aef2a17248077dc3e029d49f5ac433df02c9aace41804bca730ea01d61", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 129, + "rust_test": "set_debug_unknown_setting", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SetDebugCommandTests.cs::SetDebugCommandTests.SetDebug_Invalid::test", @@ -13368,12 +13368,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 171, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d3e0323819fc4a14fb97bcc05db17ba9ccfd371eb8f4bbd4954334eb47f28478", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 138, + "rust_test": "set_debug_rejects_empty_name", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs::SetEnvCommandTests.SetEnv_Default::case:f656b648d00a6d91", @@ -13389,12 +13389,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 172, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "92d79091340395bae933393259c419e9d218f79523c983ddccabe56e28d2b308", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 152, + "rust_test": "set_environment_known_setting", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SetEnvCommandTests.cs::SetEnvCommandTests.SetEnv_Default::case:55694f25ed879d95", @@ -13410,12 +13410,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 173, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "301f9fa3087fdc54a8fd48f4ceff0a032ac510185205e623113a90af38827c3e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 161, + "rust_test": "set_environment_unknown_setting", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByName::test", @@ -13431,12 +13431,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 174, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "861f1847fec44c334bcedfbe5de25400352de0ee5247069e6147e2f7c991c59e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 170, + "rust_test": "set_group_by_name", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByNameAndRole::test", @@ -13452,12 +13452,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 175, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "65ec132ab961f0b4c7e007f80f36cf58b1c2e47cc1a1bb573a02eb99bb2c5611", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 181, + "rust_test": "set_group_by_name_and_role", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ById::test", @@ -13473,12 +13473,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 176, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7ada187530d5bdb96c754810b229053ad56444a3609df85f4b9cee2f45f1a7d3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 192, + "rust_test": "set_group_by_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SetGroupCommandTests.cs::SetGroupCommandTests.SetGroup_ByIdAndRole::test", @@ -13494,12 +13494,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 177, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a97620907e7c2c9220735227e924e29c4f30f3c72f678f0bc0effd899bd6d76d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 203, + "rust_test": "set_group_by_id_and_role", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SetRotCommandTests.cs::SetRotCommandTests.SetRot::test", @@ -13515,12 +13515,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 178, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "479179280e141782c02a558c584b84e9a570badb536ee7c4df67333e030425f0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 214, + "rust_test": "set_rotation", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_Default::test", @@ -13536,12 +13536,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 179, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "eea6ad8699aec1855ce07c9f9495a75a51c547e3a54c555cc81503404f7319a5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 233, + "rust_test": "force_sit", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedUnsit_WhileStanding::test", @@ -13557,12 +13557,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 180, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "99d6848b20ed29f21291911382b37028e627a5490a40ae7961142b7c13816e4e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 241, + "rust_test": "force_sit_with_unsit_restricted_while_standing", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedUnsit_WhileSeated::test", @@ -13578,12 +13578,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 181, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b3cdcf604e8ea563a8292b145049340a5d60538c0e047cb1a3639a05ac925972", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 250, + "rust_test": "force_sit_rejects_unsit_restriction_while_seated", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedSit::test", @@ -13599,12 +13599,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 182, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0a34cf97497f9cda86a3b9e33654ccf27ce017051818f2c1281799e74599955f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 259, + "rust_test": "force_sit_rejects_sit_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_RestrictedStandTp::test", @@ -13620,12 +13620,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 183, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "db7a4954484244415ddb2aad4bd16ef72e0b0f7ad9377a0211b731aca5d57d63", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 268, + "rust_test": "force_sit_rejects_standtp_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SitCommandTests.cs::SitCommandTests.ForceSit_InvalidObject::test", @@ -13641,12 +13641,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 184, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e43f54f19d83d5057d7c4a669acfb936ee14e81685ce4771f3ee8deb6386243f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 277, + "rust_test": "force_sit_rejects_invalid_object", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs::SitGroundCommandTests.ForceSitGround::test", @@ -13662,12 +13662,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 185, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e0a414f05981fcf1e5769976e15abbf7352163445d7fa303a722f29038e2ad3c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 285, + "rust_test": "force_sit_ground", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/SitGroundCommandTests.cs::SitGroundCommandTests.ForceSitGround_RestrictedSit::test", @@ -13683,12 +13683,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 186, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e4b6b7b328d9d859f0855767c5f85c584e9bee64774264a819a6b3eca331a2cc", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 292, + "rust_test": "force_sit_ground_rejects_sit_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_Default::test", @@ -13704,12 +13704,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 187, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6340e51b32d123149a3b1075df38da08b7d565ca4c570e6cf87194be0a71093d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 306, + "rust_test": "teleport_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_WithRegion::test", @@ -13725,12 +13725,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 188, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "83513fcf965bacc69482a057656650869e0b8a566a1f7b60cf76ec3adcf3609e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 321, + "rust_test": "teleport_with_region", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_WithRegionAndLookAt::test", @@ -13746,12 +13746,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 189, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8247eef3eb799e831dd6a035c71d56e30f2eeb489e1d1d3f99cfcf172089f9aa", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 336, + "rust_test": "teleport_with_region_and_look_at", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_RestrictedUnsit::test", @@ -13767,12 +13767,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 190, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "302bbae8600b96cf7d9240c34ba4e66234197631051c39843562e134a1a1a62b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 352, + "rust_test": "teleport_rejects_unsit_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/TpToCommandTests.cs::TpToCommandTests.TpTo_RestrictedTpLoc::test", @@ -13788,12 +13788,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 191, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "374f4d95b15678c2f3fc81d4c9b966a35d882fee195401e94a5c6f217bc9ca78", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 361, + "rust_test": "teleport_rejects_tploc_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs::UnsitCommandTests.ForceUnSit::test", @@ -13809,12 +13809,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 192, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "de656f40e33678e998804ff8acde7afe20e5e2c1495c5fedf0a010e66452416a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 370, + "rust_test": "force_unsit", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Commands/UnsitCommandTests.cs::UnsitCommandTests.ForceUnSit_RestrictedUnsit::test", @@ -13830,12 +13830,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 193, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b1846b713b2f198c652b4fe760b48f0c2cba7daf1325075b7e8ac390f9802c59", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_commands_semantics.rs", + "rust_line": 377, + "rust_test": "force_unsit_rejects_unsit_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/AcceptPermissionExceptionTests.cs::AcceptPermissionExceptionTests.AcceptPermission::test", @@ -13851,12 +13851,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 194, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d42a0245b3724c285be83a42ac19cd7b9b9559c8c598000687fd4204c490f365", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 39, + "rust_test": "accept_permission_add_and_remove", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs::AcceptTpExceptionTests.CanAutoAcceptTp_User::test", @@ -13872,12 +13872,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 195, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7c73c79954967a8e6ff3f76692e915490c87248f3c0ac4db350603a90a711009", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 59, + "rust_test": "accept_tp_specific_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/AcceptTpExceptionTests.cs::AcceptTpExceptionTests.CanAutoAcceptTp_All::test", @@ -13893,12 +13893,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 196, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "138a8c5362fa1bdd3576390c7517add465aae65f9bbbcbcb06c8fdb20e9d57c3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 78, + "rust_test": "accept_tp_all_users", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs::AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_User::test", @@ -13914,12 +13914,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 197, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d8d1119ec87e286049b79d2cc3008eb1f590fd621dc811e6c3728b3c25300ee5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 97, + "rust_test": "accept_tp_request_specific_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/AcceptTpRequestExceptionTests.cs::AcceptTpRequestExceptionTests.CanAutoAcceptTpRequest_All::test", @@ -13935,12 +13935,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 198, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3a0e7d8200b4780dd41323007de08202ed3c55d268ef448b9ee702159e2b0d87", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 116, + "rust_test": "accept_tp_request_all_users", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll::test", @@ -13957,12 +13957,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 199, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "91a8d1ca9463cfd718bd4ed33f71d07992c7f0c9f4aa20e7ca3effa42db95d32", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_folder_exception_semantics.rs", + "rust_line": 123, + "rust_test": "attach_all_this_except_subtree", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive::test", @@ -13979,12 +13979,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 200, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "09e655591346e58e8822b7c66940c171c099d2de999a9dca855aeeb7ad6c65d4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_folder_exception_semantics.rs", + "rust_line": 137, + "rust_test": "attach_all_this_except_recursive_subtree", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/AttachAllThisExceptExceptionTests.cs::AttachAllThisExceptExceptionTests.AttachAllThis_Recursive_ExceptAll_Recursive_AddRem::test", @@ -14001,12 +14001,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 201, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d3f0bc75e96cacbb9f1f43ad5a3c0e456fd344c67247c2a4d6fc449488792918", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_folder_exception_semantics.rs", + "rust_line": 148, + "rust_test": "attach_all_this_recursive_exception_removed", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs::AttachThisExceptExceptionTests.AttachThisExcept_Default::test", @@ -14023,12 +14023,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 202, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "dbcfbc88786e1dd2574fcdfbecb5122ff163bfbedcbe805fab80cd034a637c00", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_folder_exception_semantics.rs", + "rust_line": 163, + "rust_test": "attach_this_except_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/AttachThisExceptExceptionTests.cs::AttachThisExceptExceptionTests.AttachThisExcept_AddRem::test", @@ -14045,12 +14045,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 203, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "51539615db3b9ebdca12207148a0d53bab4542a7014433affcbac00bc415a9a9", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_folder_exception_semantics.rs", + "rust_line": 174, + "rust_test": "attach_this_exception_removed", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/DenyPermissionExceptionTests.cs::DenyPermissionExceptionTests.DenyPermission::test", @@ -14066,12 +14066,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 204, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "abc56fe6041ddade823f9b0b1b74982f85485bc4a5e3415ba450dc4744d6ba32", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 135, + "rust_test": "deny_permission_add_and_remove", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll::test", @@ -14088,12 +14088,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 205, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0503f9bd3e9d43ca6c1a764e7c287ce12834cb1060f8ef19019177657f9e40a1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_folder_exception_semantics.rs", + "rust_line": 189, + "rust_test": "detach_all_this_except_subtree", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive::test", @@ -14110,12 +14110,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 206, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "29b3818e602666b3313983307eb6e729ae3953af969f2d343df583870cbbbfeb", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_folder_exception_semantics.rs", + "rust_line": 203, + "rust_test": "detach_all_this_except_recursive_subtree", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/DetachAllThisExceptExceptionTests.cs::DetachAllThisExceptExceptionTests.DetachAllThis_Recursive_ExceptAll_Recursive_AddRem::test", @@ -14132,12 +14132,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 207, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "34fe8646d0e07c18e36b92c2743732caa193adc792562dc4f2241ae9fc5daff6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_folder_exception_semantics.rs", + "rust_line": 214, + "rust_test": "detach_all_this_recursive_exception_removed", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs::DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except::test", @@ -14154,12 +14154,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 208, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "da16694b6257870e53108515bea90daa1ffdd7479810f9cca71ae8349367234a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_folder_exception_semantics.rs", + "rust_line": 229, + "rust_test": "detach_this_except_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/DetachThisExceptExceptionTests.cs::DetachThisExceptExceptionTests.DetachAllThis_Recursive_Except_AddRem::test", @@ -14176,12 +14176,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 209, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ceeabaccd82663f970c86fa4dc66f62f0153e5df4fe2c49857ce3475f69374de", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_folder_exception_semantics.rs", + "rust_line": 240, + "rust_test": "detach_this_exception_removed", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs::EditExceptionTests.CanEdit_Exception::test", @@ -14197,12 +14197,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 210, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "fdffe44be767125a011dc3939ee5bb41b754835a91d731fc933f39abf9ba51b5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 145, + "rust_test": "edit_exception_allows_one_object", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/EditExceptionTests.cs::EditExceptionTests.CanEdit_Specific::test", @@ -14218,12 +14218,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 211, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "742d01a64bc798b4e3f54221b43ec8658fb934e59f2d0447060dfca7f2605742", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 170, + "rust_test": "edit_object_restricts_only_one_object", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/EmoteExceptionTests.cs::EmoteExceptionTests.CanEmote::test", @@ -14239,12 +14239,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 212, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a279e9f36b015ccf0a64d7943e7077074cc7ba576c7091726caf1c8641d4bdb1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 195, + "rust_test": "emote_exception_add_and_remove", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RecvChatExceptionTests.cs::RecvChatExceptionTests.CanRecvChat_Except::test", @@ -14260,12 +14260,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 213, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0b0ed1f17aed352d3b563428d845aa5989a4383a0be7673726549f8c657c9aa6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 205, + "rust_test": "receive_chat_exception_allows_user_chat_and_emote", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RecvEmoteExceptionTests.cs::RecvEmoteExceptionTests.CanRecvChat_RecvEmote_Except::test", @@ -14281,12 +14281,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 214, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "139a3f51433870ac5ae28b6c1ca377fe99cf54c65becaedd15c4325eb2922c2b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 225, + "rust_test": "receive_emote_exception_only_allows_selected_user_emotes", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception::test", @@ -14302,12 +14302,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 215, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "98c3f0cadc017e6bf548d3bb140b65e890d486129e50aa000268f38ae0114d0d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 280, + "rust_test": "receive_im_exception_for_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception_SingleGroup::test", @@ -14323,12 +14323,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 216, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "60181b37502563516918c44765e21fa46e1021cb3c46552bcfe41377b11b1c52", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 286, + "rust_test": "receive_im_exception_for_group", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RecvImExceptionTests.cs::RecvImExceptionTests.CanReceiveIM_Exception_AllGroups::test", @@ -14344,12 +14344,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 217, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "590d7faf253c8d2c0fba8d0eb48ccb806ac5da481a2f0f9e1375305e665620f3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 292, + "rust_test": "receive_im_exception_for_all_groups", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat::test", @@ -14365,12 +14365,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 218, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "089e6147654a3159afe957d3bb6b5e511ceb2fbc93db9baa08abcddb583981df", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 316, + "rust_test": "redirect_chat_channel", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_Removed::test", @@ -14386,12 +14386,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 219, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f3dfec0235c9590f30afb0e83d71e20c4675b2b9ad589433b7d3f1c3b6fdcd14", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 322, + "rust_test": "redirect_chat_channel_removed", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_MultipleChannels::test", @@ -14407,12 +14407,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 220, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "40973a405c9dba8d489832f561c96cc8ba7c4cd9f98695cccfd021148fca8e04", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 337, + "rust_test": "redirect_chat_multiple_channels", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChat::test", @@ -14428,12 +14428,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 221, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "269bb82b8001979c833140cfac1d5aa470586864c0e1451339359ad5b37487a1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 361, + "rust_test": "redirect_chat_sends_public_message", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChatMultiple::test", @@ -14449,12 +14449,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 222, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "88866bcdf7b2a9336c0b415ed7734602185d4b3ffce3b68e3b6c6d2f41e426ee", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 372, + "rust_test": "redirect_chat_sends_to_multiple_channels", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirChatExceptionTests.cs::RedirChatExceptionTests.IsRedirChat_RedirectChatEmote::test", @@ -14470,12 +14470,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 223, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "790d94e7e1b46a57ee7b1a53e1ce3e492fb887cd9b89848720940652231af196", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 383, + "rust_test": "redirect_chat_does_not_redirect_emote", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote::test", @@ -14491,12 +14491,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 224, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3b5dfb123aea6a31e4b4f037a37bad652fc0eebb41b6b158410c9b91e2593d25", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 394, + "rust_test": "redirect_emote_channel", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_Removed::test", @@ -14512,12 +14512,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 225, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "bd2269041e166d78893d167bfd11671346089571e903886a80778a9ad4b0161c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 400, + "rust_test": "redirect_emote_channel_removed", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_MultipleChannels::test", @@ -14533,12 +14533,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 226, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "cc4413ca508c4f868346ccf808b9fcd59f80dbe6eec807ba33ee920c280ad4cb", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 415, + "rust_test": "redirect_emote_multiple_channels", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmote::test", @@ -14554,12 +14554,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 227, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1444ee152c0b7ec88bdd5158848a0f5adc89bb6c130fa54249a2bf3fcb002fba", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 421, + "rust_test": "redirect_emote_sends_emote", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteMultiple::test", @@ -14575,12 +14575,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 228, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6c01ccecda72a6abaa82132a5b80b1e78585bc3594487078c809554893e9c255", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 432, + "rust_test": "redirect_emote_sends_to_multiple_channels", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/RedirEmoteExceptionTests.cs::RedirEmoteExceptionTests.IsRedirEmote_RedirectEmoteChat::test", @@ -14596,12 +14596,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 229, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "33a97c506799df4a79dad0559c031a65393054a57039a7b583b63502163d4b28", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 454, + "rust_test": "redirect_emote_does_not_redirect_chat", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptExceptionTests.cs::SendChannelExceptExceptionTests.CanSendChannelExcept::test", @@ -14617,12 +14617,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 230, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "9c803cf297e4895a0f1e73b9e27ab0b2553c705f2a9de57a1d88b5d5e8162f07", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 465, + "rust_test": "send_channel_exception_blocks_only_selected_channel", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/SendChannelExceptionTests.cs::SendChannelExceptionTests.CanSendChannel_Exception::test", @@ -14638,12 +14638,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 231, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "29e4ccb023bf65674f3bc2b2ec33487eb057b1a8b186c37851715e6f8e083d19", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 484, + "rust_test": "send_channel_adds_allowed_channel", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception::test", @@ -14659,12 +14659,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 232, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "91c35b9cd689e1e3979f2bfff09e0a82366008b551ed5458eeed42f3062deb18", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 497, + "rust_test": "send_im_exception_for_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception_SingleGroup::test", @@ -14680,12 +14680,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 233, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4a5a5395c78cc5b068457e0dd018163589abe1848c235d78fe265543333bf7a0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 503, + "rust_test": "send_im_exception_for_group", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/SendImExceptionTests.cs::SendImExceptionTests.CanSendIM_Exception_AllGroups::test", @@ -14701,12 +14701,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 234, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "95c8da0222442b4a2c9a379f589ba7e04530c99bbf04366dbcfbb6063313dcf2", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 513, + "rust_test": "send_im_exception_for_all_groups", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/ShareExceptionTests.cs::ShareExceptionTests.CanShare_Except::test", @@ -14722,12 +14722,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "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": "820e624d0e561f3f1ff796e995ddffa32720897aeb6740dee54ba02dfa9c50ef", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 542, + "rust_test": "share_exception_for_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/ShowNameTagsExceptionTests.cs::ShowNameTagsExceptionTests.CanShowNameTags_Except::test", @@ -14743,12 +14743,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "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": "7182005ba9cf4df543b251564f28f85f974b074d5a5162c130ef7b8075f12d4a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 554, + "rust_test": "show_name_tags_exception_for_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/ShowNamesExceptionTests.cs::ShowNamesExceptionTests.CanShowNames_Except::test", @@ -14764,12 +14764,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "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": "6c076e509919bb190bec612d5edd69ed4eba08751a7d27aeeecada569356d5f7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 566, + "rust_test": "show_names_exception_for_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/StartImExceptionTests.cs::StartImExceptionTests.CanStartIM_Exception::test", @@ -14785,12 +14785,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "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": "f6230954fc8f0346103f7dba1129c4dce0b22c552dc88bb377f97384f377190d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 578, + "rust_test": "start_im_exception_for_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/TouchMeExceptionTests.cs::TouchMeExceptionTests.TouchMe_default::test", @@ -14806,12 +14806,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "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": "ea2a408e380ac38e2690f5f59987d1a84c9583e27d281321ec8555c94636ab2f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 587, + "rust_test": "touch_me_exception_allows_sender_and_hud", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/TouchThisExceptionTests.cs::TouchThisExceptionTests.TouchThis_default::test", @@ -14827,12 +14827,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "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": "91b0f01e0524f1d6bf1d4527fa9d0577fad6974fe46479c6c59c06b667cfedf3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 644, + "rust_test": "touch_this_exception_blocks_only_selected_prim", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/TouchWorldExceptionTests.cs::TouchWorldExceptionTests.TouchWorld_Exception::test", @@ -14848,12 +14848,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "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": "cf78bc6f65d1caed7f3bf2b753229237b66190d448cea3adc569bf7c89bba370", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 675, + "rust_test": "touch_world_exception_allows_selected_world_prim", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Exceptions/TpLureExceptionTests.cs::TpLureExceptionTests.CanTpLure_Except::test", @@ -14869,12 +14869,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "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": "cb364665a039bb899cbc9803ddfef2ec181dd33e89f29707b5b7033e9245a60a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_exception_semantics.rs", + "rust_line": 733, + "rust_test": "tp_lure_exception_for_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_Normal::test", @@ -14890,12 +14890,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 243, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ee28376b3a7f47e9f30fe0b3f68ec5d4f5166dcd244c57679d034cef071c5003", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 39, + "rust_test": "try_get_folder_from_normal_path", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_EmptyPath::test", @@ -14911,12 +14911,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 244, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b24fd59944c116e4558ff7fdf2279101422e56e2be1f2e083061e2c168c8f7b7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 51, + "rust_test": "try_get_folder_rejects_empty_path", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlash::test", @@ -14932,12 +14932,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 245, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d1ff29509abd8b612037327c075bbdf751f5d346ae2bae10d6f21f2924cb539b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 57, + "rust_test": "try_get_folder_when_name_contains_slash", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameContainsForwardSlashes::test", @@ -14953,12 +14953,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 246, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "897c6d11ceddfe5eb7eaef46ade8377b660b4cf138c2ba9ab1f44b60afd23e70", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 69, + "rust_test": "try_get_folder_when_names_contain_multiple_slashes", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashPrefix::test", @@ -14974,12 +14974,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 247, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ea51358e42a3e5e9a0f16e67d3d037a71d7cf0e9a86eca733c5ce25c47fda60d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 81, + "rust_test": "try_get_folder_with_slash_prefix", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashSuffix::test", @@ -14995,12 +14995,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 248, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1dbd870385c2908f28480106155baf1a89d51eb08380f28bc1697ba21f093b28", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 93, + "rust_test": "try_get_folder_with_slash_suffix", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FolderNameWithSlashAffix::test", @@ -15016,12 +15016,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 249, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8f5be7165a421382cc2f7f7666de377b794d253d8220a95d30790c310b5842ca", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 105, + "rust_test": "try_get_folder_with_slash_affix", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_ContendingFoldersWithSlashes::test", @@ -15037,12 +15037,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 250, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1e7c6770c044b827bb29af2e263b4bdf7893599a2394ac32e135f9bb2f725ce1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 117, + "rust_test": "try_get_folder_prefers_exact_slash_match", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_InvalidPath::test", @@ -15058,12 +15058,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 251, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2d2ff34eb8d9532c2073a8584580fbcdffb56a53c462abc25dd91c2fd5d25625", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 148, + "rust_test": "try_get_folder_rejects_invalid_path", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_IgnoreFolderPrefix::test", @@ -15079,12 +15079,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 252, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "44e39e0ef78aab6a342e90d90415c6d895b66a800536a9ecbbc406ce463c925b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 154, + "rust_test": "try_get_folder_ignores_tilde_and_plus_prefixes", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_FailOnHiddenFolder::test", @@ -15100,12 +15100,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 253, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "db9c749e202914a1fdef6ed76a2091f89800c45212e75623f1b5f4b902de80ce", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 166, + "rust_test": "try_get_folder_skips_hidden_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.TryGetFolderFromPath_AllowHiddenFolder::test", @@ -15121,12 +15121,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 254, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "442a75f946bf84b5c56ce87fb59975f75064bc20478b64276a73606d28134411", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 178, + "rust_test": "try_get_folder_allows_hidden_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ById::test", @@ -15142,12 +15142,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 255, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0e59426d457d69b6f23211370dd0bcfc059d6af953a9dcd0c3ca1da60ccf17ec", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 190, + "rust_test": "find_folders_containing_by_prim_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByAttachmentType::test", @@ -15163,12 +15163,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 256, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "30bf9fbebea597b61dce0014f8fbdd2d6e82441f7e46f85539eb693bf3bf710a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 209, + "rust_test": "find_folders_containing_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByAttachmentType_SingleResult::test", @@ -15184,12 +15184,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 257, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "56db787ed7924c9b17c06b176411176cee9c538f6a91fa3080b6e67e7d5b306e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 233, + "rust_test": "find_folders_containing_by_attachment_point_single_result", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/InventoryMapTests.cs::InventoryMapTests.FindFoldersContaining_ByWearType::test", @@ -15205,12 +15205,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 258, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0553e0d1f63a25cf25deb3dbbfb6260eca514bd9d1a7084d62a4664dbd01deed", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_map_semantics.rs", + "rust_line": 252, + "rust_test": "find_folders_containing_by_wearable_type", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CamZoomMin_Default::test", @@ -15226,12 +15226,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 259, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c055f307a63b976d9d0195a0bd2d75fae0871dc6bdb5cd3d1c7757bbf22ab8d7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 26, + "rust_test": "camera_zoom_min_defaults_to_none", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextWorld_Default::test", @@ -15247,12 +15247,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 260, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b7be8086541b582886a59ab1549424e91ae3dd203da8e00d01db171267dac751", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 41, + "rust_test": "can_show_hover_text_world_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextHud_Default::test", @@ -15268,12 +15268,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 261, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b7be8086541b582886a59ab1549424e91ae3dd203da8e00d01db171267dac751", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 47, + "rust_test": "can_show_hover_text_hud_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverText_Default::test", @@ -15289,12 +15289,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 262, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b7be8086541b582886a59ab1549424e91ae3dd203da8e00d01db171267dac751", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 53, + "rust_test": "can_show_hover_text_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowHoverTextAll_Default::test", @@ -15310,12 +15310,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 263, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b7be8086541b582886a59ab1549424e91ae3dd203da8e00d01db171267dac751", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 59, + "rust_test": "can_show_all_hover_text_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowNameTags_Default::test", @@ -15331,12 +15331,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 264, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f342e63f079140b37b4cccd968bd9ac8c6f02c4139b3de85424425e0ed11998d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 65, + "rust_test": "can_show_name_tags_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShare_Default::test", @@ -15352,12 +15352,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 265, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "427357b0d11808e2a6a2d4353ca6cb907c18f05bd38b8d50bec884c4f164b429", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 77, + "rust_test": "can_share_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanShowNames_Default::test", @@ -15373,12 +15373,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 266, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f1bce39ca5be71acf52f04ab780cc55989e465a9a040cf4005a0c1ac430c9c24", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 89, + "rust_test": "can_show_names_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanEdit_Default::test", @@ -15394,12 +15394,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 267, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "be793f85befddb9de1c0fa485f5aecc1b1b79089410244b596294975b6a0cb3a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 101, + "rust_test": "can_edit_defaults_true_for_all_locations_and_ids", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanRecvChat_Default::test", @@ -15415,12 +15415,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 268, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6cc68206f230b1036371a58e636ad6dcdb3adfa667c5941f64bbb1e44609aaa6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 116, + "rust_test": "can_receive_chat_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanAutoAcceptTpRequest_Default::test", @@ -15436,12 +15436,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 269, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "19fcbbf518b0082a76f2f919b9286b062984da3c756961bf01f4a9f2a5940419", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 138, + "rust_test": "auto_accept_tp_request_defaults_false", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanTpRequest_Default::test", @@ -15457,12 +15457,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 270, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f1e6cc9564b7b5146897a492f0a253910bf3d4641cb595790416c01085fdbaaa", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 151, + "rust_test": "can_tp_request_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanAutoAcceptTp_Default::test", @@ -15478,12 +15478,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 271, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c677ed339b42865d2f91ff6ea06c79344232d085efc03adfa00da8b7174596d5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 163, + "rust_test": "auto_accept_tp_defaults_false", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanChat_Default::test", @@ -15499,12 +15499,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 272, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ab2c303030077b3acbea0158a624e24ec9a19331a97399bab600f14d28c07d7d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 176, + "rust_test": "can_chat_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanSendIM_Default::test", @@ -15520,12 +15520,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 273, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8f4dbcbd6f5685dc75d25e646970caee7efd9d10d8b7c9dd55e0777554e5c9f0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 185, + "rust_test": "can_send_im_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanStartIM_Default::test", @@ -15541,12 +15541,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 274, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "aabd13e2ec4a75145b28aa4fe472c4b3a440941040b05868c3ff26537438d7a9", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 198, + "rust_test": "can_start_im_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/PermissionsTests.cs::PermissionsTests.CanReceiveIM_Default::test", @@ -15562,12 +15562,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 275, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "28fe69767f576d07182f8b7e2acc9d412f782f7837aabcd9c70ed719604b7cd1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_permissions_semantics.rs", + "rust_line": 210, + "rust_test": "can_receive_im_defaults_true", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_MultipleTerms::test", @@ -15584,12 +15584,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 276, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b782dce7a400f5353b6b0155e42ad187393e636a8d13ba7453a9ac4ef1a41755", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 53, + "rust_test": "find_folder_multiple_terms", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_SearchOrder::test", @@ -15606,12 +15606,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 277, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "96b75644b9aa55e6d1d9ddcfe28d65d336018aa4bc216c2db7a66a56ee69cbf0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 62, + "rust_test": "find_folder_search_order", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_IgnorePrivate::test", @@ -15628,12 +15628,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 278, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "083bd4db8d90f8abb299fa4c1a719bd912d3ae10714f1f55d29dc1622b0f79cf", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 68, + "rust_test": "find_folder_ignores_private_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/FindFolderQueryTests.cs::FindFolderQueryTests.FindFolder_IgnoreTildePrefix::test", @@ -15650,12 +15650,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 279, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "212e9a0798918343a935290558c355b4e1b8fc5fcc337c80631c492fc8ce7606", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 78, + "rust_test": "find_folder_ignores_tilde_prefixed_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs::FindFoldersQueryTests.FindFolders::test", @@ -15672,12 +15672,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 280, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e5c3292ad47e4eb0efa441c3881ae44971705c21f11b2096fcda694e1a4d3dad", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 88, + "rust_test": "find_folders", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/FindFoldersQueryTests.cs::FindFoldersQueryTests.FindFolders_Separator::test", @@ -15694,12 +15694,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 281, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "60d0b148b6cde265879b4ef454abee16fd16d256b8ff5784e537e7b2353647c4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 97, + "rust_test": "find_folders_with_separator", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingNothing::test", @@ -15716,12 +15716,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 282, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "df9e9fcc7b0f90daf9c5a35c2e15975ca72f4523d5461c794f6f312f33ee4bc0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 106, + "rust_test": "get_attach_wearing_nothing", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_ExternalItems::test", @@ -15738,12 +15738,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 283, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3f1794d7816ea97bcd7ab67f673c98032a461bdd9d4f3da61f8aa8b185a95f13", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 115, + "rust_test": "get_attach_external_items", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingSomeItems::test", @@ -15760,12 +15760,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 284, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d733f5bddcd3760082839eda2baa40086f1a26b466d6bad2d47445aae1beee84", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 150, + "rust_test": "get_attach_wearing_some_items", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_WearingEverything::test", @@ -15782,12 +15782,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 285, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "540a4c8988412ea30da8242cc2f7be5651b608dfffbcb1a0e8d5ef9c0833db0f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 244, + "rust_test": "get_attach_wearing_everything", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_Specific_Exists::test", @@ -15804,12 +15804,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 286, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a392c9843d3c7e97a7df7e760d1e7ba4ca43630c5e689d7114b17bc9db8f89b8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 271, + "rust_test": "get_attach_specific_exists", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetAttachQueryTests.cs::GetAttachQueryTests.GetAttach_Specific_NotExists::test", @@ -15826,12 +15826,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 287, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "280704b8db19f81158cb50b8e8c834c8b1af3c9726fbd047a259864acd9ebca1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 291, + "rust_test": "get_attach_specific_not_exists", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:8e1b820c1f2bd3cd", @@ -15847,12 +15847,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 288, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d456fff95123e0954e23a02b15f8b2f671a2c941fd93ec8192be2cc49709bdf7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 38, + "rust_test": "get_blacklist_all", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:64136cd82156035a", @@ -15868,12 +15868,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 289, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "da01cbc4c93cec2a0c2cb8a4a1b611b7dcdac2349f5d79bf05fac3f15db459ed", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 48, + "rust_test": "get_blacklist_im_filter", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:2068bf7f0a131fe8", @@ -15889,12 +15889,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 290, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6e75fe889f75faf60ccfb0fd239779a1bcd473fea630ed0a4a3501a285998256", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 58, + "rust_test": "get_blacklist_send_filter", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:b86b0c5e67f981c2", @@ -15910,12 +15910,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 291, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "18ec950468f45840157597b84625d0a2ff4cdb65b2f2470b373771ebf4ee302c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 68, + "rust_test": "get_blacklist_unmatched_filter", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.GetBlacklist::case:123b930bb970a1f1", @@ -15931,12 +15931,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 292, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ebed70d3b56ced0eb86698d7e81b89e47a5805045f6f8444e80eb6f46cef1d92", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 78, + "rust_test": "get_blacklist_empty", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.ManualBlacklist::case:f14641dea0f1de93", @@ -15952,12 +15952,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 293, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1d087dd3d962cb251d7b4e027386ced47834f7a079d5f46238300e434f3acc9f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 96, + "rust_test": "manual_blacklist_all", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetBlacklistQueryTests.cs::GetBlacklistQueryTests.ManualBlacklist::case:d25c660357f6ccff", @@ -15973,12 +15973,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 294, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "741a6460e1ef38ec541c480c48b46c90c4e6fbaefd9b5676f69c315a1801b706", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 102, + "rust_test": "manual_blacklist_empty", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs::GetDebugQueryTests.GetDebug_Default::case:fa77559e30768d15", @@ -15994,12 +15994,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 295, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ba9d8e9007ec7792cd98d79df629303e326ebabc6f0598f2c4601d0a6cab9288", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 119, + "rust_test": "get_debug_known_setting", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetDebugQueryTests.cs::GetDebugQueryTests.GetDebug_Default::case:55694f25ed879d95", @@ -16015,12 +16015,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 296, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4b9009de07d5ce026d4a535a101db7552ad9484d4e1f0ac31c4042bb521a23c7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 128, + "rust_test": "get_debug_unknown_setting", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs::GetEnvQueryTests.GetEnv_Default::case:f656b648d00a6d91", @@ -16036,12 +16036,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 297, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c18b007aa20c054623b0537a45e01b22a381f1b2437d3fe9933da4178d50ee32", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 145, + "rust_test": "get_environment_known_setting", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetEnvQueryTests.cs::GetEnvQueryTests.GetEnv_Default::case:55694f25ed879d95", @@ -16057,12 +16057,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 298, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "42dbec1a2be94bf7caf478ca179104d868d2885adf81ec7253a96ecbe9a907d0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 151, + "rust_test": "get_environment_unknown_setting", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs::GetGroupQueryTests.GetGroup_Default::test", @@ -16078,12 +16078,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 299, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "242fb51e4d97197aa428fbf9d51975a13c5f9504c9074a90fbd822294df4b90b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 160, + "rust_test": "get_active_group", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetGroupQueryTests.cs::GetGroupQueryTests.GetGroup_NoGroup::test", @@ -16099,12 +16099,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 300, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "57a68f1b8f10ccf075905086f343f7e35398b0cb80a80052bb697e1204029fed", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 169, + "rust_test": "get_group_without_active_group", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv::test", @@ -16121,12 +16121,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 301, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "41028c7deea18ec91d018d3915bd1a75a457ed7c4f2f69c59163d6556d6a342e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 315, + "rust_test": "get_inventory_root", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits::test", @@ -16143,12 +16143,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 302, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5030442b18cf5df5df2919d263382b327019c18962dbfeb471d13b5456500ec5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 321, + "rust_test": "get_inventory_outfits", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreLeadingSlash::test", @@ -16165,12 +16165,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 303, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d62152b902a9e1bfa7b647601c5bab9fca1916de6f05fcf7c9e56d5b4f692920", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 395, + "rust_test": "get_inventory_ignores_leading_slash", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreTrailingSlash::test", @@ -16187,12 +16187,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 304, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "42f520e9c6be715c3bae974f0220e01a6ac4a057d93bbfb6d6bf85f49322ad7d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 401, + "rust_test": "get_inventory_ignores_trailing_slash", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_IgnoreLeadingAndTrailingSlash::test", @@ -16209,12 +16209,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 305, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4647da553b889e410131d818c60f1484f7c45ae1ae2e41818195ad9ff23bd8d8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 407, + "rust_test": "get_inventory_ignores_leading_and_trailing_slash", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Outfits_Inventory::test", @@ -16231,12 +16231,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 306, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2720362877c4ba1051a23b7410cf0f3b1a7dd40e15c64408a36068e74b7b8d06", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 413, + "rust_test": "get_inventory_outfit_items_are_not_folders", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Subfolder::test", @@ -16253,12 +16253,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 307, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "78a50c6e32e954ee4e98e294b7d85b938e058da72f3eef3c2e749404687d0fcd", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 457, + "rust_test": "get_inventory_subfolder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Empty::test", @@ -16275,12 +16275,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 308, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a024471eb1d2270ff6c629f01ca4f5ee616d88504bad89bd24351e5632231531", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 463, + "rust_test": "get_inventory_empty_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvQueryTests.cs::GetInvQueryTests.GetInv_Invalid::test", @@ -16297,12 +16297,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 309, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0929a29ca90df26e40665d80d0f0890ecdfab8281407ef448caab7ac40f60271", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 469, + "rust_test": "get_inventory_invalid_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn::test", @@ -16319,12 +16319,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 310, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "66d276581043210bc205a97ea30855dda70c0b3ea16fc7ae79cc06fc5c416153", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 480, + "rust_test": "get_inventory_worn", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_PartialRoot::test", @@ -16341,12 +16341,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 311, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "823a8d168dcb95949f31230f969fbb28ddf226e593f1223bc1919102206e5792", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 503, + "rust_test": "get_inventory_worn_partial_root", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_Naked::test", @@ -16363,12 +16363,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 312, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "35d3a9361abc524724720a8466f13408eae1e6161e26c62825df262ccee0ce59", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 518, + "rust_test": "get_inventory_worn_naked", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_EmptyFolder::test", @@ -16385,12 +16385,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 313, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4288d0bf096a124398043d97ce63d54fd5accbbf0b4ad86d222992768574295b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 527, + "rust_test": "get_inventory_worn_empty_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetInvWornQueryTests.cs::GetInvWornQueryTests.GetInvWorn_PartialWorn::test", @@ -16407,12 +16407,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 314, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b70eec2c026346849a52307dc0dd792ab385e87d197d336595b139d3e70fea65", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 536, + "rust_test": "get_inventory_worn_partial_folder", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingNothing::test", @@ -16429,12 +16429,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 315, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "9e77468c539bec7ff61bdb5e98ec854089a23078090efe48cc2aa775df5bd886", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 571, + "rust_test": "get_outfit_wearing_nothing", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_ExternalItems::test", @@ -16451,12 +16451,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 316, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "988fde1b90f6b90354d264dae92ab11bb02212b80732b3321aa96c38616f7d11", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 577, + "rust_test": "get_outfit_external_items", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingSomeItems::test", @@ -16473,12 +16473,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 317, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ce54efe1618f75eeeebebe3da78a4a4ce5a97f755da2ab4544930ea161d7668d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 608, + "rust_test": "get_outfit_wearing_some_items", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_WearingEverything::test", @@ -16495,12 +16495,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 318, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "dbbee341ce823c565432c064249872eb0a892f5b1042c128605c0b486f024ddc", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 639, + "rust_test": "get_outfit_wearing_everything", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_Specific_Exists::test", @@ -16517,12 +16517,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 319, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f19aeb4ab0e3fbb3b9ff73aa6ab0725f04bdaed54c3332d8d776016a533aefa3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 662, + "rust_test": "get_outfit_specific_exists", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetOutfitQueryTests.cs::GetOutfitQueryTests.GetOutfit_Specific_NotExists::test", @@ -16539,12 +16539,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 320, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "69d1a3db0c799993a26c8edd705890d6f39676d4eb52bccd8a97fdd9ce26351a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 682, + "rust_test": "get_outfit_specific_not_exists", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_BySender::test", @@ -16561,12 +16561,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 321, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "28e44ab05872639448b35beee5b1c2a8f437c42bb17730640c727786449ee1d5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 702, + "rust_test": "get_path_new_by_sender", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByUUID::test", @@ -16583,12 +16583,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 322, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d76b3758de37122037d29616678676913f90db2a38e5549a05d746708ce19432", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 716, + "rust_test": "get_path_new_by_uuid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByUUID_Unknown::test", @@ -16605,12 +16605,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 323, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d3a2ebafe504636aa4d04b2cfd02c0fab90bb239e742e308d4dad3cc8f6a8cf7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 730, + "rust_test": "get_path_new_by_unknown_uuid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByAttach::test", @@ -16627,12 +16627,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 324, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d01563cadc8387b7f9a01d495cb9f9393213fc5d9b1b4f90d78e97c5d479dac0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 750, + "rust_test": "get_path_new_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetPathNewQueryTests.cs::GetPathNewQueryTests.GetPathNew_ByWorn::test", @@ -16649,12 +16649,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 325, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "627061108a547e858f1e1b3490e6ab62f14144881adf2bd3a76c693f315f68aa", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_inventory_queries_semantics.rs", + "rust_line": 766, + "rust_test": "get_path_new_by_wearable", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs::GetSitIdQueryTests.GetSitID::test", @@ -16670,12 +16670,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 326, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "fe70c49f8574bfb670d01a5b77c5ca7ed5d4a079b0a506bc39b47f26b1d85c1a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 177, + "rust_test": "get_sit_id_when_not_sitting", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetSitIdQueryTests.cs::GetSitIdQueryTests.GetSitID_Default::test", @@ -16691,12 +16691,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 327, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7bb18043a77adf9b77c5703d9d9d1772ee124770e6591abfc0477e3bfaf3765b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 185, + "rust_test": "get_current_sit_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetStatusAllQueryTests.cs::GetStatusAllQueryTests.GetStatusAll::test", @@ -16712,12 +16712,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 328, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "91cbb0706ca546d3acfd34e6d7a1747ab855df51114b602200ae7e5f7a830374", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 201, + "rust_test": "get_status_all_senders", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus::test", @@ -16733,12 +16733,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 329, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8eb61e98a7136b79df9179cda1f9b97eb2aa9fb462553903b85511a408331af9", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 213, + "rust_test": "get_status_for_sender", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus_filtered::test", @@ -16754,12 +16754,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 330, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "40b70fc9e74b7e71e0e503e4e2196cfac2e1c12a3e4ae83c3cfa27ec56cdfcaf", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 225, + "rust_test": "get_status_filtered", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/GetStatusQueryTests.cs::GetStatusQueryTests.GetStatus_customSeparator::test", @@ -16775,12 +16775,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 331, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f736908a1f59f851c337a3a28342e3f08e73ec5e82b00f990b71caaafbc9721e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 234, + "rust_test": "get_status_custom_separator", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.Notify::test", @@ -16796,12 +16796,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 332, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2c31044d5bda9d84b6badf3b5301cb4223bf9ef86fa6a0edb5b45870783d3726", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 30, + "rust_test": "notify_every_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyFiltered::test", @@ -16817,12 +16817,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 333, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "005a405b53c4a58aee87a7a1680cdbc12ef981f8b650574e53645756425463e3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 54, + "rust_test": "notify_filtered", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiCommand::test", @@ -16838,12 +16838,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 334, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6cdbeb24d9d4323ced142dee3ecdda678cf8bd7a70ecc94349d44d8af13579f4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 70, + "rust_test": "notify_multi_command", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiChannels::test", @@ -16859,12 +16859,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 335, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "09e383e78ad3e818e0af12c1f0f4d4834e1bad9bd10fcebbe4ce7b1a81174dc0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 92, + "rust_test": "notify_multiple_channels", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyMultiChannelsFiltered::test", @@ -16880,12 +16880,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 336, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "12faf88193ed2b2ca9fea24ff6710ab3fb21ceec04eb7821f6343b0f2b8d770e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 109, + "rust_test": "notify_multiple_channels_filtered", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:9e893d263294d04d", @@ -16901,12 +16901,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 337, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e5bdbfe1566e7fc156754c989e6785f80e8cc4f51144ce1cfc553871d9cfcd78", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 134, + "rust_test": "notify_camdistmax", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:fc6b17eb4e9e7a00", @@ -16922,12 +16922,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 338, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e08ba2e7c167169fe6979c1a5e0fd5b74f5dec78d91de4c224894cb5291651ba", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 140, + "rust_test": "notify_setcam_avdistmax", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:b37376c5865a6fe8", @@ -16943,12 +16943,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 339, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "01d805548cbd9edaccd5e35601dc91863d145ea8e8f3b978a5e11656c00e1c57", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 149, + "rust_test": "notify_camdistmin", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:5d497faea315b624", @@ -16964,12 +16964,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 340, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d219e8c6f03080cc9b0dfdb28277204e06b07a05fef0424181cf714fa8ba0208", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 155, + "rust_test": "notify_setcam_avdistmin", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:282fa0139ccbba29", @@ -16985,12 +16985,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 341, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "af210dd36eee5c6d76df279d82291eb4c2201eac51dc4b68dcf08fbee169f596", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 164, + "rust_test": "notify_camunlock", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:f08c6eb7b4d12fac", @@ -17006,12 +17006,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 342, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "63ea1e23d64208f0cd527ab817f056c63c7719395de8c59dcddc5fa0afb41761", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 170, + "rust_test": "notify_setcam_unlock", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:37f0f73ed7492dd0", @@ -17027,12 +17027,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 343, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e0aeec7fd35c4b75281a270175e8fbf9d950805ef1a3ce534a681c8a3ef2e3de", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 176, + "rust_test": "notify_camtextures", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:d75917941e63732c", @@ -17048,12 +17048,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 344, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "427b44014c924d885561b7c89214d3cbd7f93f946815f9a07b1e27b6cbe39527", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 185, + "rust_test": "notify_touchfar", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySynonyms::case:2f72da33fdbcd8be", @@ -17069,12 +17069,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 345, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2018795a1e727dc2b82a206f03a09f9395426168799764c8a7a360804b9ac62c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 191, + "rust_test": "notify_fartouch", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyClear_Filtered::test", @@ -17090,12 +17090,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 346, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "48a44f3d03bf7af895c5227b81df5a6946f9ec639d167d44c3ab078651b36646", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 197, + "rust_test": "notify_clear_filtered", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyClear::test", @@ -17111,12 +17111,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 347, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "06c588cdf97694cf3baa46f21dbc7b3f39cb655613fe8654fba0a64c95ab58f9", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 213, + "rust_test": "notify_clear", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyInventoryOffer::test", @@ -17132,12 +17132,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 348, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "189ec8eddccf42df55fd87711b7726fea8c75eac1b7ad87710f10747f1779334", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 230, + "rust_test": "notify_inventory_offer", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySitStandLegal::test", @@ -17153,12 +17153,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 349, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "769f2aa5d98cfb4cc22c7f65c38b75cf708b7082d35527a19cde78eafeec59da", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 268, + "rust_test": "notify_sit_and_stand_legal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifySitStandWithRestrictions::test", @@ -17174,12 +17174,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 350, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "36227d1e169d8a05dd85b0e1b8c517501d0e4256177076c368e031509404039d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 292, + "rust_test": "notify_sit_and_stand_illegal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyWear::test", @@ -17195,12 +17195,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 351, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6bd2017964066fb58e6e5178dbca0da1859f4d481480612fd1675ab197f7051a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 316, + "rust_test": "notify_wear_legal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyWear_Illegal::test", @@ -17216,12 +17216,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 352, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "bf7665ce0b959e17152a8b1087c5316579dbc2f124793108a80c225d4b2fa62c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 341, + "rust_test": "notify_wear_illegal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyUnWear::test", @@ -17237,12 +17237,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 353, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "85722dfdefe66adef5b82132c847e29a815680e46742292a24ab5204f931fdab", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 357, + "rust_test": "notify_unwear_legal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyUnWear_illegal::test", @@ -17258,12 +17258,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 354, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1721e0d6165378fbc78d361d79ca01d1408a9bd011ec3c0e84b58f3a28802a08", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 388, + "rust_test": "notify_unwear_illegal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyAttached::test", @@ -17279,12 +17279,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 355, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "676207d20a16f1037f5dea5e8daa2767d9670c7dfb0a16b7810c577893f69718", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 407, + "rust_test": "notify_attached_legal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyAttached_Illegal::test", @@ -17300,12 +17300,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 356, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7dc3a16a22ff1c97f0192b5018029ccecb20b3953eb30ec03bdf2c6bfc8709db", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 434, + "rust_test": "notify_attached_illegal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyDetached::test", @@ -17321,12 +17321,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 357, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "32c6c8f21eb3c40a15f41820f925f70279959a48513069e5a348d63e72867c21", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 465, + "rust_test": "notify_detached_legal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/NotifyQueryTests.cs::NotifyQueryTests.NotifyDetached_Illegal::test", @@ -17342,12 +17342,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 358, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "408a8cdba541b2a9aa12eafdcb1f8cb78dcfdac240ad17380588a8407336e40d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_notify_semantics.rs", + "rust_line": 482, + "rust_test": "notify_detached_illegal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs::VersionNumBlQueryTests.VersionNumBL::case:478968a5d14830de", @@ -17363,12 +17363,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 359, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "486a015d3159e1aac61533af1a7b4008b44184e2baf28b6adc42bfc551b35401", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 253, + "rust_test": "version_number_without_blacklist", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/VersionNumBlQueryTests.cs::VersionNumBlQueryTests.VersionNumBL::case:8c124ee42e9ab944", @@ -17384,12 +17384,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 360, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e97513102f960d28c43deaa56ba639531b303ee44f6889997906ffeec95807cd", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 262, + "rust_test": "version_number_with_blacklist", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.ManualVersion::test", @@ -17405,12 +17405,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 361, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c3d69960d53fec74ffafddf59655881dbab9712228318381793014d7066e6823", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 271, + "rust_test": "manual_version", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:442bdc765ad34e20", @@ -17426,12 +17426,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 362, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "91933452f80e5715b0448669235bf6afcd23cb004b83bbfb4845914ceb8684de", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 293, + "rust_test": "version_query_standard", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:968af293ea2a53a1", @@ -17447,12 +17447,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 363, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "993f6765a1ecddcf517f8b8aea16c292c39bf35b337ea3e6be94192862cbe9e8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 299, + "rust_test": "version_query_new", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Queries/VersionQueryTests.cs::VersionQueryTests.CheckVersions::case:ae9a221915e6e1bb", @@ -17468,12 +17468,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 364, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "763e86b20694a0b563f66fbd217bc28cd9d2b3c6ecbce9ed6f01dbcca2cfd0a4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_query_basics_semantics.rs", + "rust_line": 308, + "rust_test": "version_query_number", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs::AddAttachRestrictionTests.AddAttach::test", @@ -17490,12 +17490,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 365, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "cf3a359e732e66f0ea2be759a9604993dd6a540c4fba3098726a39822bec600e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 22, + "rust_test": "add_attach_restricts_all_attachment_points", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AddAttachRestrictionTests.cs::AddAttachRestrictionTests.AddAttach_Specific::test", @@ -17512,12 +17512,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 366, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b5dbac3042f9f5c5e3a23104147ba72533ce830ef200cf5df4553665e99e63c9", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 50, + "rust_test": "add_attach_restricts_one_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs::AddOutfitRestrictionTests.AddOutfit::test", @@ -17534,12 +17534,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 367, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1d07d125a05fb63a9c31a6337a561cad1720ae8331bb36c9afb23d9fa833c890", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 78, + "rust_test": "add_outfit_restricts_all_layers", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AddOutfitRestrictionTests.cs::AddOutfitRestrictionTests.AddOutfit_part::test", @@ -17556,12 +17556,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 368, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "753dcddce95b63670cef802b4463cd06afbf591cb36804e857fa9e86063f399b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 106, + "rust_test": "add_outfit_restricts_one_layer", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AllowIdleRestrictionTests.cs::AllowIdleRestrictionTests.CanAllowIdle::test", @@ -17577,12 +17577,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 369, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "38f09b894287541825913c97f8bbdc3aaa5332ce554182e642600d6741a292d5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 22, + "rust_test": "allow_idle_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AlwaysRunRestrictionTests.cs::AlwaysRunRestrictionTests.CanAlwaysRun::test", @@ -17598,12 +17598,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 370, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "dabb9fd2e1128fab4d21ec50240c8eb6874a0393655fe0741a8922ebae62ec7f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 31, + "rust_test": "always_run_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis::test", @@ -17620,12 +17620,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 371, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "26f6bebf30b4bef1250a2d48d7d8661037d80430c7bb71e07ac8ca1f50337ef2", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 239, + "rust_test": "attach_all_this", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive::test", @@ -17642,12 +17642,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 372, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "cb3ab0fdc028daab4cd1bca0574bab9def01d4f3b8479f69acd1bb82b3aa57d4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 252, + "rust_test": "attach_all_this_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Path::test", @@ -17664,12 +17664,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 373, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a2df9e716a57eb3e60f2ae858b999cefa4fcde91e8b017d2bca0c1f5eeb111b4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 265, + "rust_test": "attach_all_this_recursive_path", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Worn::test", @@ -17686,12 +17686,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 374, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6fb5793c8111be7dc2ea5a414d4d03e62ad79530f15649c6552e19e3dc500219", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 278, + "rust_test": "attach_all_this_recursive_worn", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached::test", @@ -17708,12 +17708,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 375, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f34d39c35611a37ca12932375d4011aa163d14efce27f8971e01443eb714e2b1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 291, + "rust_test": "attach_all_this_recursive_attached", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachAllThisRestrictionTests.cs::AttachAllThisRestrictionTests.AttachAllThis_Recursive_Attached_AddRem::test", @@ -17730,12 +17730,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 376, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "31ef6f16f11e28ddb7f71dd7db713d272e3cb87a4757309f34a943244f457854", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 304, + "rust_test": "attach_all_this_recursive_attached_removed", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis::test", @@ -17752,12 +17752,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 377, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2ec55164960b661dcb4e403e6972c4d0132c2af8de6ba5c42dc4a3c47392792b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 317, + "rust_test": "attach_this", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_NotRecursive::test", @@ -17774,12 +17774,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 378, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f39795213dc5919346a2eea6d63a8609679edbfad5adb34b9ce7a5423e490804", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 330, + "rust_test": "attach_this_not_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByPath::test", @@ -17796,12 +17796,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 379, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "60fd1fc734e58ff5f86edf47431142938e16676bacb8b486842cd120a749b1d6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 343, + "rust_test": "attach_this_by_path", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByRlvAttachmentPoint::test", @@ -17818,12 +17818,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 380, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d7d45305165efa11603b8ccd5351c5fb3a56b99514f9e19b9a918ab15cd1bec3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 356, + "rust_test": "attach_this_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByWornLayer::test", @@ -17840,12 +17840,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 381, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "68015385d285c1c52767b9c1f80479e48a37bb173782cab56e06eb0644160586", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 369, + "rust_test": "attach_this_by_worn_layer", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/AttachThisRestrictionTests.cs::AttachThisRestrictionTests.AttachThis_ByWornLayer_AddRem::test", @@ -17862,12 +17862,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", + "rust_body_sha256": "19dc26531ca7ef2e3588b5af89093c0c0fff30609e60279c10d6122f600a1903", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", "rust_line": 382, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_test": "attach_this_by_worn_layer_removed", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ChatNormalTests.cs::ChatNormalTests.CanChatNormal::test", @@ -17883,12 +17883,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 383, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "82f28bf6dbfc1376969a34229e745b1ddb2c3136eaf67f2f047af5d0c75b3592", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 40, + "rust_test": "chat_normal_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ChatShoutRestrictionTests.cs::ChatShoutRestrictionTests.CanChatShout::test", @@ -17904,12 +17904,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 384, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7fcc4107984a8381c1f0cee44b2b6c1c287015044f3c6952172724b688cbc220", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 49, + "rust_test": "chat_shout_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ChatWhisperRestrictionTests.cs::ChatWhisperRestrictionTests.CanChatWhisper::test", @@ -17925,12 +17925,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 385, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "82afa79bc2d76709a01a0d4a50c532193d1c93fe98ec0912cf0bc9451823f1de", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 58, + "rust_test": "chat_whisper_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DefaultWearRestrictionTests.cs::DefaultWearRestrictionTests.CanDefaultWear::test", @@ -17946,12 +17946,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 386, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5e3ba81232df9ff3086f2d486f7be98395476586ea7b93bf690ba3773f3735da", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 67, + "rust_test": "default_wear_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis::test", @@ -17968,12 +17968,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 387, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5dc59c18fa28231427cfecc55befca995b4eb61dfa3ecc08198742ce891f2ac4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 395, + "rust_test": "detach_all_this", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive::test", @@ -17990,12 +17990,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 388, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "629d6db121fc2d74ca2b5236a2dba218771cfc127f1ffb9cfef19b765e3a4a18", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 408, + "rust_test": "detach_all_this_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Path::test", @@ -18012,12 +18012,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 389, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1b8915abf9287e992b43cd8187f57a5fa6913a9c2a74f8d44fe55e5bef9465fc", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 421, + "rust_test": "detach_all_this_recursive_path", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Worn::test", @@ -18034,12 +18034,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 390, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f9c2371a52accbfc21335414e1e9fa045c5be164d736c2e42d65e0481686ed2e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 434, + "rust_test": "detach_all_this_recursive_worn", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached::test", @@ -18056,12 +18056,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 391, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e6c796e8f6f2753463ed0474362f5ac67625d740a7c78516b46f643f677cfd91", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 447, + "rust_test": "detach_all_this_recursive_attached", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachAllThisRestrictionTests.cs::DetachAllThisRestrictionTests.DetachAllThis_Recursive_Attached_AddRem::test", @@ -18078,12 +18078,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 392, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1fa01c5c84056ced682d1278dbabc3c949eae0eab1ff3add5abc42af4d964ae4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 460, + "rust_test": "detach_all_this_recursive_attached_removed", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach_Default::test", @@ -18099,12 +18099,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 393, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "40780464960d78a2174c2b5bd7cb64c6fb70ef94fb70fea7768ff4f445da3895", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 182, + "rust_test": "detach_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach::test", @@ -18120,12 +18120,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 394, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5e4637b5729c0f1e3076a1f3c2093ac4127ecd181a028a9f896c275363bbbf24", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 188, + "rust_test": "detach_restricts_sender_prim", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachRestrictionTests.cs::DetachRestrictionTests.Detach_AttachPoint::test", @@ -18141,12 +18141,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 395, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "9b6e8148d03b84509d90fca547e13a08d172b2d436ba489c12edf6875b68ba22", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 196, + "rust_test": "detach_restricts_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis::test", @@ -18163,12 +18163,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 396, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2817a30621b0ba0ab6733872f37b26a6d27ca078e4543ce5f5aa8e86c0d86b37", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 473, + "rust_test": "detach_this", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_NotRecursive::test", @@ -18185,12 +18185,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 397, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a3964bcb384e0129cd50248e7dfa99d6bdeb762676b87682e3033f05a1e549c1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 486, + "rust_test": "detach_this_not_recursive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByPath::test", @@ -18207,12 +18207,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 398, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "40608dca7fadcf24de403fdf2d0ee788ba1df14911e031f0ecc9293f5751f6ed", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 499, + "rust_test": "detach_this_by_path", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByRlvAttachmentPoint::test", @@ -18229,12 +18229,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 399, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b8b242d7645cb0533e8d96ca678cfe0ea599d80b7dca9f43022cb32088cb5a17", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 512, + "rust_test": "detach_this_by_attachment_point", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByWornLayer::test", @@ -18251,12 +18251,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 400, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ee6d3cfd784fde497f9550b30de25fc57d0c3c92f89fa427df8752511ca117eb", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 525, + "rust_test": "detach_this_by_worn_layer", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/DetachThisRestrictionTests.cs::DetachThisRestrictionTests.DetachThis_ByWornLayer_AddRem::test", @@ -18273,12 +18273,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 401, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "87955836e1ae1a1fe58b072a99979c594ec72261ea7678559bb5f12a8a4ccfd2", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_recursive_folder_restrictions_semantics.rs", + "rust_line": 538, + "rust_test": "detach_this_by_worn_layer_removed", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/EditAttachRestrictionTests.cs::EditAttachRestrictionTests.CanEdit_Attachment::test", @@ -18294,12 +18294,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 402, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c8441d13c9a8f8395e4f5457a4d82a3e2bfb6d7f31bab02e0f84618da823882a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 251, + "rust_test": "edit_attachment_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/EditRestrictionTests.cs::EditRestrictionTests.CanEditFolderNameSpecifiesToAddInsteadOfReplace::test", @@ -18315,12 +18315,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 403, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "920af530c91ec367f08bb4142d6cb35567c1299b99115ccc0dff147300ec4d42", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 257, + "rust_test": "edit_everywhere_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/EditWorldRestrictionTests.cs::EditWorldRestrictionTests.CanEdit_World::test", @@ -18336,12 +18336,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 404, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2b5b2fe32fe48fdb0a71d30744f31e36a29594b3b286d9a60c8081dd0e142371", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 263, + "rust_test": "edit_world_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch::case:ccd63fc5b9c064fb", @@ -18357,12 +18357,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 405, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f597ba78a3ebb7cbd63fa1f59c0aae47206649e457330104a88a732252a8f60c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 35, + "rust_test": "far_touch_fartouch_value", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch::case:ae3d093c6c7267ac", @@ -18378,12 +18378,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 406, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b9c6b174e05e452242c408226bb9d9b5620db160831778c7cb15f22538cecb08", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 41, + "rust_test": "far_touch_touchfar_value", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Synonym::case:ccd63fc5b9c064fb", @@ -18399,12 +18399,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 407, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f597ba78a3ebb7cbd63fa1f59c0aae47206649e457330104a88a732252a8f60c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 47, + "rust_test": "far_touch_fartouch_synonym", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Synonym::case:ae3d093c6c7267ac", @@ -18420,12 +18420,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 408, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b9c6b174e05e452242c408226bb9d9b5620db160831778c7cb15f22538cecb08", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 53, + "rust_test": "far_touch_touchfar_synonym", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Default::case:ccd63fc5b9c064fb", @@ -18441,12 +18441,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 409, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "033cedfbba0f3a37b9f2f9990d9931ec6ca0931afe2a7d9d94fe8b958ebc4fa1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 59, + "rust_test": "far_touch_fartouch_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Default::case:ae3d093c6c7267ac", @@ -18462,12 +18462,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 410, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "835d9e4003ecbac7b6b60c8ae2147a35259e05c64f199ff946a8064ba61e17f1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 65, + "rust_test": "far_touch_touchfar_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:5788809ef8877342", @@ -18483,12 +18483,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 411, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "553c23e6ebd7c2eae22396a2aac48a56d164028705c937330e2cd0942e9cac3f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 94, + "rust_test": "far_touch_multiple_fartouch_fartouch", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:b3ebeae1885ed5db", @@ -18504,12 +18504,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 412, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "df29579cbaa8798bd64631795cf089ad2de833b107fdcddce37ae5dec6d92982", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 100, + "rust_test": "far_touch_multiple_fartouch_touchfar", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:07cf5c5cabecfebf", @@ -18525,12 +18525,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 413, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "83efae2b1f42516db27b7e995496079a41e49f94ba52cb75500ce8ed19bf75de", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 106, + "rust_test": "far_touch_multiple_touchfar_touchfar", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FarTouchRestrictionTests.cs::FarTouchRestrictionTests.CanFarTouch_Multiple_Synonyms::case:8008f95bc76b47e9", @@ -18546,12 +18546,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 414, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "226197f954bf572ded6ff81f11862eee564e88d7798f567cebff0ef4cc5e52b1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 112, + "rust_test": "far_touch_multiple_touchfar_fartouch", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/FlyRestrictionTests.cs::FlyRestrictionTests.CanFly::test", @@ -18567,12 +18567,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 415, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f43332dbde42f64787113f2648aebfd90e086a4a5e2124f8d0aab1a17134bb6c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 76, + "rust_test": "fly_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs::InteractRestrictionTests.CanInteract::test", @@ -18588,12 +18588,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 416, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5d13d3fb7012903449a0583425974320418fc45e2a00444cd4047d79320b1465", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 85, + "rust_test": "interact_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/InteractRestrictionTests.cs::InteractRestrictionTests.CanInteract_default::test", @@ -18609,12 +18609,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 417, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "9fd5009cde2d0ebd43bc80427f8ab2575bfd956ba29dc861693b9d541c69f8c6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 94, + "rust_test": "interact_restriction_blocks_touch_edit_rez_and_sit", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/JumpRestrictionTests.cs::JumpRestrictionTests.CanJump::test", @@ -18630,12 +18630,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 418, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "fc43159927d76606584e0406fc4e6da2d23eec67b7f6b873cee792d6213c2941", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 125, + "rust_test": "jump_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs::PermissiveRestrictionTests.Permissive_On::test", @@ -18651,12 +18651,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 419, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "593e3b5510a355b5f9937938bbfde69e671423d486f7060700c32f089ea85df9", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 269, + "rust_test": "permissive_on_command_disables_permissive_mode", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/PermissiveRestrictionTests.cs::PermissiveRestrictionTests.Permissive_Off::test", @@ -18672,12 +18672,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 420, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "53c6330a9e9c1f6bbf73a8ada0c53a2db63272a4fb92ede11c7354d161d5f40a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 277, + "rust_test": "permissive_off_command_restores_permissive_mode", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvChatExceptionTests.cs::RecvChatExceptionTests.CanRecvChat::test", @@ -18693,12 +18693,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 421, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6e6fb3a3b044c63b24b9c370c162e0d628a1452963f79eb69ea49ebe2835117f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 44, + "rust_test": "receive_chat_blocks_chat_but_not_emote", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvChatFromRestrictionTests.cs::RecvChatFromRestrictionTests.CanRecvChatFrom::test", @@ -18714,12 +18714,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 422, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4ab42205d6ed3362ca1f226f28447b9ed27d919a7205b7cc0c7075f0ca37bf98", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 62, + "rust_test": "receive_chat_from_one_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvChatSecExceptionTests.cs::RecvChatSecExceptionTests.CanRecvChat_Secure::test", @@ -18735,12 +18735,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 423, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8043e2fc8e89994cf4a9f42e23c87306a03664563e6b58535f063abf75b17c90", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 85, + "rust_test": "secure_receive_chat_exceptions_are_sender_scoped", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteFromRestrictionTests.cs::RecvEmoteFromRestrictionTests.CanRecvChat_RecvEmoteFrom::test", @@ -18756,12 +18756,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 424, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6c60f781355fc87196be81509aa10d6c82ef79d748e97c6fb29262263c4a188f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 105, + "rust_test": "receive_emote_from_one_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteRestrictionTests.cs::RecvEmoteRestrictionTests.CanRecvChat_RecvEmote::test", @@ -18777,12 +18777,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 425, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "56c906e053077a6554181c6cdbcb9a76e104ba54ea408adcc02e39f0c56a972c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 133, + "rust_test": "receive_emote_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvEmoteSecRestrictionTests.cs::RecvEmoteSecRestrictionTests.CanRecvChat_RecvEmote_Secure::test", @@ -18798,12 +18798,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 426, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f034a7534e2f7abe0fcb67e731781ca6b7eadfe5d644717f612ec54c13c2d8a1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 151, + "rust_test": "secure_receive_emote_exceptions_are_sender_scoped", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMFrom::test", @@ -18819,12 +18819,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 427, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "23f33ea7db57f413a48f35c0533457eadf7c930932da56f946a7350f242c00a4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 181, + "rust_test": "receive_im_from_one_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMFrom_Group::test", @@ -18840,12 +18840,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 428, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c46adc9ae330ff4a76a427c8b57aed79d04b8f604416ffb619db815708ee2c71", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 190, + "rust_test": "receive_im_from_one_group", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvImFromRestrictionTests.cs::RecvImFromRestrictionTests.CanReceiveIMTo_AllGroups::test", @@ -18861,12 +18861,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 429, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2997a1387506535fd5408e6a67846fa8913ee1d0f71e70cdfbc31a8e47adc01b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 199, + "rust_test": "receive_im_from_all_groups", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvImRestrictionTests.cs::RecvImRestrictionTests.CanReceiveIM::test", @@ -18882,12 +18882,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 430, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e2b23cfe46ca420d1393d79b26b7b2685ea7fcc7aab200b4f830c2cf8c90ccd6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 208, + "rust_test": "receive_im_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure::test", @@ -18903,12 +18903,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 431, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ded3a000941ed86eee51f0ad48e5233f0831638ccaa732894dc873facd9159bd", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 231, + "rust_test": "secure_receive_im_user_exceptions_are_sender_scoped", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure_Group::test", @@ -18924,12 +18924,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 432, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "80c0fb73825660183718c775d9e867aea7acf05acf9f7891b8735cf37bc501fd", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 241, + "rust_test": "secure_receive_im_group_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RecvImSecRestrictionTests.cs::RecvImSecRestrictionTests.CanReceiveIM_Secure_AllGroups::test", @@ -18945,12 +18945,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 433, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4f4ca277ed85ab0dfd1fd057a4a5d4f016eca9c4a61668c009b5e718cffb4aa6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 251, + "rust_test": "secure_receive_im_all_groups_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs::RemAttachRestrictionTests.RemAttach::test", @@ -18967,12 +18967,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 434, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5991f09ac47ca433329c57b48e7574aada98a002e8c361d2a3d9f192246dbd8a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 286, + "rust_test": "remove_attachment_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RemAttachRestrictionTests.cs::RemAttachRestrictionTests.RemAttach_Specific::test", @@ -18989,12 +18989,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 435, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2f377905d416d30fda8728f76adf217f14bbf6993f47b02aefa1dbd0b8c58b22", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 311, + "rust_test": "remove_specific_attachment_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs::RemOutfitRestrictionTests.RemOutfit::test", @@ -19011,12 +19011,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 436, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "dfa1e42a276476de5d0b26c3a01b0a55f5c523ce847f2e26b3ea4d3a8037e289", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 345, + "rust_test": "remove_outfit_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RemOutfitRestrictionTests.cs::RemOutfitRestrictionTests.RemOutfit_part::test", @@ -19033,12 +19033,12 @@ "LibreMetaverse.Tests/RLV/RlvTestBase.cs", "LibreMetaverse.Tests/RLV/SampleInventoryTree.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 437, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d4120503f8c408c566a0b4cca65436df7ddbc83663fcbde48c5a13eb1fe440f7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_attachment_restrictions_semantics.rs", + "rust_line": 370, + "rust_test": "remove_specific_outfit_layer_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/RezRestrictionTests.cs::RezRestrictionTests.CanRez::test", @@ -19054,12 +19054,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 438, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a73ceb60e770a71087dd190c47c1e8297a7cbdb85ccd3c18d52379aae5b02a72", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 134, + "rust_test": "rez_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendChannelRestrictionTests.cs::SendChannelRestrictionTests.CanSendChannel::test", @@ -19075,12 +19075,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 439, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8c37a6fef385aba4b8fff59b5e2e9b0752fe879169a9b6a2c4a18e20e857c890", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 260, + "rust_test": "send_channel_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs::SendChannelSecRestrictionTests.CanSendChannel_Secure::test", @@ -19096,12 +19096,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 440, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "80b06122bd4340e96d64940d881da78dde763798f57f15bd121ce4f03ba375cb", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 273, + "rust_test": "secure_send_channel_restrictions_are_sender_scoped", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendChannelSecRestrictionTests.cs::SendChannelSecRestrictionTests.CanSendChannel_Secure_Exception::test", @@ -19117,12 +19117,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 441, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2d53d6b096994ad4af5c6a7e87b23f051f7f15e7a3d9d768087452b69423ccad", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 293, + "rust_test": "secure_send_channel_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs::SendChatRestrictionTests.CanSendChat::test", @@ -19138,12 +19138,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 442, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "809fb8d5533a95e49d030541b897c35efe4343d564a3f49a8a135ea8ea438c42", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 143, + "rust_test": "send_chat_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendChatRestrictionTests.cs::SendChatRestrictionTests.CanChat_SendChatRestriction::test", @@ -19159,12 +19159,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 443, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3a02b0efa39fc122a40e20ea786d26038d14d9af60b6e0b6d90a79368cd97b9a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 152, + "rust_test": "send_chat_restriction_preserves_slash_messages_and_private_channels", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendGestureRestrictionTests.cs::SendGestureRestrictionTests.CanSendGesture::test", @@ -19180,12 +19180,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 444, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "467b6ed12f25881cecadb770c866bfbc29a765e94f1a610353ca15a407d06836", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 169, + "rust_test": "send_gesture_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendImRestrictionTests.cs::SendImRestrictionTests.CanSendIM::test", @@ -19201,12 +19201,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 445, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "21b6fe3df71639a9ad8d0b7d56204f6cbd02b1b5480d54d4b5d37d77dd7a2a20", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 312, + "rust_test": "send_im_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure::test", @@ -19222,12 +19222,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 446, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d48dc2e469b6e47b68b637724ac19a29d0ddd685a4fd382c188671607b641c6f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 335, + "rust_test": "secure_send_im_user_exceptions_are_sender_scoped", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure_Group::test", @@ -19243,12 +19243,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 447, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c9044c9ee8c6456c33f2f50ab0762466e9f2b18e2563e100a2aef6d686da3253", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 345, + "rust_test": "secure_send_im_group_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendImSecRestrictionTests.cs::SendImSecRestrictionTests.CanSendIM_Secure_AllGroups::test", @@ -19264,12 +19264,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 448, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "13393450ce540e3285fafcd292a68f1a47e51509243337658fdb143e136fa4c5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 355, + "rust_test": "secure_send_im_all_groups_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo::test", @@ -19285,12 +19285,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 449, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7abc07d2fd401619051ecf61cd41720ceaf796873bdf7d2c92c52011e6553ab6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 364, + "rust_test": "send_im_to_one_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo_Group::test", @@ -19306,12 +19306,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 450, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7c12342884f016351ac3db6e7e247972934ff8cb7bdeba6210b6586d35b02708", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 373, + "rust_test": "send_im_to_one_group", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SendImToRestrictionTests.cs::SendImToRestrictionTests.CanSendIMTo_AllGroups::test", @@ -19327,12 +19327,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 451, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8d22f921a06acc7e173dfcb619217580ecdb79397d5a3ccf96ba59cec2cdfc7a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 382, + "rust_test": "send_im_to_all_groups", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SetDebugRestrictionTests.cs::SetDebugRestrictionTests.CanSetDebug::test", @@ -19348,12 +19348,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 452, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a05efb47cc7652ed9eef08abbd6779306fba2550d9208138a2be9edfade88e73", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 178, + "rust_test": "set_debug_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SetEnvRestrictionTests.cs::SetEnvRestrictionTests.CanSetEnv::test", @@ -19369,12 +19369,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 453, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "79d772475503c655ece1758cbbba6a127b34162b8847e3f92b50951cfef47dca", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 187, + "rust_test": "set_env_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SetGroupRestrictionTests.cs::SetGroupRestrictionTests.CanSetGroup::test", @@ -19390,12 +19390,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 454, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "10edcac61637c334fe0710b6be2433f355481e8c6434a22b3e7c934dbe441d53", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 196, + "rust_test": "set_group_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShareRestrictionTests.cs::ShareRestrictionTests.CanShare::test", @@ -19411,12 +19411,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 455, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3cab59847c6131764a8b2e319bc931d811607c28b97b1cfbdbba185c4dc2b9ae", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 391, + "rust_test": "share_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs::ShareSecRestrictionTests.CanShare_Secure_Default::test", @@ -19432,12 +19432,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 456, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0cf976c09bd3d1aa0730d553234df8d2f1e029c37b882a9d3965ac42dd45756b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 405, + "rust_test": "secure_share_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShareSecRestrictionTests.cs::ShareSecRestrictionTests.CanShare_Secure::test", @@ -19453,12 +19453,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 457, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6e4d4e9fd52bd0229923d316d5f147fac7617ad58c995dee05e416a1554ffc0d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 425, + "rust_test": "secure_share_exceptions_are_sender_scoped", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextAllRestrictionTests.cs::ShowHoverTextAllRestrictionTests.CanShowHoverTextAll::test", @@ -19474,12 +19474,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 458, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1f98ef99a8829025e8aaa31c9e7c746b5a08f09242f795b799c22e34c779d4a7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 453, + "rust_test": "show_hover_text_all_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextHudRestrictionTests.cs::ShowHoverTextHudRestrictionTests.CanShowHoverTextHud::test", @@ -19495,12 +19495,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 459, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f127e3648da18a57c6290935a3b5e567d7abca840e14953666b77b4e9c482e8a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 462, + "rust_test": "show_hover_text_hud_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextRestrictionTests.cs::ShowHoverTextRestrictionTests.CanShowHoverText::test", @@ -19516,12 +19516,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 460, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "701ee0c7509b627eee60fc6fc608597d4279a0a235cf2ff9b918b67154c03c99", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 473, + "rust_test": "show_hover_text_one_object_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowHoverTextWorldRestrictionTests.cs::ShowHoverTextWorldRestrictionTests.CanShowHoverTextWorld::test", @@ -19537,12 +19537,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 461, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b2417565b7874859cbf516f8cd2bec78a38c8e1fa944b0d9485c387827052e0d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 484, + "rust_test": "show_hover_text_world_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowInvRestrictionTests.cs::ShowInvRestrictionTests.CanShowInv::test", @@ -19558,12 +19558,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 462, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a62b876a0b170072dcb470913cd324eb2bfd8b757ef692ca9def5e5e9d9c8569", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 205, + "rust_test": "show_inventory_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowLocRestrictionTests.cs::ShowLocRestrictionTests.CanShowLoc::test", @@ -19579,12 +19579,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 463, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d0233c3c3ce6d76371d1a0dbeaf96148c84c5de13bf5ec29a2d7fd351e954b36", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 214, + "rust_test": "show_location_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowMiniMapRestrictionTests.cs::ShowMiniMapRestrictionTests.CanShowMiniMap::test", @@ -19600,12 +19600,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 464, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d9951cc7640225d31211e382e3506811ba1e1a8919550ad04581da84aaf84f50", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 223, + "rust_test": "show_mini_map_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowNameTagsRestrictionTests.cs::ShowNameTagsRestrictionTests.CanShowNameTags::test", @@ -19621,12 +19621,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 465, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "fdf8345bd7a825fc586bf931febc2b79fb154293cbaad9c8ac2a2cf323b3a0a3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 495, + "rust_test": "show_name_tags_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowNamesRestrictionTests.cs::ShowNamesRestrictionTests.CanShowNames::test", @@ -19642,12 +19642,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 466, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6ad4bf3e90c572fab7ed733cd2c7c721c6dfe03353aaa9b0ea2bf4e24b6c8e56", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 509, + "rust_test": "show_names_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure_Default::test", @@ -19663,12 +19663,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 467, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1d52579d305fcef846f8d9b9c2de111082cb578d36fc29bef3339296ca1a1301", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 523, + "rust_test": "secure_show_names_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure::test", @@ -19684,12 +19684,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 468, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "48808faecd77c354ecb431aab07023c0ac2843d4c11800b5f50cd03d31ac5c40", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 543, + "rust_test": "secure_show_names_exceptions_are_sender_scoped", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowNamesSecRestrictionTests.cs::ShowNamesSecRestrictionTests.CanShowNames_Secure_Except::test", @@ -19705,12 +19705,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 469, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b7ff343bad8ee6ed57d24071f66dd01ad98155aad683ae15c2bf63c6faa5566f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 567, + "rust_test": "secure_show_names_direct_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowNearbyRestrictionTests.cs::ShowNearbyRestrictionTests.CanShowNearby::test", @@ -19726,12 +19726,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 470, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0bec03d2d681555818cb53518e5fef61108073c8a5de02e94af663a882a03f16", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 232, + "rust_test": "show_nearby_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ShowWorldMapRestrictionTests.cs::ShowWorldMapRestrictionTests.CanShowWorldMap::test", @@ -19747,12 +19747,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 471, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4d04f00e06b61d5adab2a98f4a6bece1c3669b619c1860780b5c955f4c14dbf7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 241, + "rust_test": "show_world_map_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SitRestrictionTests.cs::SitRestrictionTests.CanSit::test", @@ -19768,12 +19768,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 472, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8b2785a1a389c0eddfe49b2be4a44d2632f7a2655bd5ed3f06f8704c2f0e3739", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 250, + "rust_test": "sit_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Default::test", @@ -19789,12 +19789,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 473, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "890720ab4f6c6f5475f68f306940ce051b5589e3d70969361693b19afec6b6f8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 124, + "rust_test": "sit_tp_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Single::test", @@ -19810,12 +19810,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 474, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b142f96e066686f67c74989684c8a8a0d7c4d8929572eb54601cfb282bd92ff7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 130, + "rust_test": "sit_tp_single", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_SingleSender::test", @@ -19831,12 +19831,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 475, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "22efcbeddb64ff22814966a9d71b03dee4191c3a84d111dbc53cbcd7dc8e35a9", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 138, + "rust_test": "sit_tp_multiple_single_sender", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_SingleSender_WithRemoval::test", @@ -19852,12 +19852,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 476, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b1c054384496cbb12e9866fdd62908266c923ae0cdf37604cb9811476d670fa1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 146, + "rust_test": "sit_tp_multiple_single_sender_with_removal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Multiple_MultipleSenders::test", @@ -19873,12 +19873,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 477, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "58bfdb86865fcf0c9d479c437832f7e6432dc847fee6217ba577112930075fe2", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 163, + "rust_test": "sit_tp_multiple_senders", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/SitTpRestrictionTests.cs::SitTpRestrictionTests.CanSitTp_Off::test", @@ -19894,12 +19894,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 478, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3ae16633a1045b6f370fcec999307da7934ee2d636a4b76a06454d445f3c9c71", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 173, + "rust_test": "sit_tp_off", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/StandTpRestrictionTests.cs::StandTpRestrictionTests.CanStandTp::test", @@ -19915,12 +19915,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 479, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e5d3bcdf429e1539646690ede93ddab75e409f0f46a192efae5d6625440447f3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 259, + "rust_test": "stand_tp_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/StartImRestrictionTests.cs::StartImRestrictionTests.CanStartIM::test", @@ -19936,12 +19936,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 480, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e46a72fb1aa28ffb9df3c04f966433cda1cb88fce286dff378d40e5227858b05", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 590, + "rust_test": "start_im_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/StartImToRestrictionTests.cs::StartImToRestrictionTests.CanStartIMTo::test", @@ -19957,12 +19957,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 481, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "9d96ac2805b65da762b513b2ca73f2206729defeac766eff9bf9195b75f7fa51", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_social_restrictions_semantics.rs", + "rust_line": 598, + "rust_test": "start_im_to_one_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TempRunRestrictionTests.cs::TempRunRestrictionTests.CanTempRun::test", @@ -19978,12 +19978,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 482, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f9b5c03d905f794b294759614904266a5dd33218b6501e2a94388839704d3799", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 268, + "rust_test": "temp_run_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs::TouchAllRestrictionTests.TouchAll::test", @@ -19999,12 +19999,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 483, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8f78c71e775a1b092ebce8620430cc057b7f692f7bb4623f43168022b50bb61f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 214, + "rust_test": "touch_all_default_permissions", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TouchAllRestrictionTests.cs::TouchAllRestrictionTests.TouchAll_default::test", @@ -20020,12 +20020,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 484, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "844b0ebd7fd4c6fdc3856b5f8dac90dfee0f4f3139f5ad9cd7589edbbf20a610", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 220, + "rust_test": "touch_all_restricted", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs::TouchAttachOtherRestrictionTests.TouchAttachOther_default::test", @@ -20041,12 +20041,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 485, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4469cc34b25feacaba9f86c53018abed8f199f40c71c28ccce5bbbf671729a65", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 228, + "rust_test": "touch_attach_other_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TouchAttachOtherRestrictionTests.cs::TouchAttachOtherRestrictionTests.TouchAttachOther_Specific::test", @@ -20062,12 +20062,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 486, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "845b6170d7b29f0544706cfc4384f1c3769374ef647d629236fc747c2918985c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 236, + "rust_test": "touch_attach_other_specific_user", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TouchAttachRestrictionTests.cs::TouchAttachRestrictionTests.TouchAttach_default::test", @@ -20083,12 +20083,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 487, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d3bde04c56862d979ed58c9ad3cf0e1808596eb18fbafd7b6bf09eda7d9cc456", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 266, + "rust_test": "touch_attach_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TouchAttachSelfRestrictionTests.cs::TouchAttachSelfRestrictionTests.TouchAttachSelf_default::test", @@ -20104,12 +20104,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 488, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d754e5c49bc6532cbc956f8d6d19e0c12d95b418edbea0d44d087c438f429f6b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 274, + "rust_test": "touch_attach_self_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs::TouchHudRestrictionTests.TouchHud_default::test", @@ -20125,12 +20125,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 489, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ee3b64de4975731324fbe98ae497164f7fc4869529d0c6149ee98e78ff39dbd1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 282, + "rust_test": "touch_hud_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TouchHudRestrictionTests.cs::TouchHudRestrictionTests.TouchHud_specific::test", @@ -20146,12 +20146,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 490, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ce68e431dc6d4ff04873ccd0c4e9a5d92726c53345879b0498f752429f85e892", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 290, + "rust_test": "touch_hud_specific_object", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TouchWorldRestrictionTests.cs::TouchWorldRestrictionTests.TouchWorld_default::test", @@ -20167,12 +20167,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 491, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1ea30b7e269fcd8aa2ad308a9c213eee157f0f3d4ddbfb7d94bc93f6f71b7d8d", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 299, + "rust_test": "touch_world_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpLmRestrictionTests.cs::TpLmRestrictionTests.CanTpLm::test", @@ -20188,12 +20188,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 492, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "dd951a677319f5fd944ffb70559924d883c8351c366fce53c5bfc82db23ed94a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 277, + "rust_test": "tp_landmark_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpLocRestrictionTests.cs::TpLocRestrictionTests.CanTpLoc::test", @@ -20209,12 +20209,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 493, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "578bd77f9e29228f02cf891f0d4502ad281ebd90fc080c07ac319fe70e7a22ac", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 286, + "rust_test": "tp_location_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs::TpLocalRestrictionTests.CanTpLocal_Default::test", @@ -20230,12 +20230,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 494, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "85d84be4b1107fb71488936face54fcf9e9f28e2b6542141bbe4cb8824e7f70f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 315, + "rust_test": "tp_local_default_distance", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpLocalRestrictionTests.cs::TpLocalRestrictionTests.CanTpLocal::test", @@ -20251,12 +20251,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 495, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8d2dbb66cbd82f6789f4e1af86d53e9b94ed9cce7f89a5777b3413eed123a75a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 321, + "rust_test": "tp_local_explicit_distance", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs::TpLureRestrictionTests.CanTpLure_Default::test", @@ -20272,12 +20272,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 496, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5aae1e21419864a578554da2951e23ba3f2a177b5581c03f0c543fccf25d61df", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 327, + "rust_test": "tp_lure_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpLureRestrictionTests.cs::TpLureRestrictionTests.CanTpLure::test", @@ -20293,12 +20293,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 497, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "03a154a76582ea4b8d009e8fafc1d61a4b1ab5f5685bc5873e421f55db0605d7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 335, + "rust_test": "tp_lure_restricted", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs::TpLureSecRestrictionTests.CanTpLure_Secure_Default::test", @@ -20314,12 +20314,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 498, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "75e2581cee97c3b112afc34fca1a988ef92cb0753dd39292b16d5ac08160c487", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 345, + "rust_test": "secure_tp_lure_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpLureSecRestrictionTests.cs::TpLureSecRestrictionTests.CanTpLure_Secure::test", @@ -20335,12 +20335,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 499, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "72274dcf21e95ab25d7f7278f95030485a5e59ce0f6125f75ee9ad02bc9b2bb1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 356, + "rust_test": "secure_tp_lure_exceptions_are_sender_scoped", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs::TpRequestRestrictionTests.CanTpRequest::test", @@ -20356,12 +20356,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 500, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "08fdc7aa8007cc8422d2d290ef4820eac68cc164cd9d1e4a0b4e1bb8bb00e709", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 368, + "rust_test": "tp_request_restricted", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpRequestRestrictionTests.cs::TpRequestRestrictionTests.CanTpRequest_Except::test", @@ -20377,12 +20377,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 501, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2f19b41ca94333e386b504e1a01799f61b56501ae15cf50c451b13ca385c07cf", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 382, + "rust_test": "tp_request_exception", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs::TpRequestSecRestrictionTests.CanTpRequest_Secure_Default::test", @@ -20398,12 +20398,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 502, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a1a1d09781d4dc39b737256176c3dc4f17288c4a92d1ae3fc107aef28416f118", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 401, + "rust_test": "secure_tp_request_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/TpRequestSecRestrictionTests.cs::TpRequestSecRestrictionTests.CanTpRequest_Secure::test", @@ -20419,12 +20419,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 503, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "436e0218712e28d93b3a6682f116775935fcbb36a342d30d0013b7bd14b345e1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_touch_teleport_restrictions_semantics.rs", + "rust_line": 420, + "rust_test": "secure_tp_request_exceptions_are_sender_scoped", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/UnsitRestrictionTests.cs::UnsitRestrictionTests.CanUnsit::test", @@ -20440,12 +20440,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 504, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "25be9ba8ea25941dc65b59b7f1d5e380a1fe5a5624bc4eafb0230f8481737721", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 295, + "rust_test": "unsit_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ViewNoteRestrictionTests.cs::ViewNoteRestrictionTests.CanViewNote::test", @@ -20461,12 +20461,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 505, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8fe03fb99d7d76a6af7c3ec08924fabc4111ffbec711533a76899993cca508a3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 304, + "rust_test": "view_note_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ViewScriptRestrictionTests.cs::ViewScriptRestrictionTests.CanViewScript::test", @@ -20482,12 +20482,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 506, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "82ac500b9b022c0bdcc1bd43e04778dc4315752c8e261d3cfdfd0acf7b28ca52", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 313, + "rust_test": "view_script_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/Restrictions/ViewTextureRestrictionTests.cs::ViewTextureRestrictionTests.CanViewTexture::test", @@ -20503,12 +20503,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 507, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "09054bc5e0e5b273863ad130d9d6e97460bee6aa6294eadb019c450936b0c2b8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_simple_restrictions_semantics.rs", + "rust_line": 322, + "rust_test": "view_texture_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Single::test", @@ -20524,12 +20524,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 508, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6894f0672e0df44c74cb8779fbc19d8933bd57d904307178e525ad25eb9ef3d1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 64, + "rust_test": "cam_zoom_min_single", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender::test", @@ -20545,12 +20545,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 509, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3dbccb1ef68deb9fe14cc9d9be957e5e831eca0cd2aad2e04adf9b64a1247162", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 74, + "rust_test": "cam_zoom_min_multiple_single_sender", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_SingleSender_WithRemoval::test", @@ -20566,12 +20566,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 510, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ad0c5aa0f852c4a2c56c61b1e23c62caadf5f0e8f407d2eb9c171cd18501e888", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 88, + "rust_test": "cam_zoom_min_removes_matching_value", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Multiple_MultipleSenders::test", @@ -20587,12 +20587,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 511, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f3d110ca5a0f67b8c62eaf44511fec68fbad5c28a62e84bbe6504f2292e02d88", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 104, + "rust_test": "cam_zoom_min_multiple_senders", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin_Off::test", @@ -20608,12 +20608,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 512, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0e555fe87bc88ea0034eaa2cbaaa8625a2452442274c8b582beb5d6dd3bbb024", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 118, + "rust_test": "cam_zoom_min_off", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Default::test", @@ -20629,12 +20629,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 513, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "92e32abba37a349827c4e06702fe46a011e36181ccdaaa9e6e6dcaeb7a83046b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 128, + "rust_test": "cam_zoom_max_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Single::test", @@ -20650,12 +20650,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 514, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "390572b0a7bf50d62d872e6a37e02beda42111b17e58a6382772fab8892a853c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 134, + "rust_test": "cam_zoom_max_single", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender::test", @@ -20671,12 +20671,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 515, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a0d84fa19e543f28eae101b25b44ddf9017b1ae436568c9e52233fe90c12c2af", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 144, + "rust_test": "cam_zoom_max_multiple_single_sender", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_SingleSender_WithRemoval::test", @@ -20692,12 +20692,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 516, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a775f12b15019304ee20464ef7a3cbc0948b948aa18fe8ca88d5b5d800266cc0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 158, + "rust_test": "cam_zoom_max_removes_matching_value", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Multiple_MultipleSenders::test", @@ -20713,12 +20713,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 517, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "46df4ab12e96b36b290e14c5d56ce6e64879e9b9f4b6e1f31a8664cecd8836e7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 174, + "rust_test": "cam_zoom_max_multiple_senders", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax_Off::test", @@ -20734,12 +20734,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 518, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8b91f7ea9135758c9d3face4e907436691ef56177b084d9e1ea2e2d70992d4f5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 188, + "rust_test": "cam_zoom_max_off", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMin::test", @@ -20755,12 +20755,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 519, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "af3995a3d926d673047d42b29651f4d08e1667a2911cec24cb3e46d2dbf8c872", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 198, + "rust_test": "cam_zoom_min_command", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamZoomMax::test", @@ -20776,12 +20776,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 520, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "390572b0a7bf50d62d872e6a37e02beda42111b17e58a6382772fab8892a853c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 208, + "rust_test": "cam_zoom_max_command", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFovMin::test", @@ -20797,12 +20797,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 521, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "da6b0e5b5af1bab62a4ffcead63f3eab43eebfaf6ad3aabd0fa44caed29f4894", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 218, + "rust_test": "set_cam_fov_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFovMax::test", @@ -20818,12 +20818,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 522, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e70d8c32bdd96660e6309f530c8036db7b29648bc548e2d5bec2bef59cf2ca45", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 228, + "rust_test": "set_cam_fov_max", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov::test", @@ -20839,12 +20839,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 523, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "105c0de2b24dd73faa4d9c1c06773346fcedcb0749949ab97762c39808c0b5cf", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 238, + "rust_test": "set_cam_fov_records_exact_value", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov_Restricted::test", @@ -20860,12 +20860,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 524, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3073af8783883fb22b2061557e7639278f96551ed1cf242d38b778237fe4a135", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 246, + "rust_test": "set_cam_fov_restricted", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamFov_Restricted_Synonym::test", @@ -20881,12 +20881,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 525, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f2cfa47a63bc5dbc47f4ffcdca4db7a2dc639219c16a0dac0dc51bbe0e854cad", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 255, + "rust_test": "set_cam_fov_restricted_by_synonym", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMax::test", @@ -20902,12 +20902,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 526, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f4dea2adaf40b6dd9ee4d2ebb30da14e72d4ff135f587c49b7d92e3387520d35", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 264, + "rust_test": "set_cam_av_dist_max", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMax_Synonym::test", @@ -20923,12 +20923,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 527, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b301ef0ff8789766be96b098b916cbbeece83e732fa1808a557e6fc1c4d8e88e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 274, + "rust_test": "set_cam_av_dist_max_synonym", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMin::test", @@ -20944,12 +20944,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 528, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d3110e1fdcf1dc46a33e653c7f5e00289a8ba1bd363971dd674b83da26baaa16", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 284, + "rust_test": "set_cam_av_dist_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamAvDistMin_Synonym::test", @@ -20965,12 +20965,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 529, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c7c200e4c4dd9fcf786498535490836516e3fc9c577af3ca219723797a94fc3c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 294, + "rust_test": "set_cam_av_dist_min_synonym", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawAlphaMax::test", @@ -20986,12 +20986,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 530, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "bc13a6507df7962e56e60734c3d072d1395e4c70b4522491f941287e0241e762", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 304, + "rust_test": "cam_draw_alpha_max", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMin::test", @@ -21007,12 +21007,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 531, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2e7059aaf91d3f11cf9f1c0b90dde312e94d47f68b85c5b72fd42b83c7f20644", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 314, + "rust_test": "cam_draw_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMin_Small::test", @@ -21028,12 +21028,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 532, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "481e6df4fe758d39d97f655e867f974d40873518cac041dbdae741f9aaa23480", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 324, + "rust_test": "cam_draw_min_rejects_too_small_value", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMax::test", @@ -21049,12 +21049,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 533, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6de388c24288c89d8e0807d480a033578171905f1bc3999a43bb60b1dfdd8843", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 340, + "rust_test": "cam_draw_max", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawMax_Small::test", @@ -21070,12 +21070,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 534, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "890b30ddbb2c4808181b59594e45f4378bce7bcd0be5ddd60146bd2eaeb1f039", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 350, + "rust_test": "cam_draw_max_rejects_too_small_value", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawAlphaMin::test", @@ -21091,12 +21091,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 535, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5615c3aa7ec731755db51238bbc88b232e593fa0c9ec8558c2fb70d2ca796587", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 366, + "rust_test": "cam_draw_alpha_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor::test", @@ -21112,12 +21112,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 536, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b877250b783e434d0f080bc98a7876b1c0d3c174f89e1b6ba5389bc4829c56af", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 376, + "rust_test": "cam_draw_color", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Default::test", @@ -21133,12 +21133,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 537, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b445c3c6529e81a322253e2336eb2dabfacba2f3d01e3bece309d92685987ed1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 388, + "rust_test": "cam_draw_color_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Large::test", @@ -21154,12 +21154,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 538, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "910bf2af09c27d18b2146726509dd670e136bbbdb1baccdb970be5e4fb4017bf", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 394, + "rust_test": "cam_draw_color_clamps_large_components", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Negative::test", @@ -21175,12 +21175,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 539, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "88718bb4e65b62208b19d10c70c8842d36f9e1e9b3d6ef18456cbc7ebc317a2c", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 405, + "rust_test": "cam_draw_color_clamps_negative_components", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Removal::test", @@ -21196,12 +21196,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 540, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "72f67a0676c66c707b5de1604e491df9d442a012c7290a4020b303c379f73649", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 416, + "rust_test": "cam_draw_color_removal", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamDrawColor_Multi::test", @@ -21217,12 +21217,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 541, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "db174c3afbb6672de436e77da39813000c673097aec4e737657d3a7057ba2f9a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 430, + "rust_test": "cam_draw_color_averages_multiple_values", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CanSetCamUnlock::test", @@ -21238,12 +21238,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 542, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ba2c762efa6d178d12aa0c555e8db2489c3c237e74c85e32656151b5135b3a32", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 445, + "rust_test": "set_cam_unlock_toggles_lock", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CanCamUnlock::test", @@ -21259,12 +21259,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 543, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "680464eb9637a29ba76f5cfe749ddb9f82614291855f814a186abc67b2997e0f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 467, + "rust_test": "cam_unlock_synonym_toggles_lock", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CamAvDist::test", @@ -21280,12 +21280,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 544, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "42c911790f3bce0f7a70a6eb4c9516e3c449704983beb91f8f4a068ebe85723b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 489, + "rust_test": "cam_av_dist", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures::case:0fdad12f3bfb0585", @@ -21301,12 +21301,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 545, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ef5e8a7711f488ded2e381cb9f9bbd89d044ae6db3e212a62fb5d4ec20da4134", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 499, + "rust_test": "set_cam_textures_empty_uuid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures::case:19c11fd923cc347d", @@ -21322,12 +21322,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 546, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ec2226822572f00505464224eb938ef4cb8bd1f60ca140a7569aace4b66ab748", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 505, + "rust_test": "cam_textures_empty_uuid", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Single::case:0fdad12f3bfb0585", @@ -21343,12 +21343,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 547, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "18394944343f5a83251f53e7f1b5ed3604d65bcde832130855d416649bf64c6e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 511, + "rust_test": "set_cam_textures_single", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Single::case:19c11fd923cc347d", @@ -21364,12 +21364,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 548, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8aaa9bb73b8973180dd0345cb90900addebcdb461600a5fe047d283c73ab3349", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 520, + "rust_test": "cam_textures_single", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:1c2423e3f02a5f03", @@ -21385,12 +21385,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 549, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "ec9630c9d860932b8bb8e14ca07d7d23a019e79428dabdffe5d671f2771077b0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 552, + "rust_test": "set_cam_textures_then_set_cam_textures", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:57689650dc307766", @@ -21406,12 +21406,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 550, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a76523ecba3e1e08927b7e1b91cfe212e9d1bec25e5553c3a588c4630a0644df", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 561, + "rust_test": "set_cam_textures_then_cam_textures", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:081becc69dc8e183", @@ -21427,12 +21427,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 551, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "246c76b7467a85bcd8804921258afcd3d581b7f1a6811cdc18ef4340c1ff2b7e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 570, + "rust_test": "cam_textures_then_cam_textures", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.SetCamTextures_Multiple_Synonyms::case:d96d157e365ded15", @@ -21448,12 +21448,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 552, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4215caa634b43cd0d5192fc4f2c49b9e9951a5d79ca44790f892ee7ce123181b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 579, + "rust_test": "cam_textures_then_set_cam_textures", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamAvDistMin::test", @@ -21469,12 +21469,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 553, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "5bd253a485272b1ffe2968eb3f04d163b282b393fc2113cf11b4ba0e96ee37c4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 588, + "rust_test": "get_cam_av_dist_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamAvDistMax::test", @@ -21490,12 +21490,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 554, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "08a2b64c41de5c741fbd3be62337d98a8e2b472dfc29a686563f413a1f7828d5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 597, + "rust_test": "get_cam_av_dist_max", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFovMin::test", @@ -21511,12 +21511,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 555, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "d7f4255d9f5e9d6cc7792389c0eb486a821a416e7d398bb535bd1c8e48c4debc", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 606, + "rust_test": "get_cam_fov_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFovMax::test", @@ -21532,12 +21532,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 556, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "16b3df3b9df8d0e140c4f47663eb043d337caa43c9389b21bc72b154724ddfa5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 615, + "rust_test": "get_cam_fov_max", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamZoomMin::test", @@ -21553,12 +21553,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 557, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "42eba867986c0f0983e30d2d8e770f893d45c717da55a309c595b74e75574f7b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 624, + "rust_test": "get_cam_zoom_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.GetCamFov::test", @@ -21574,12 +21574,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 558, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b85ff138c5375a1edf3aa3476904b08b90b56a3008426c5b36be517af1a5ac33", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 633, + "rust_test": "get_cam_fov", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:6e89e27b90f28739", @@ -21595,12 +21595,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 559, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "30d860178a9d4b15041eb83294b7ec0180f097277548eeac0ba3d9f937380976", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 642, + "rust_test": "camera_settings_default_get_zoom_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:82ff323c4cfaad18", @@ -21616,12 +21616,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 560, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b10815031c79e90a5ef87b4ab0143415ec7b1e124aa83bd1c848cbb996e6b67b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 651, + "rust_test": "camera_settings_default_get_fov", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:c64b136643c55ed8", @@ -21637,12 +21637,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 561, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e929511b407d2857a2e8e929f3f3753e8503e14664f7329c6f9e68803bf6fcb2", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 657, + "rust_test": "camera_settings_default_get_fov_max", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:32ad2cfbbfcf0638", @@ -21658,12 +21658,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 562, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a723cddd209435820203d4e19ad4dc4565daf0ea947f93368fed15745451a8f0", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 666, + "rust_test": "camera_settings_default_get_av_dist_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:21855f1f68a52025", @@ -21679,12 +21679,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 563, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "c24bf7a59f67f7a4a9ae188c776402425043a3d9d5bc4350b42400d7cd1ea0e1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 675, + "rust_test": "camera_settings_default_get_av_dist_max", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RestrictionsCameraTests.cs::RestrictionsCameraTests.CameraSettings_Default::case:065ec3bc69e3f2b0", @@ -21700,12 +21700,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 564, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6cdcd94c45876d339996f15b4d08bc62f6220b21ec98b26ba30eaa5d3757f25f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_camera_semantics.rs", + "rust_line": 684, + "rust_test": "camera_settings_default_get_fov_min", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_EmptyByDefault::test", @@ -21721,12 +21721,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 565, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "7a9a440c1d1d58f65fbbfaff45cd3dc2052babbd5bda0aade8d47f7df2bac857", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 46, + "rust_test": "blacklist_is_empty_by_default", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_ValidBehavior_AddsToBlacklist::test", @@ -21742,12 +21742,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 566, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "fcb3a76f9c94c279006067bd3bcf1c1ea3fbcca38bccd5bd8239faa0a8971dbc", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 59, + "rust_test": "blacklist_adds_valid_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_CaseInsensitive_NormalizesToLowercase::test", @@ -21763,12 +21763,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 567, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "473d930ac6ec26afaa63d2b10182f9d6bb0e922afbbe4ffb8ca247bfbc4759d5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 72, + "rust_test": "blacklist_normalizes_to_lowercase", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_DuplicateBehavior_OnlyAddsOnce::test", @@ -21784,12 +21784,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 568, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "9b8d0b0e67cf72288cdd7e3c8786377ea78a1fdaad0bc616b17f452c013c0388", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 84, + "rust_test": "blacklist_deduplicates_case_insensitively", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:12ae32cb1ec02d01", @@ -21805,12 +21805,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 569, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4a4c316f1911ac589e4a7ff41875ab91a16d7280e8d3d89fa993c9c374a1d9f4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 100, + "rust_test": "blacklist_rejects_empty_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:52109349dabf6910", @@ -21826,12 +21826,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 570, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "833cb407c8e691e45ee23662c0e3746e3ab11619dd53156610edebe5e3ca3530", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 106, + "rust_test": "blacklist_rejects_spaces_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:729e2865c247816a", @@ -21847,12 +21847,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 571, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1fef8f6d83a2004ba4db5baca617567e50fc9fd9ad466907971771c32ede0f03", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 112, + "rust_test": "blacklist_rejects_tab_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:d7a5e915306d21dc", @@ -21868,12 +21868,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 572, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b5960b186185fd146900ac310d83f03214f3c6545f080d5f05c08ac9216ad5b2", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 118, + "rust_test": "blacklist_rejects_newline_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_ExistingBehavior_RemovesFromBlacklist::test", @@ -21889,12 +21889,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 573, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6f7bc928cca6e69fbc2d17fb1bc4a70942ff187a70faa2795f83e1703e3afddd", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 124, + "rust_test": "unblacklist_removes_existing_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_CaseInsensitive_RemovesCorrectBehavior::test", @@ -21910,12 +21910,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 574, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "1be275573d0ec64b14f3d712f4b6909cc8813c040c0b16989fd892f5799fe247", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 136, + "rust_test": "unblacklist_is_case_insensitive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NonExistentBehavior_DoesNothing::test", @@ -21931,12 +21931,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 575, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "17270c8b26c0711a1976deb909d96627f81de0e94969270e3284322658c692de", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 148, + "rust_test": "unblacklist_nonexistent_behavior_does_nothing", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:12ae32cb1ec02d01", @@ -21952,12 +21952,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 576, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2ca751c71a09cb492857c6ac343d042603e581944701a00acd5c7fdb0be0ee2e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 163, + "rust_test": "unblacklist_rejects_empty_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:52109349dabf6910", @@ -21973,12 +21973,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 577, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b6b6372dba00436b5f420c10a0c9d85e835662a20c016a8005c4d70e2cbd5d3e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 169, + "rust_test": "unblacklist_rejects_spaces_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:729e2865c247816a", @@ -21994,12 +21994,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 578, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a470776aae0b04e00ad3dd722afbf1caaf0357597489939f8eb495e74ac2a635", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 175, + "rust_test": "unblacklist_rejects_tab_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.UnBlacklistBehavior_NullOrWhitespaceBehavior_ThrowsArgumentException::case:d7a5e915306d21dc", @@ -22015,12 +22015,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 579, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "46e23ecc4576ca579b53f0789994aace2af9d79c3569ff19d39e60e25e0cbc52", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 181, + "rust_test": "unblacklist_rejects_newline_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_BlacklistedBehavior_ReturnsTrue::test", @@ -22036,12 +22036,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 580, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0894d8077c0feed11e844012a44139669a4b8b0cbaefa5f569c9b8cc87fbe7ac", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 187, + "rust_test": "is_blacklisted_returns_true_for_added_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_CaseInsensitive_ReturnsTrue::test", @@ -22057,12 +22057,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 581, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "87088b0f2d9c138a64cc0bcf3bdacd00ae9be31ea0da7a87a1ca0426f45b4193", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 200, + "rust_test": "is_blacklisted_is_case_insensitive", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NonBlacklistedBehavior_ReturnsFalse::test", @@ -22078,12 +22078,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 582, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "faa279b97ccd0643cda39752bb6369561d69362e291d45996da8d87f2a558d17", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 210, + "rust_test": "is_blacklisted_returns_false_for_missing_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:12ae32cb1ec02d01", @@ -22099,12 +22099,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 583, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6abee532d12c3b4f2562a29adfa2b7503f95463e4b0328e73501f65e5d065ca8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 223, + "rust_test": "is_blacklisted_returns_false_for_empty_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:52109349dabf6910", @@ -22120,12 +22120,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 584, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "720c0d5a269beaa3e0a248bb62c97436857d17207acd2042b7392f832814e915", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 229, + "rust_test": "is_blacklisted_returns_false_for_spaces_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:729e2865c247816a", @@ -22141,12 +22141,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 585, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "f242cf0fd986e1a94abdfb690fd93f6759ae9344481e85bcda31bd3e326a059f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 235, + "rust_test": "is_blacklisted_returns_false_for_tab_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.IsBlacklisted_NullOrWhitespaceBehavior_ReturnsFalse::case:d7a5e915306d21dc", @@ -22162,12 +22162,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 586, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "17d510e3ecd9d7dd982cf644a30a4ef7ca0e23db3df7e3a30f0427bc579b44e7", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 241, + "rust_test": "is_blacklisted_returns_false_for_newline_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_MultipleItems_ReturnsOrderedCollection::test", @@ -22183,12 +22183,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 587, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "fa3667e0e06f561721ff38edd2b3c6bfe9da7908601334ffbc301ded19a98634", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 247, + "rust_test": "get_blacklist_returns_ordered_collection", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.GetBlacklist_ReturnsImmutableCopy::test", @@ -22204,12 +22204,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 588, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8c3e1b895f7c4174d832d7c8c60a4d131f386df9924425ef536516673a64dec6", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 258, + "rust_test": "get_blacklist_returns_independent_copy", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.BlacklistWorkflow_AddMultipleBehaviors_WorksCorrectly::test", @@ -22225,12 +22225,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 589, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2d12fef7ac9d7d23a898251ad2c084bcb51ecc62580e0d5ff3922e86d0f9911a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 270, + "rust_test": "blacklist_workflow_adds_and_removes_behaviors", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_IntegrationWithRestrictionsBase_WorksCorrectly::test", @@ -22246,12 +22246,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 590, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e9368d21686b152ba0011c57dfa3345311b9ed1d35fecfc42553c1760f8b1313", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 306, + "rust_test": "seed_blacklist_adds_each_comma_separated_behavior", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_EmptyString_ResultsInEmptyBlacklist::test", @@ -22267,12 +22267,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 591, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b4636d19699ee63c1b45c48bba3e2db4086e4cc8306cc2b0ab1abbfd09ebaba1", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 318, + "rust_test": "seed_blacklist_empty_string_adds_nothing", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvBlacklistTests.cs::RlvBlacklistTests.SeedBlacklist_WithSpaces_HandlesCorrectly::test", @@ -22288,12 +22288,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 592, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "583b44196b04f37f40131fe576deeda68ab7d7d859cbb09f2bc9e4e6766b8256", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_blacklist_semantics.rs", + "rust_line": 326, + "rust_test": "seed_blacklist_trims_spaces", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:7da68a0c44d86b61", @@ -22307,12 +22307,12 @@ "body_sha256": "2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 593, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8e4b45d143e5a3b83986384a0de588ea1f22b44d6b33b7f02f7d2cd871ae95ed", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 13, + "rust_test": "attachment_point_spine", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:d4dfd612ab268dc7", @@ -22326,12 +22326,12 @@ "body_sha256": "2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 594, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8b14deb053e6a83b7b8cc1379eca86a92036b8df817c670b2309fefe9b4cdf7f", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 22, + "rust_test": "attachment_point_repeated_spine", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:58d5bce9d704814b", @@ -22345,12 +22345,12 @@ "body_sha256": "2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 595, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a0dbd8b30cdc3d10bfd05c8edfff7d14510653fc7e464d847d3a979240d39daa", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 31, + "rust_test": "attachment_point_uses_last_known_tag", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:7c453569c08c0a0f", @@ -22364,12 +22364,12 @@ "body_sha256": "2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 596, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "dd7bdb94eeae92baa7c3d973cb09be9418ff577bc7ebb2583c0c0ce1e075ebfb", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 40, + "rust_test": "attachment_point_ignores_unknown_tag", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:ace2eedabcda99e6", @@ -22383,12 +22383,12 @@ "body_sha256": "2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 597, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8927bf6dcdf802437c39d55828efc2463ff9d16cbd5776690a680e1b7afd5142", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 49, + "rust_test": "attachment_point_avatar_center", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName::case:1a967cd76f5fa058", @@ -22402,12 +22402,12 @@ "body_sha256": "2e932256b5a230d8c8ce814c1c919e4f1ae346f6f7263682661d1b10d4a05a17", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 598, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3c4edddcd0641cea77b8683f6d813946c353693c0b8d64a30555188f8ed4cab3", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 58, + "rust_test": "attachment_point_root_alias", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:f6b796736de6a5d8", @@ -22421,12 +22421,12 @@ "body_sha256": "cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 599, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "cccf9882295b382beaf0ea440dd00d0fad62e988c24b95aa18899cf081547123", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 67, + "rust_test": "attachment_point_uppercase_spine", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:787d37133953ab32", @@ -22440,12 +22440,12 @@ "body_sha256": "cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 600, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "fea87870d1bb755b6f084bdb2b821408ecd8e29d0d14ea1e7564ab8584fc0b54", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 76, + "rust_test": "attachment_point_titlecase_spine", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:d2056032186a0a97", @@ -22459,12 +22459,12 @@ "body_sha256": "cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 601, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "57aaaef27b84e645f67fe47bc6738274b14787deabf7a8d699e08fa558621d3e", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 85, + "rust_test": "attachment_point_titlecase_avatar_center", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemName_CaseSensitive::case:c1f038c1236211aa", @@ -22478,12 +22478,12 @@ "body_sha256": "cca41435176820c1b26287db1ea697128e5f093f2d91357081c469ba0b90e26c", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 602, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "a3085d0401314603c5adf3bbaffa9c6c56c255fb3cf18adccbf04bacec28f48a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 94, + "rust_test": "attachment_point_lowercase_left_upper_leg", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:564c3e282f3b402f", @@ -22497,12 +22497,12 @@ "body_sha256": "c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 603, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "10734bbc69d4185aa9f664bb441643e398323df6fe711ecafb957f723df91851", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 103, + "rust_test": "attachment_point_rejects_unknown_tags", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:1d03935868fa6124", @@ -22516,12 +22516,12 @@ "body_sha256": "c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 604, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "558bb80282eb186a1d01c7feaa194d7897aa128b4d52468bd6f90f4d23997f9b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 109, + "rust_test": "attachment_point_rejects_untagged_name", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvCommonTests.cs::RlvCommonTests.TryGetRlvAttachmentPointFromItemNameInvalid::case:12ae32cb1ec02d01", @@ -22535,12 +22535,12 @@ "body_sha256": "c20289eb110772fb51f82d59b595ebb429f15d6d2a8f93daa8672702dd85ce34", "categories": [], "fixture_dependencies": [], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 605, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "bb779ebc2f79e26d9be3236be9976823106764a03ccafd8c7005b0cdb0fa5e9a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_common_semantics.rs", + "rust_line": 115, + "rust_test": "attachment_point_rejects_empty_name", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_NoRestrictions_ReturnsEmptyCollection::test", @@ -22556,12 +22556,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 606, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "3042f662ff0cea025d7ef96420a2c40f449a6c008a0be16ba07f8335de38e039", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 40, + "rust_test": "tracked_prim_ids_empty", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_SingleRestriction_ReturnsSingleId::test", @@ -22577,12 +22577,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 607, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "95381fe0aad3f1dca59db8228b0aa51fea6d9f3e3469dce732e7322c51cc0964", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 46, + "rust_test": "tracked_prim_ids_single_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleRestrictionsFromSameObject_ReturnsSingleId::test", @@ -22598,12 +22598,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 608, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "68a08e85b47b08d84233fa1a6232d99d7ce34826d7b9951d3ba0f5d5afc59c18", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 54, + "rust_test": "tracked_prim_ids_deduplicates_one_object", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MultipleObjects_ReturnsAllUniqueIds::test", @@ -22619,12 +22619,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 609, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "cccad242033f91bffbb88881ae5fffc40e66c808859f9026948229a71e2505a8", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 62, + "rust_test": "tracked_prim_ids_multiple_objects", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_MixedRestrictionsAndExceptions_ReturnsAllUniqueIds::test", @@ -22640,12 +22640,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 610, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "2cb7fb754721530d7cb25123b0cdb409f73d310db4fcc56b5e341ba4c96b1334", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 76, + "rust_test": "tracked_prim_ids_include_restrictions_and_exceptions", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_AfterRemovingRestriction_DoesNotReturnRemovedObjectId::test", @@ -22661,12 +22661,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 611, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "8af811623b2d3dfd1d5585ef47feee564308a35bdd06fdf9396547de81248233", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 88, + "rust_test": "tracked_prim_ids_after_removing_restriction", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.GetTrackedPrimIds_AfterClearingAllRestrictions_ReturnsEmptyCollection::test", @@ -22682,12 +22682,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 612, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "4c466712fe2f7596d51b0e0c5859f91d18ceb779be083ec81114b404f8421de4", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 100, + "rust_test": "tracked_prim_ids_after_clear", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_EmptyInput_NoEffect::test", @@ -22703,12 +22703,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 613, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "b9331edebbc8df29a8248bb6eabeea10106b02a40dd0aae23b7206c31187c12a", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 108, + "rust_test": "remove_restrictions_empty_input", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_NonExistentId_NoEffect::test", @@ -22724,12 +22724,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 614, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "80dee92590e0fc27d22c9cc67c76244feb91f32c63bdf2e85b887500ca9638c5", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 118, + "rust_test": "remove_restrictions_missing_id", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_SingleObject_RemovesAllRestrictionsFromObject::test", @@ -22745,12 +22745,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 615, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "90aa9efbc0f149e95db40585405a2a44e8ec6a831beb222fd3f9e3ce6f654820", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 128, + "rust_test": "remove_restrictions_single_object", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_MultipleObjects_RemovesOnlySpecifiedObjects::test", @@ -22766,12 +22766,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 616, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "0477332489c554f49675e91ca9cb4271b67b15aa5f16bd8e71f894fc3d4eec6b", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 141, + "rust_test": "remove_restrictions_multiple_objects", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_PartialMatch_RemovesOnlyMatchingObjects::test", @@ -22787,12 +22787,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 617, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e833403fd68c1a23da51b98ea1b0e10d97449f30209249f1d7b62d0b96ab3626", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 156, + "rust_test": "remove_restrictions_partial_match", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithNotificationRestrictions_SendsNotifications::test", @@ -22808,12 +22808,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 618, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "07e3a9b6a881e2ce84c6fda0a339a706d15d54b36ba46c797cda957db4522283", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 168, + "rust_test": "remove_restrictions_sends_notification", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_WithComplexRestrictions_RemovesCorrectly::test", @@ -22829,12 +22829,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 619, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "6fff167d5b6c16379e414a0e34702ff54a5567de9d7d7183fbb1631a0ce8a2bc", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 187, + "rust_test": "remove_restrictions_complex_types", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/RLV/RlvRestrictionManagerTests.cs::RlvRestrictionManagerTests.RemoveRestrictionsForObjects_TriggersRestrictionUpdatedEvent::test", @@ -22850,12 +22850,12 @@ "fixture_dependencies": [ "LibreMetaverse.Tests/RLV/RlvTestBase.cs" ], - "rust_file": "tests/compat/tests/generated_parity.rs", - "rust_line": 620, - "rust_test": "", - "rust_body_sha256": null, - "status": "pending", - "semantic_review": "unreviewed" + "rust_body_sha256": "e54466904faa11e51560f7d016c9e84a825d3073985662b041aaacedbedb7dc2", + "status": "translated", + "rust_file": "tests/compat/tests/rlv_restriction_manager_semantics.rs", + "rust_line": 235, + "rust_test": "remove_restrictions_triggers_update_event", + "semantic_review": "reviewed" }, { "id": "LibreMetaverse.Tests/ReaderWriterLockTests.cs::ReaderWriterLockTests.MultipleReadersOneWriter_ReaderConcurrencyAndWriterExclusion::test", diff --git a/tools/generate_surface.py b/tools/generate_surface.py index e470c31..58d5507 100644 --- a/tools/generate_surface.py +++ b/tools/generate_surface.py @@ -576,7 +576,6 @@ def generate_tests(upstream: Path, output: Path, review_root: Path | None = None "// @generated by tools/generate_surface.py; do not edit by hand.", f"// Source: LibreMetaverse {UPSTREAM_COMMIT}", "// Pending cases are catalog entries, not fake executable Rust tests.", - "", ] for test in tests: review = reviews.get(str(test["id"])) @@ -584,6 +583,8 @@ def generate_tests(upstream: Path, output: Path, review_root: Path | None = None test.update(review) test["semantic_review"] = "reviewed" continue + if len(rust_lines) == 3: + rust_lines.append("") test.update( { "rust_file": "tests/compat/tests/generated_parity.rs",