Translate asset and archive parity tests
This commit is contained in:
@@ -47,7 +47,7 @@ External member APIs are not copied. Each signature type resolves to Rust core/s
|
|||||||
- Properties/indexers/events: **5,090 / 11 / 268**
|
- Properties/indexers/events: **5,090 / 11 / 268**
|
||||||
- Delegates and flags enums: **40 / 46**
|
- Delegates and flags enums: **40 / 46**
|
||||||
- Optional/ref/out/in parameters: **470 / 6,144 / 555 / 0**
|
- Optional/ref/out/in parameters: **470 / 6,144 / 555 / 0**
|
||||||
- Async Rust signatures: **334**
|
- Async Rust signatures: **332**
|
||||||
- Descriptively renamed overloads: **7,151**
|
- Descriptively renamed overloads: **7,151**
|
||||||
- Explicit CLR delegate APM differences: **80**
|
- Explicit CLR delegate APM differences: **80**
|
||||||
|
|
||||||
|
|||||||
@@ -10473,7 +10473,7 @@ M:LibreMetaverse.AssetCache.TryGetCachedAssetBytes(LibreMetaverse.UUID,System.By
|
|||||||
M:LibreMetaverse.AssetCache.TryGetCachedAssetBytesAsync(LibreMetaverse.UUID,System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.ValueTuple<System.Boolean, System.Byte[]>> LibreMetaverse.AssetCache.TryGetCachedAssetBytesAsync(LibreMetaverse.UUID assetID, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AssetCache::try_get_cached_asset_bytes_with_uuid_cancellation_token pub async fn try_get_cached_asset_bytes_with_uuid_cancellation_token(&self, asset_id: libremetaverse_types::UUID, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<(bool, Option<Vec<u8>>), crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.AssetCache.TryGetCachedAssetBytesAsync(LibreMetaverse.UUID,System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.ValueTuple<System.Boolean, System.Byte[]>> LibreMetaverse.AssetCache.TryGetCachedAssetBytesAsync(LibreMetaverse.UUID assetID, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AssetCache::try_get_cached_asset_bytes_with_uuid_cancellation_token pub async fn try_get_cached_asset_bytes_with_uuid_cancellation_token(&self, asset_id: libremetaverse_types::UUID, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<(bool, Option<Vec<u8>>), crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.AssetCacheSettings.#ctor constructor LibreMetaverse.AssetCacheSettings() libremetaverse libremetaverse::AssetCacheSettings::new pub fn new() -> Result<Self, crate::Error> none sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AssetCacheSettings.#ctor constructor LibreMetaverse.AssetCacheSettings() libremetaverse libremetaverse::AssetCacheSettings::new pub fn new() -> Result<Self, crate::Error> none sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AssetDownload.#ctor constructor LibreMetaverse.AssetDownload() libremetaverse libremetaverse::AssetDownload::new pub fn new() -> Result<Self, crate::Error> none sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AssetDownload.#ctor constructor LibreMetaverse.AssetDownload() libremetaverse libremetaverse::AssetDownload::new pub fn new() -> Result<Self, crate::Error> none sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AssetManager.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.AssetManager(LibreMetaverse.GridClient client) libremetaverse libremetaverse::AssetManager::new pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AssetManager.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.AssetManager(LibreMetaverse.GridClient client) libremetaverse libremetaverse::AssetManager::new pub fn new(client: Option<libremetaverse::GridClient>) -> Result<Self, crate::Error> optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AssetManager.AssetTypeToString(LibreMetaverse.AssetType) method System.String LibreMetaverse.AssetManager.AssetTypeToString(LibreMetaverse.AssetType assetType) libremetaverse libremetaverse::AssetManager::asset_type_to_string pub fn asset_type_to_string(&self, asset_type: libremetaverse_types::AssetType) -> Result<String, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AssetManager.AssetTypeToString(LibreMetaverse.AssetType) method System.String LibreMetaverse.AssetManager.AssetTypeToString(LibreMetaverse.AssetType assetType) libremetaverse libremetaverse::AssetManager::asset_type_to_string pub fn asset_type_to_string(&self, asset_type: libremetaverse_types::AssetType) -> Result<String, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AssetManager.CreateAssetWrapper(LibreMetaverse.AssetType) method LibreMetaverse.Assets.Asset LibreMetaverse.AssetManager.CreateAssetWrapper(LibreMetaverse.AssetType type) libremetaverse libremetaverse::AssetManager::create_asset_wrapper pub fn create_asset_wrapper(&self, type_: libremetaverse_types::AssetType) -> Result<libremetaverse::assets::Asset, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AssetManager.CreateAssetWrapper(LibreMetaverse.AssetType) method LibreMetaverse.Assets.Asset LibreMetaverse.AssetManager.CreateAssetWrapper(LibreMetaverse.AssetType type) libremetaverse libremetaverse::AssetManager::create_asset_wrapper pub fn create_asset_wrapper(&self, type_: libremetaverse_types::AssetType) -> Result<libremetaverse::assets::Asset, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.AssetManager.GetTextureUploadCost(System.Int32) method System.Int32 LibreMetaverse.AssetManager.GetTextureUploadCost(System.Int32 widthPixels) libremetaverse libremetaverse::AssetManager::get_texture_upload_cost pub fn get_texture_upload_cost(&self, width_pixels: i32) -> Result<i32, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.AssetManager.GetTextureUploadCost(System.Int32) method System.Int32 LibreMetaverse.AssetManager.GetTextureUploadCost(System.Int32 widthPixels) libremetaverse libremetaverse::AssetManager::get_texture_upload_cost pub fn get_texture_upload_cost(&self, width_pixels: i32) -> Result<i32, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
@@ -10520,22 +10520,22 @@ M:LibreMetaverse.Assets.AssetLandmark.Decode method System.Boolean LibreMetavers
|
|||||||
M:LibreMetaverse.Assets.AssetLandmark.Encode method System.Void LibreMetaverse.Assets.AssetLandmark.Encode() libremetaverse assets libremetaverse::assets::AssetLandmark::encode pub fn encode(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetLandmark.Encode method System.Void LibreMetaverse.Assets.AssetLandmark.Encode() libremetaverse assets libremetaverse::assets::AssetLandmark::encode pub fn encode(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.#ctor constructor LibreMetaverse.Assets.AssetMaterial() libremetaverse assets libremetaverse::assets::AssetMaterial::new_with_constructor pub fn new_with_constructor() -> Result<Self, crate::Error> none sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.#ctor constructor LibreMetaverse.Assets.AssetMaterial() libremetaverse assets libremetaverse::assets::AssetMaterial::new_with_constructor pub fn new_with_constructor() -> Result<Self, crate::Error> none sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.#ctor(LibreMetaverse.UUID,System.Byte[]) constructor LibreMetaverse.Assets.AssetMaterial(LibreMetaverse.UUID assetId, System.Byte[] assetData) libremetaverse assets libremetaverse::assets::AssetMaterial::new_with_uuid_bytes pub fn new_with_uuid_bytes(asset_id: libremetaverse_types::UUID, asset_data: Vec<u8>) -> Result<Self, crate::Error> owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.#ctor(LibreMetaverse.UUID,System.Byte[]) constructor LibreMetaverse.Assets.AssetMaterial(LibreMetaverse.UUID assetId, System.Byte[] assetData) libremetaverse assets libremetaverse::assets::AssetMaterial::new_with_uuid_bytes pub fn new_with_uuid_bytes(asset_id: libremetaverse_types::UUID, asset_data: Vec<u8>) -> Result<Self, crate::Error> owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.ApplyOverride(LibreMetaverse.Assets.AssetMaterial) method System.Void LibreMetaverse.Assets.AssetMaterial.ApplyOverride(LibreMetaverse.Assets.AssetMaterial overrideMat) libremetaverse assets libremetaverse::assets::AssetMaterial::apply_override pub fn apply_override(&self, override_mat: libremetaverse::assets::AssetMaterial) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.ApplyOverride(LibreMetaverse.Assets.AssetMaterial) method System.Void LibreMetaverse.Assets.AssetMaterial.ApplyOverride(LibreMetaverse.Assets.AssetMaterial overrideMat) libremetaverse assets libremetaverse::assets::AssetMaterial::apply_override pub fn apply_override(&mut self, override_mat: libremetaverse::assets::AssetMaterial) -> Result<(), crate::Error> mutable_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.Decode method System.Boolean LibreMetaverse.Assets.AssetMaterial.Decode() libremetaverse assets libremetaverse::assets::AssetMaterial::decode pub fn decode(&self) -> Result<bool, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.Decode method System.Boolean LibreMetaverse.Assets.AssetMaterial.Decode() libremetaverse assets libremetaverse::assets::AssetMaterial::decode pub fn decode(&mut self) -> Result<bool, crate::Error> mutable_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.Encode method System.Void LibreMetaverse.Assets.AssetMaterial.Encode() libremetaverse assets libremetaverse::assets::AssetMaterial::encode pub fn encode(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.Encode method System.Void LibreMetaverse.Assets.AssetMaterial.Encode() libremetaverse assets libremetaverse::assets::AssetMaterial::encode pub fn encode(&mut self) -> Result<(), crate::Error> mutable_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.FromOverrideOsd(LibreMetaverse.StructuredData.OSDMap) method LibreMetaverse.Assets.AssetMaterial LibreMetaverse.Assets.AssetMaterial.FromOverrideOsd(LibreMetaverse.StructuredData.OSDMap data) libremetaverse assets libremetaverse::assets::AssetMaterial::from_override_osd pub fn from_override_osd(data: libremetaverse_structured_data::OSDMap) -> Result<libremetaverse::assets::AssetMaterial, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.FromOverrideOsd(LibreMetaverse.StructuredData.OSDMap) method LibreMetaverse.Assets.AssetMaterial LibreMetaverse.Assets.AssetMaterial.FromOverrideOsd(LibreMetaverse.StructuredData.OSDMap data) libremetaverse assets libremetaverse::assets::AssetMaterial::from_override_osd pub fn from_override_osd(data: libremetaverse_structured_data::OSDMap) -> Result<libremetaverse::assets::AssetMaterial, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetAlphaCutoff(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetAlphaCutoff(System.Single cutoff, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_alpha_cutoff_with_single_boolean pub fn set_alpha_cutoff_with_single_boolean(&self, cutoff: f32, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetAlphaCutoff(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetAlphaCutoff(System.Single cutoff, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_alpha_cutoff_with_single_boolean pub fn set_alpha_cutoff_with_single_boolean(&mut self, cutoff: f32, for_override: Option<bool>) -> Result<(), crate::Error> mutable_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetAlphaMode(LibreMetaverse.Assets.GltfAlphaMode,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetAlphaMode(LibreMetaverse.Assets.GltfAlphaMode mode, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_alpha_mode_with_gltf_alpha_mode_boolean pub fn set_alpha_mode_with_gltf_alpha_mode_boolean(&self, mode: libremetaverse::assets::GltfAlphaMode, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetAlphaMode(LibreMetaverse.Assets.GltfAlphaMode,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetAlphaMode(LibreMetaverse.Assets.GltfAlphaMode mode, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_alpha_mode_with_gltf_alpha_mode_boolean pub fn set_alpha_mode_with_gltf_alpha_mode_boolean(&mut self, mode: libremetaverse::assets::GltfAlphaMode, for_override: Option<bool>) -> Result<(), crate::Error> mutable_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetBaseColorFactor(LibreMetaverse.Color4,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetBaseColorFactor(LibreMetaverse.Color4 color, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_base_color_factor_with_color4_boolean pub fn set_base_color_factor_with_color4_boolean(&self, color: libremetaverse_types::Color4, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetBaseColorFactor(LibreMetaverse.Color4,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetBaseColorFactor(LibreMetaverse.Color4 color, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_base_color_factor_with_color4_boolean pub fn set_base_color_factor_with_color4_boolean(&mut self, color: libremetaverse_types::Color4, for_override: Option<bool>) -> Result<(), crate::Error> mutable_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetBaseMaterial method System.Void LibreMetaverse.Assets.AssetMaterial.SetBaseMaterial() libremetaverse assets libremetaverse::assets::AssetMaterial::set_base_material pub fn set_base_material(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetBaseMaterial method System.Void LibreMetaverse.Assets.AssetMaterial.SetBaseMaterial() libremetaverse assets libremetaverse::assets::AssetMaterial::set_base_material pub fn set_base_material(&mut self) -> Result<(), crate::Error> mutable_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetDoubleSided(System.Boolean,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetDoubleSided(System.Boolean doubleSided, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_double_sided_with_boolean_boolean pub fn set_double_sided_with_boolean_boolean(&self, double_sided: bool, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetDoubleSided(System.Boolean,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetDoubleSided(System.Boolean doubleSided, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_double_sided_with_boolean_boolean pub fn set_double_sided_with_boolean_boolean(&mut self, double_sided: bool, for_override: Option<bool>) -> Result<(), crate::Error> mutable_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetEmissiveFactor(LibreMetaverse.Vector3,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetEmissiveFactor(LibreMetaverse.Vector3 color, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_emissive_factor_with_vector3_boolean pub fn set_emissive_factor_with_vector3_boolean(&self, color: libremetaverse_types::Vector3, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetEmissiveFactor(LibreMetaverse.Vector3,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetEmissiveFactor(LibreMetaverse.Vector3 color, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_emissive_factor_with_vector3_boolean pub fn set_emissive_factor_with_vector3_boolean(&mut self, color: libremetaverse_types::Vector3, for_override: Option<bool>) -> Result<(), crate::Error> mutable_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetMetallicFactor(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetMetallicFactor(System.Single metallic, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_metallic_factor_with_single_boolean pub fn set_metallic_factor_with_single_boolean(&self, metallic: f32, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetMetallicFactor(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetMetallicFactor(System.Single metallic, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_metallic_factor_with_single_boolean pub fn set_metallic_factor_with_single_boolean(&mut self, metallic: f32, for_override: Option<bool>) -> Result<(), crate::Error> mutable_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetRoughnessFactor(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetRoughnessFactor(System.Single roughness, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_roughness_factor_with_single_boolean pub fn set_roughness_factor_with_single_boolean(&self, roughness: f32, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetRoughnessFactor(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetRoughnessFactor(System.Single roughness, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_roughness_factor_with_single_boolean pub fn set_roughness_factor_with_single_boolean(&mut self, roughness: f32, for_override: Option<bool>) -> Result<(), crate::Error> mutable_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetTextureId(System.Int32,LibreMetaverse.UUID,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureId(System.Int32 slot, LibreMetaverse.UUID id, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_id pub fn set_texture_id(&self, slot: i32, id: libremetaverse_types::UUID, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetTextureId(System.Int32,LibreMetaverse.UUID,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureId(System.Int32 slot, LibreMetaverse.UUID id, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_id pub fn set_texture_id(&mut self, slot: i32, id: libremetaverse_types::UUID, for_override: Option<bool>) -> Result<(), crate::Error> mutable_self,owned,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetTextureOffset(System.Int32,LibreMetaverse.Vector2) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureOffset(System.Int32 slot, LibreMetaverse.Vector2 offset) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_offset pub fn set_texture_offset(&self, slot: i32, offset: libremetaverse_types::Vector2) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetTextureOffset(System.Int32,LibreMetaverse.Vector2) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureOffset(System.Int32 slot, LibreMetaverse.Vector2 offset) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_offset pub fn set_texture_offset(&mut self, slot: i32, offset: libremetaverse_types::Vector2) -> Result<(), crate::Error> mutable_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetTextureRotation(System.Int32,System.Single) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureRotation(System.Int32 slot, System.Single rotation) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_rotation pub fn set_texture_rotation(&self, slot: i32, rotation: f32) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetTextureRotation(System.Int32,System.Single) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureRotation(System.Int32 slot, System.Single rotation) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_rotation pub fn set_texture_rotation(&mut self, slot: i32, rotation: f32) -> Result<(), crate::Error> mutable_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.SetTextureScale(System.Int32,LibreMetaverse.Vector2) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureScale(System.Int32 slot, LibreMetaverse.Vector2 scale) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_scale pub fn set_texture_scale(&self, slot: i32, scale: libremetaverse_types::Vector2) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.SetTextureScale(System.Int32,LibreMetaverse.Vector2) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureScale(System.Int32 slot, LibreMetaverse.Vector2 scale) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_scale pub fn set_texture_scale(&mut self, slot: i32, scale: libremetaverse_types::Vector2) -> Result<(), crate::Error> mutable_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.ToJson method System.String LibreMetaverse.Assets.AssetMaterial.ToJson() libremetaverse assets libremetaverse::assets::AssetMaterial::to_json pub fn to_json(&self) -> Result<String, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.ToJson method System.String LibreMetaverse.Assets.AssetMaterial.ToJson() libremetaverse assets libremetaverse::assets::AssetMaterial::to_json pub fn to_json(&self) -> Result<String, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMaterial.ToOverrideOsd method LibreMetaverse.StructuredData.OSDMap LibreMetaverse.Assets.AssetMaterial.ToOverrideOsd() libremetaverse assets libremetaverse::assets::AssetMaterial::to_override_osd pub fn to_override_osd(&self) -> Result<libremetaverse_structured_data::OSDMap, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.Assets.AssetMaterial.ToOverrideOsd method LibreMetaverse.StructuredData.OSDMap LibreMetaverse.Assets.AssetMaterial.ToOverrideOsd() libremetaverse assets libremetaverse::assets::AssetMaterial::to_override_osd pub fn to_override_osd(&self) -> Result<libremetaverse_structured_data::OSDMap, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.Assets.AssetMesh.#ctor constructor LibreMetaverse.Assets.AssetMesh() libremetaverse assets libremetaverse::assets::AssetMesh::new_with_constructor pub fn new_with_constructor() -> Result<Self, crate::Error> none sync Result<_, crate::Error> descriptive_overload_name method mapped
|
M:LibreMetaverse.Assets.AssetMesh.#ctor constructor LibreMetaverse.Assets.AssetMesh() libremetaverse assets libremetaverse::assets::AssetMesh::new_with_constructor pub fn new_with_constructor() -> Result<Self, crate::Error> none sync Result<_, crate::Error> descriptive_overload_name method mapped
|
||||||
@@ -24948,8 +24948,8 @@ M:LibreMetaverse.TerrainCompressor.DecodePatchHeader(LibreMetaverse.BitPack,Syst
|
|||||||
M:LibreMetaverse.TerrainCompressor.DecompressPatch(System.Int32[],LibreMetaverse.TerrainPatch.Header,LibreMetaverse.TerrainPatch.GroupHeader) method System.Single[] LibreMetaverse.TerrainCompressor.DecompressPatch(System.Int32[] patches, LibreMetaverse.TerrainPatch.Header header, LibreMetaverse.TerrainPatch.GroupHeader group) libremetaverse libremetaverse::TerrainCompressor::decompress_patch pub fn decompress_patch(patches: Vec<i32>, header: libremetaverse::TerrainPatchHeader, group: libremetaverse::TerrainPatchGroupHeader) -> Result<Vec<f32>, crate::Error> owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.TerrainCompressor.DecompressPatch(System.Int32[],LibreMetaverse.TerrainPatch.Header,LibreMetaverse.TerrainPatch.GroupHeader) method System.Single[] LibreMetaverse.TerrainCompressor.DecompressPatch(System.Int32[] patches, LibreMetaverse.TerrainPatch.Header header, LibreMetaverse.TerrainPatch.GroupHeader group) libremetaverse libremetaverse::TerrainCompressor::decompress_patch pub fn decompress_patch(patches: Vec<i32>, header: libremetaverse::TerrainPatchHeader, group: libremetaverse::TerrainPatchGroupHeader) -> Result<Vec<f32>, crate::Error> owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.TerrainManager.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.TerrainManager(LibreMetaverse.GridClient client) libremetaverse libremetaverse::TerrainManager::new pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.TerrainManager.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.TerrainManager(LibreMetaverse.GridClient client) libremetaverse libremetaverse::TerrainManager::new pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.TerrainManager.Dispose method System.Void LibreMetaverse.TerrainManager.Dispose() libremetaverse libremetaverse::TerrainManager::dispose pub fn dispose(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.TerrainManager.Dispose method System.Void LibreMetaverse.TerrainManager.Dispose() libremetaverse libremetaverse::TerrainManager::dispose pub fn dispose(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.TerrainManager.GetTerrainMaterialOverridesAsync(System.Threading.CancellationToken) method System.Threading.Tasks.Task<LibreMetaverse.Assets.AssetMaterial[]> LibreMetaverse.TerrainManager.GetTerrainMaterialOverridesAsync(System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::TerrainManager::get_terrain_material_overrides pub async fn get_terrain_material_overrides(&self, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<Option<Vec<libremetaverse::assets::AssetMaterial>>, crate::Error> shared_self,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.TerrainManager.GetTerrainMaterialOverridesAsync(System.Threading.CancellationToken) method System.Threading.Tasks.Task<LibreMetaverse.Assets.AssetMaterial[]> LibreMetaverse.TerrainManager.GetTerrainMaterialOverridesAsync(System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::TerrainManager::get_terrain_material_overrides pub async fn get_terrain_material_overrides(&self, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<Option<Vec<Option<libremetaverse::assets::AssetMaterial>>>, crate::Error> shared_self,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.TerrainManager.SetTerrainMaterialOverridesAsync(LibreMetaverse.Assets.AssetMaterial[],System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Boolean> LibreMetaverse.TerrainManager.SetTerrainMaterialOverridesAsync(LibreMetaverse.Assets.AssetMaterial[] overrides, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::TerrainManager::set_terrain_material_overrides pub async fn set_terrain_material_overrides(&self, overrides: Vec<libremetaverse::assets::AssetMaterial>, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<bool, crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.TerrainManager.SetTerrainMaterialOverridesAsync(LibreMetaverse.Assets.AssetMaterial[],System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Boolean> LibreMetaverse.TerrainManager.SetTerrainMaterialOverridesAsync(LibreMetaverse.Assets.AssetMaterial[] overrides, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::TerrainManager::set_terrain_material_overrides pub async fn set_terrain_material_overrides(&self, overrides: Vec<Option<libremetaverse::assets::AssetMaterial>>, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<bool, crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.TerrainPatch.#ctor constructor LibreMetaverse.TerrainPatch() libremetaverse libremetaverse::TerrainPatch::new pub fn new() -> Result<Self, crate::Error> none sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.TerrainPatch.#ctor constructor LibreMetaverse.TerrainPatch() libremetaverse libremetaverse::TerrainPatch::new pub fn new() -> Result<Self, crate::Error> none sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.TerrainPatch.Header.setPatchIDs(System.Int32,System.Int32) method System.Int32 LibreMetaverse.TerrainPatch.Header.setPatchIDs(System.Int32 xx, System.Int32 yy) libremetaverse libremetaverse::TerrainPatchHeader::set_patch_i_ds pub fn set_patch_i_ds(&mut self, xx: i32, yy: i32) -> Result<i32, crate::Error> mutable_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.TerrainPatch.Header.setPatchIDs(System.Int32,System.Int32) method System.Int32 LibreMetaverse.TerrainPatch.Header.setPatchIDs(System.Int32 xx, System.Int32 yy) libremetaverse libremetaverse::TerrainPatchHeader::set_patch_i_ds pub fn set_patch_i_ds(&mut self, xx: i32, yy: i32) -> Result<i32, crate::Error> mutable_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
M:LibreMetaverse.TerseObjectUpdateEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.Primitive,LibreMetaverse.ObjectMovementUpdate,System.UInt16) constructor LibreMetaverse.TerseObjectUpdateEventArgs(LibreMetaverse.Simulator simulator, LibreMetaverse.Primitive prim, LibreMetaverse.ObjectMovementUpdate update, System.UInt16 timeDilation) libremetaverse libremetaverse::TerseObjectUpdateEventArgs::new pub fn new(simulator: libremetaverse::Simulator, prim: libremetaverse::Primitive, update: libremetaverse::ObjectMovementUpdate, time_dilation: u16) -> Result<Self, crate::Error> owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
M:LibreMetaverse.TerseObjectUpdateEventArgs.#ctor(LibreMetaverse.Simulator,LibreMetaverse.Primitive,LibreMetaverse.ObjectMovementUpdate,System.UInt16) constructor LibreMetaverse.TerseObjectUpdateEventArgs(LibreMetaverse.Simulator simulator, LibreMetaverse.Primitive prim, LibreMetaverse.ObjectMovementUpdate update, System.UInt16 timeDilation) libremetaverse libremetaverse::TerseObjectUpdateEventArgs::new pub fn new(simulator: libremetaverse::Simulator, prim: libremetaverse::Primitive, update: libremetaverse::ObjectMovementUpdate, time_dilation: u16) -> Result<Self, crate::Error> owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
|
||||||
|
|||||||
|
Can't render this file because it is too large.
|
@@ -51,6 +51,8 @@ pub enum Error {
|
|||||||
ArgumentNull,
|
ArgumentNull,
|
||||||
/// An argument value or length was invalid.
|
/// An argument value or length was invalid.
|
||||||
Argument,
|
Argument,
|
||||||
|
/// The requested operation is invalid in the current object state.
|
||||||
|
InvalidOperation,
|
||||||
/// An index or destination buffer boundary was exceeded.
|
/// An index or destination buffer boundary was exceeded.
|
||||||
IndexOutOfRange,
|
IndexOutOfRange,
|
||||||
/// An operation observed a requested cancellation.
|
/// An operation observed a requested cancellation.
|
||||||
@@ -63,7 +65,11 @@ impl Error {
|
|||||||
pub const fn csharp_member(self) -> Option<&'static str> {
|
pub const fn csharp_member(self) -> Option<&'static str> {
|
||||||
match self {
|
match self {
|
||||||
Self::NotImplemented(error) => Some(error.csharp_member()),
|
Self::NotImplemented(error) => Some(error.csharp_member()),
|
||||||
Self::ArgumentNull | Self::Argument | Self::IndexOutOfRange | Self::Cancelled => None,
|
Self::ArgumentNull
|
||||||
|
| Self::Argument
|
||||||
|
| Self::InvalidOperation
|
||||||
|
| Self::IndexOutOfRange
|
||||||
|
| Self::Cancelled => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,6 +86,9 @@ impl fmt::Display for Error {
|
|||||||
Self::NotImplemented(error) => error.fmt(formatter),
|
Self::NotImplemented(error) => error.fmt(formatter),
|
||||||
Self::ArgumentNull => formatter.write_str("required argument was null"),
|
Self::ArgumentNull => formatter.write_str("required argument was null"),
|
||||||
Self::Argument => formatter.write_str("argument was invalid"),
|
Self::Argument => formatter.write_str("argument was invalid"),
|
||||||
|
Self::InvalidOperation => {
|
||||||
|
formatter.write_str("operation was invalid for the current state")
|
||||||
|
}
|
||||||
Self::IndexOutOfRange => formatter.write_str("index was out of range"),
|
Self::IndexOutOfRange => formatter.write_str("index was out of range"),
|
||||||
Self::Cancelled => formatter.write_str("operation was cancelled"),
|
Self::Cancelled => formatter.write_str("operation was cancelled"),
|
||||||
}
|
}
|
||||||
|
|||||||
114
crates/libremetaverse/src/asset_archive_semantics.rs
Normal file
114
crates/libremetaverse/src/asset_archive_semantics.rs
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
// The upstream tests reach the internal OarFile.LoadTerrain member via reflection.
|
||||||
|
// Keep the equivalent Rust seam private to the owning crate.
|
||||||
|
// BSD-3-Clause source (see LICENSE.md): LibreMetaverse.Tests/OarFileTerrainTests.cs
|
||||||
|
// SHA-256: 19c42f7f132b97dc1667208f1e9b49df8ff6db96265c22b1c1ef5498e3c5c75d
|
||||||
|
|
||||||
|
#![allow(clippy::float_cmp)]
|
||||||
|
|
||||||
|
use crate::assets::OarFile;
|
||||||
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
|
fn raw_terrain(side: usize, fill: f32) -> Vec<u8> {
|
||||||
|
fill.to_le_bytes().repeat(side * side)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fixture SHA-256: fcdd41fbadfe6a69d9687b3777692c2de82c831856fa8bcef978c3c17b0117fa
|
||||||
|
// parity-case: LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_StandardRegion_Loads256x256::test c4e3a994baf06b0106a6614e9c3efbcc27e45ff1725f5470d2db6ded1fff6014 translated
|
||||||
|
#[test]
|
||||||
|
fn load_standard_region_terrain() {
|
||||||
|
let data = raw_terrain(256, 21.0);
|
||||||
|
let total_bytes = i64::try_from(data.len()).expect("terrain byte count fits i64");
|
||||||
|
let captured = Arc::new(Mutex::new(None));
|
||||||
|
let callback_capture = Arc::clone(&captured);
|
||||||
|
let loaded = OarFile::load_terrain(
|
||||||
|
"terrains/region.r32",
|
||||||
|
data,
|
||||||
|
Box::new(move |terrain, _, _| {
|
||||||
|
*callback_capture.lock().expect("terrain capture") = Some(terrain);
|
||||||
|
}),
|
||||||
|
0,
|
||||||
|
total_bytes,
|
||||||
|
)
|
||||||
|
.expect("OarFile.LoadTerrain");
|
||||||
|
assert!(loaded);
|
||||||
|
let terrain = captured
|
||||||
|
.lock()
|
||||||
|
.expect("terrain capture")
|
||||||
|
.take()
|
||||||
|
.expect("terrain callback");
|
||||||
|
assert_eq!(terrain.len(), 256);
|
||||||
|
assert!(terrain.iter().all(|row| row.len() == 256));
|
||||||
|
assert_eq!(terrain[0][0], 21.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fixture SHA-256: c07500b6f966d65dda9261e3e701fb5bb13e31239ff3a89d74c0046d0ba4ec12
|
||||||
|
// parity-case: LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_Varregion_Loads512x512::test 4820338f10acbb4987e26992d7a7957be58ab6bc548674bf18943ef312962894 translated
|
||||||
|
#[test]
|
||||||
|
fn load_varregion_terrain() {
|
||||||
|
let data = raw_terrain(512, 30.0);
|
||||||
|
let total_bytes = i64::try_from(data.len()).expect("terrain byte count fits i64");
|
||||||
|
let captured = Arc::new(Mutex::new(None));
|
||||||
|
let callback_capture = Arc::clone(&captured);
|
||||||
|
let loaded = OarFile::load_terrain(
|
||||||
|
"terrains/megaregion.f32",
|
||||||
|
data,
|
||||||
|
Box::new(move |terrain, _, _| {
|
||||||
|
*callback_capture.lock().expect("terrain capture") = Some(terrain);
|
||||||
|
}),
|
||||||
|
0,
|
||||||
|
total_bytes,
|
||||||
|
)
|
||||||
|
.expect("OarFile.LoadTerrain");
|
||||||
|
assert!(loaded);
|
||||||
|
let terrain = captured
|
||||||
|
.lock()
|
||||||
|
.expect("terrain capture")
|
||||||
|
.take()
|
||||||
|
.expect("terrain callback");
|
||||||
|
assert_eq!(terrain.len(), 512);
|
||||||
|
assert!(terrain.iter().all(|row| row.len() == 512));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fixture SHA-256: 2dc88437e482fdaa5613df885d49c2b19bd623ecfc387a72338d2367d4b3b451
|
||||||
|
// parity-case: LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_WrongByteCount_FailsGracefully::test ff6fb4feb2773c93397d412d0ecf6aef1f3636e823dabb729a7a6cbe94d1513f translated
|
||||||
|
#[test]
|
||||||
|
fn reject_terrain_with_wrong_byte_count() {
|
||||||
|
let data = vec![0; 256_usize * 256 * 4 + 3];
|
||||||
|
let total_bytes = i64::try_from(data.len()).expect("terrain byte count fits i64");
|
||||||
|
let captured = Arc::new(Mutex::new(None));
|
||||||
|
let callback_capture = Arc::clone(&captured);
|
||||||
|
let loaded = OarFile::load_terrain(
|
||||||
|
"terrains/broken.r32",
|
||||||
|
data,
|
||||||
|
Box::new(move |terrain, _, _| {
|
||||||
|
*callback_capture.lock().expect("terrain capture") = Some(terrain);
|
||||||
|
}),
|
||||||
|
0,
|
||||||
|
total_bytes,
|
||||||
|
)
|
||||||
|
.expect("OarFile.LoadTerrain");
|
||||||
|
assert!(!loaded);
|
||||||
|
assert!(captured.lock().expect("terrain capture").is_none());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fixture SHA-256: 9b94b83334ada38b48b53f19ef2c45abc9f84fb723564671290a556f75d6fdc8
|
||||||
|
// parity-case: LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_NonSquarePostCount_FailsGracefully::test 218754e53232cd10318668c70b94ae9d7d541d09598b0490082e023e76d6045f translated
|
||||||
|
#[test]
|
||||||
|
fn reject_terrain_with_non_square_post_count() {
|
||||||
|
let data = vec![0; 257_usize * 256 * 4];
|
||||||
|
let total_bytes = i64::try_from(data.len()).expect("terrain byte count fits i64");
|
||||||
|
let captured = Arc::new(Mutex::new(None));
|
||||||
|
let callback_capture = Arc::clone(&captured);
|
||||||
|
let loaded = OarFile::load_terrain(
|
||||||
|
"terrains/nonsquare.r32",
|
||||||
|
data,
|
||||||
|
Box::new(move |terrain, _, _| {
|
||||||
|
*callback_capture.lock().expect("terrain capture") = Some(terrain);
|
||||||
|
}),
|
||||||
|
0,
|
||||||
|
total_bytes,
|
||||||
|
)
|
||||||
|
.expect("OarFile.LoadTerrain");
|
||||||
|
assert!(!loaded);
|
||||||
|
assert!(captured.lock().expect("terrain capture").is_none());
|
||||||
|
}
|
||||||
@@ -5080,7 +5080,7 @@ impl AssetManager {
|
|||||||
libremetaverse_types::unimplemented_api!("E:LibreMetaverse.AssetManager.XferReceived")
|
libremetaverse_types::unimplemented_api!("E:LibreMetaverse.AssetManager.XferReceived")
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.AssetManager.#ctor(LibreMetaverse.GridClient)`.
|
/// C# member: `M:LibreMetaverse.AssetManager.#ctor(LibreMetaverse.GridClient)`.
|
||||||
pub fn new(client: libremetaverse::GridClient) -> Result<Self, crate::Error> {
|
pub fn new(client: Option<libremetaverse::GridClient>) -> Result<Self, crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
"M:LibreMetaverse.AssetManager.#ctor(LibreMetaverse.GridClient)",
|
"M:LibreMetaverse.AssetManager.#ctor(LibreMetaverse.GridClient)",
|
||||||
)
|
)
|
||||||
@@ -14988,7 +14988,10 @@ impl InventoryException {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// C# type: `T:LibreMetaverse.InventoryFolder`.
|
/// C# type: `T:LibreMetaverse.InventoryFolder`.
|
||||||
pub struct InventoryFolder;
|
pub struct InventoryFolder {
|
||||||
|
/// Rust composition for C# base type `LibreMetaverse.InventoryBase`.
|
||||||
|
pub base: libremetaverse::InventoryBase,
|
||||||
|
}
|
||||||
impl InventoryFolder {
|
impl InventoryFolder {
|
||||||
/// C# member: `F:LibreMetaverse.InventoryFolder.VERSION_UNKNOWN`.
|
/// C# member: `F:LibreMetaverse.InventoryFolder.VERSION_UNKNOWN`.
|
||||||
pub const VERSION_UNKNOWN: i32 = -1;
|
pub const VERSION_UNKNOWN: i32 = -1;
|
||||||
@@ -27671,7 +27674,7 @@ impl TerrainManager {
|
|||||||
pub async fn get_terrain_material_overrides(
|
pub async fn get_terrain_material_overrides(
|
||||||
&self,
|
&self,
|
||||||
cancellation_token: Option<libremetaverse_types::compat::CancellationToken>,
|
cancellation_token: Option<libremetaverse_types::compat::CancellationToken>,
|
||||||
) -> Result<Option<Vec<libremetaverse::assets::AssetMaterial>>, crate::Error> {
|
) -> Result<Option<Vec<Option<libremetaverse::assets::AssetMaterial>>>, crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
"M:LibreMetaverse.TerrainManager.GetTerrainMaterialOverridesAsync(System.Threading.CancellationToken)",
|
"M:LibreMetaverse.TerrainManager.GetTerrainMaterialOverridesAsync(System.Threading.CancellationToken)",
|
||||||
)
|
)
|
||||||
@@ -27679,7 +27682,7 @@ impl TerrainManager {
|
|||||||
/// C# member: `M:LibreMetaverse.TerrainManager.SetTerrainMaterialOverridesAsync(LibreMetaverse.Assets.AssetMaterial[],System.Threading.CancellationToken)`.
|
/// C# member: `M:LibreMetaverse.TerrainManager.SetTerrainMaterialOverridesAsync(LibreMetaverse.Assets.AssetMaterial[],System.Threading.CancellationToken)`.
|
||||||
pub async fn set_terrain_material_overrides(
|
pub async fn set_terrain_material_overrides(
|
||||||
&self,
|
&self,
|
||||||
overrides: Vec<libremetaverse::assets::AssetMaterial>,
|
overrides: Vec<Option<libremetaverse::assets::AssetMaterial>>,
|
||||||
cancellation_token: Option<libremetaverse_types::compat::CancellationToken>,
|
cancellation_token: Option<libremetaverse_types::compat::CancellationToken>,
|
||||||
) -> Result<bool, crate::Error> {
|
) -> Result<bool, crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
@@ -29952,7 +29955,7 @@ pub mod assets {
|
|||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.ApplyOverride(LibreMetaverse.Assets.AssetMaterial)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.ApplyOverride(LibreMetaverse.Assets.AssetMaterial)`.
|
||||||
pub fn apply_override(
|
pub fn apply_override(
|
||||||
&self,
|
&mut self,
|
||||||
override_mat: libremetaverse::assets::AssetMaterial,
|
override_mat: libremetaverse::assets::AssetMaterial,
|
||||||
) -> Result<(), crate::Error> {
|
) -> Result<(), crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
@@ -29960,11 +29963,11 @@ pub mod assets {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.Decode`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.Decode`.
|
||||||
pub fn decode(&self) -> Result<bool, crate::Error> {
|
pub fn decode(&mut self) -> Result<bool, crate::Error> {
|
||||||
libremetaverse_types::not_implemented("M:LibreMetaverse.Assets.AssetMaterial.Decode")
|
libremetaverse_types::not_implemented("M:LibreMetaverse.Assets.AssetMaterial.Decode")
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.Encode`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.Encode`.
|
||||||
pub fn encode(&self) -> Result<(), crate::Error> {
|
pub fn encode(&mut self) -> Result<(), crate::Error> {
|
||||||
libremetaverse_types::not_implemented("M:LibreMetaverse.Assets.AssetMaterial.Encode")
|
libremetaverse_types::not_implemented("M:LibreMetaverse.Assets.AssetMaterial.Encode")
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.FromOverrideOsd(LibreMetaverse.StructuredData.OSDMap)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.FromOverrideOsd(LibreMetaverse.StructuredData.OSDMap)`.
|
||||||
@@ -29977,7 +29980,7 @@ pub mod assets {
|
|||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetAlphaCutoff(System.Single,System.Boolean)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetAlphaCutoff(System.Single,System.Boolean)`.
|
||||||
pub fn set_alpha_cutoff_with_single_boolean(
|
pub fn set_alpha_cutoff_with_single_boolean(
|
||||||
&self,
|
&mut self,
|
||||||
cutoff: f32,
|
cutoff: f32,
|
||||||
for_override: Option<bool>,
|
for_override: Option<bool>,
|
||||||
) -> Result<(), crate::Error> {
|
) -> Result<(), crate::Error> {
|
||||||
@@ -29987,7 +29990,7 @@ pub mod assets {
|
|||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetAlphaMode(LibreMetaverse.Assets.GltfAlphaMode,System.Boolean)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetAlphaMode(LibreMetaverse.Assets.GltfAlphaMode,System.Boolean)`.
|
||||||
pub fn set_alpha_mode_with_gltf_alpha_mode_boolean(
|
pub fn set_alpha_mode_with_gltf_alpha_mode_boolean(
|
||||||
&self,
|
&mut self,
|
||||||
mode: libremetaverse::assets::GltfAlphaMode,
|
mode: libremetaverse::assets::GltfAlphaMode,
|
||||||
for_override: Option<bool>,
|
for_override: Option<bool>,
|
||||||
) -> Result<(), crate::Error> {
|
) -> Result<(), crate::Error> {
|
||||||
@@ -29997,7 +30000,7 @@ pub mod assets {
|
|||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetBaseColorFactor(LibreMetaverse.Color4,System.Boolean)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetBaseColorFactor(LibreMetaverse.Color4,System.Boolean)`.
|
||||||
pub fn set_base_color_factor_with_color4_boolean(
|
pub fn set_base_color_factor_with_color4_boolean(
|
||||||
&self,
|
&mut self,
|
||||||
color: libremetaverse_types::Color4,
|
color: libremetaverse_types::Color4,
|
||||||
for_override: Option<bool>,
|
for_override: Option<bool>,
|
||||||
) -> Result<(), crate::Error> {
|
) -> Result<(), crate::Error> {
|
||||||
@@ -30006,14 +30009,14 @@ pub mod assets {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetBaseMaterial`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetBaseMaterial`.
|
||||||
pub fn set_base_material(&self) -> Result<(), crate::Error> {
|
pub fn set_base_material(&mut self) -> Result<(), crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
"M:LibreMetaverse.Assets.AssetMaterial.SetBaseMaterial",
|
"M:LibreMetaverse.Assets.AssetMaterial.SetBaseMaterial",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetDoubleSided(System.Boolean,System.Boolean)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetDoubleSided(System.Boolean,System.Boolean)`.
|
||||||
pub fn set_double_sided_with_boolean_boolean(
|
pub fn set_double_sided_with_boolean_boolean(
|
||||||
&self,
|
&mut self,
|
||||||
double_sided: bool,
|
double_sided: bool,
|
||||||
for_override: Option<bool>,
|
for_override: Option<bool>,
|
||||||
) -> Result<(), crate::Error> {
|
) -> Result<(), crate::Error> {
|
||||||
@@ -30023,7 +30026,7 @@ pub mod assets {
|
|||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetEmissiveFactor(LibreMetaverse.Vector3,System.Boolean)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetEmissiveFactor(LibreMetaverse.Vector3,System.Boolean)`.
|
||||||
pub fn set_emissive_factor_with_vector3_boolean(
|
pub fn set_emissive_factor_with_vector3_boolean(
|
||||||
&self,
|
&mut self,
|
||||||
color: libremetaverse_types::Vector3,
|
color: libremetaverse_types::Vector3,
|
||||||
for_override: Option<bool>,
|
for_override: Option<bool>,
|
||||||
) -> Result<(), crate::Error> {
|
) -> Result<(), crate::Error> {
|
||||||
@@ -30033,7 +30036,7 @@ pub mod assets {
|
|||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetMetallicFactor(System.Single,System.Boolean)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetMetallicFactor(System.Single,System.Boolean)`.
|
||||||
pub fn set_metallic_factor_with_single_boolean(
|
pub fn set_metallic_factor_with_single_boolean(
|
||||||
&self,
|
&mut self,
|
||||||
metallic: f32,
|
metallic: f32,
|
||||||
for_override: Option<bool>,
|
for_override: Option<bool>,
|
||||||
) -> Result<(), crate::Error> {
|
) -> Result<(), crate::Error> {
|
||||||
@@ -30043,7 +30046,7 @@ pub mod assets {
|
|||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetRoughnessFactor(System.Single,System.Boolean)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetRoughnessFactor(System.Single,System.Boolean)`.
|
||||||
pub fn set_roughness_factor_with_single_boolean(
|
pub fn set_roughness_factor_with_single_boolean(
|
||||||
&self,
|
&mut self,
|
||||||
roughness: f32,
|
roughness: f32,
|
||||||
for_override: Option<bool>,
|
for_override: Option<bool>,
|
||||||
) -> Result<(), crate::Error> {
|
) -> Result<(), crate::Error> {
|
||||||
@@ -30053,7 +30056,7 @@ pub mod assets {
|
|||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetTextureId(System.Int32,LibreMetaverse.UUID,System.Boolean)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetTextureId(System.Int32,LibreMetaverse.UUID,System.Boolean)`.
|
||||||
pub fn set_texture_id(
|
pub fn set_texture_id(
|
||||||
&self,
|
&mut self,
|
||||||
slot: i32,
|
slot: i32,
|
||||||
id: libremetaverse_types::UUID,
|
id: libremetaverse_types::UUID,
|
||||||
for_override: Option<bool>,
|
for_override: Option<bool>,
|
||||||
@@ -30064,7 +30067,7 @@ pub mod assets {
|
|||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetTextureOffset(System.Int32,LibreMetaverse.Vector2)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetTextureOffset(System.Int32,LibreMetaverse.Vector2)`.
|
||||||
pub fn set_texture_offset(
|
pub fn set_texture_offset(
|
||||||
&self,
|
&mut self,
|
||||||
slot: i32,
|
slot: i32,
|
||||||
offset: libremetaverse_types::Vector2,
|
offset: libremetaverse_types::Vector2,
|
||||||
) -> Result<(), crate::Error> {
|
) -> Result<(), crate::Error> {
|
||||||
@@ -30073,14 +30076,18 @@ pub mod assets {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetTextureRotation(System.Int32,System.Single)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetTextureRotation(System.Int32,System.Single)`.
|
||||||
pub fn set_texture_rotation(&self, slot: i32, rotation: f32) -> Result<(), crate::Error> {
|
pub fn set_texture_rotation(
|
||||||
|
&mut self,
|
||||||
|
slot: i32,
|
||||||
|
rotation: f32,
|
||||||
|
) -> Result<(), crate::Error> {
|
||||||
libremetaverse_types::not_implemented(
|
libremetaverse_types::not_implemented(
|
||||||
"M:LibreMetaverse.Assets.AssetMaterial.SetTextureRotation(System.Int32,System.Single)",
|
"M:LibreMetaverse.Assets.AssetMaterial.SetTextureRotation(System.Int32,System.Single)",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetTextureScale(System.Int32,LibreMetaverse.Vector2)`.
|
/// C# member: `M:LibreMetaverse.Assets.AssetMaterial.SetTextureScale(System.Int32,LibreMetaverse.Vector2)`.
|
||||||
pub fn set_texture_scale(
|
pub fn set_texture_scale(
|
||||||
&self,
|
&mut self,
|
||||||
slot: i32,
|
slot: i32,
|
||||||
scale: libremetaverse_types::Vector2,
|
scale: libremetaverse_types::Vector2,
|
||||||
) -> Result<(), crate::Error> {
|
) -> Result<(), crate::Error> {
|
||||||
|
|||||||
@@ -4,6 +4,27 @@ extern crate self as libremetaverse;
|
|||||||
|
|
||||||
mod generated;
|
mod generated;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod asset_archive_semantics;
|
||||||
|
|
||||||
|
type Terrain = Vec<Vec<f32>>;
|
||||||
|
type TerrainLoaded = Box<dyn Fn(Terrain, i64, i64) + Send + Sync>;
|
||||||
|
|
||||||
|
impl assets::OarFile {
|
||||||
|
#[allow(dead_code)]
|
||||||
|
fn load_terrain(
|
||||||
|
_file_path: &str,
|
||||||
|
_data: Vec<u8>,
|
||||||
|
_callback: TerrainLoaded,
|
||||||
|
_bytes_read: i64,
|
||||||
|
_total_bytes: i64,
|
||||||
|
) -> Result<bool, Error> {
|
||||||
|
libremetaverse_types::not_implemented(
|
||||||
|
"M:LibreMetaverse.Assets.OarFile.LoadTerrain(System.String,System.Byte[],LibreMetaverse.Assets.OarFile.TerrainLoadedCallback,System.Int64,System.Int64)",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub use generated::*;
|
pub use generated::*;
|
||||||
pub use libremetaverse_imaging as imaging_abstractions;
|
pub use libremetaverse_imaging as imaging_abstractions;
|
||||||
pub use libremetaverse_structured_data as structured_data;
|
pub use libremetaverse_structured_data as structured_data;
|
||||||
|
|||||||
116
tests/PARITY.md
116
tests/PARITY.md
@@ -5,8 +5,8 @@ Generated from LibreMetaverse `2aa70bb68513b39795da5d13c88f31b86e85a3ba`. Stable
|
|||||||
## Status
|
## Status
|
||||||
|
|
||||||
- Total: **1,289**
|
- Total: **1,289**
|
||||||
- Pending/unreviewed: **1,133**
|
- Pending/unreviewed: **1,077**
|
||||||
- Translated/reviewed: **149**
|
- Translated/reviewed: **205**
|
||||||
- Ignored live/reviewed: **3** (19 upstream live candidates)
|
- Ignored live/reviewed: **3** (19 upstream live candidates)
|
||||||
- Benchmarks/reviewed: **4** (4 upstream benchmark candidates)
|
- Benchmarks/reviewed: **4** (4 upstream benchmark candidates)
|
||||||
- Drifted: **0**
|
- Drifted: **0**
|
||||||
@@ -103,19 +103,19 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:168` | `Appearance` | `` | `pending source translation` | `pending` | `af99909259d531024895ce7ea325b49927a12daa886a35eab3d52e3f8fc76921` |
|
| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:168` | `Appearance` | `` | `pending source translation` | `pending` | `af99909259d531024895ce7ea325b49927a12daa886a35eab3d52e3f8fc76921` |
|
||||||
| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:176` | `Appearance` | `` | `pending source translation` | `pending` | `0aec57fab35764525195e6c0e08a63ff10a467be684295381731c04e836539b5` |
|
| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:176` | `Appearance` | `` | `pending source translation` | `pending` | `0aec57fab35764525195e6c0e08a63ff10a467be684295381731c04e836539b5` |
|
||||||
| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:199` | `Appearance` | `` | `pending source translation` | `pending` | `ff87dd3a506027ad248006b3b55d85a18b0810bc5b4e3a72eb81d31ebbe4184a` |
|
| `LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams::test` | `AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams` | `` | `LibreMetaverse.Tests/AppearanceTests.cs:199` | `Appearance` | `` | `pending source translation` | `pending` | `ff87dd3a506027ad248006b3b55d85a18b0810bc5b4e3a72eb81d31ebbe4184a` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_OverrideToDefault_IsNudgedOffDefault::test` | `AssetMaterialOverrideTests.SetBaseColorFactor_OverrideToDefault_IsNudgedOffDefault` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:43` | `` | `` | `pending source translation` | `pending` | `df553fd4df83e48d4dd74cdd8aa15a737ea3a416bcad802f7110bbfe79928a31` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_OverrideToDefault_IsNudgedOffDefault::test` | `AssetMaterialOverrideTests.SetBaseColorFactor_OverrideToDefault_IsNudgedOffDefault` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:43` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:117 (`base_color_override_to_default_is_nudged`)` | `translated` | `df553fd4df83e48d4dd74cdd8aa15a737ea3a416bcad802f7110bbfe79928a31` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_NotOverride_LeavesExactDefaultUnchanged::test` | `AssetMaterialOverrideTests.SetBaseColorFactor_NotOverride_LeavesExactDefaultUnchanged` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:52` | `` | `` | `pending source translation` | `pending` | `fec94fcfac0f36cc5813ed087a30e04fcc9815bc02072ea3f5dd282b8698a89c` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_NotOverride_LeavesExactDefaultUnchanged::test` | `AssetMaterialOverrideTests.SetBaseColorFactor_NotOverride_LeavesExactDefaultUnchanged` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:52` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:131 (`base_color_non_override_keeps_default`)` | `translated` | `fec94fcfac0f36cc5813ed087a30e04fcc9815bc02072ea3f5dd282b8698a89c` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetMetallicFactor_OverrideToOne_ClampsBelowDefault::test` | `AssetMaterialOverrideTests.SetMetallicFactor_OverrideToOne_ClampsBelowDefault` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:61` | `` | `` | `pending source translation` | `pending` | `7fcee795160428082f6e579881867c7b6c83f31549077fc28a46d18c75c485c9` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetMetallicFactor_OverrideToOne_ClampsBelowDefault::test` | `AssetMaterialOverrideTests.SetMetallicFactor_OverrideToOne_ClampsBelowDefault` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:61` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:145 (`metallic_override_to_one_clamps_below_default`)` | `translated` | `7fcee795160428082f6e579881867c7b6c83f31549077fc28a46d18c75c485c9` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetAlphaMode_OverrideToDefaultOpaque_SetsOverrideFlag::test` | `AssetMaterialOverrideTests.SetAlphaMode_OverrideToDefaultOpaque_SetsOverrideFlag` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:71` | `` | `` | `pending source translation` | `pending` | `8af09d12a58083657e27e285802bb3a6a1d1c136397cea53865d964006343715` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetAlphaMode_OverrideToDefaultOpaque_SetsOverrideFlag::test` | `AssetMaterialOverrideTests.SetAlphaMode_OverrideToDefaultOpaque_SetsOverrideFlag` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:71` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:159 (`alpha_mode_override_sets_flag`)` | `translated` | `8af09d12a58083657e27e285802bb3a6a1d1c136397cea53865d964006343715` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetTextureId_OverrideToNull_UsesSentinelUuid::test` | `AssetMaterialOverrideTests.SetTextureId_OverrideToNull_UsesSentinelUuid` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:80` | `` | `` | `pending source translation` | `pending` | `d9ebf410d2a55c3619b99524a571396fb268e5edd41de955cb86e4ec8cc55c78` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetTextureId_OverrideToNull_UsesSentinelUuid::test` | `AssetMaterialOverrideTests.SetTextureId_OverrideToNull_UsesSentinelUuid` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:80` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:169 (`null_texture_override_uses_sentinel`)` | `translated` | `d9ebf410d2a55c3619b99524a571396fb268e5edd41de955cb86e4ec8cc55c78` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_SentinelTexture_ClearsBaseTexture::test` | `AssetMaterialOverrideTests.ApplyOverride_SentinelTexture_ClearsBaseTexture` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:89` | `` | `` | `pending source translation` | `pending` | `17fd8cdb12ed5d1d0aa1b0a05dbcc357f75aa350d5079b066c957da459d9f628` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_SentinelTexture_ClearsBaseTexture::test` | `AssetMaterialOverrideTests.ApplyOverride_SentinelTexture_ClearsBaseTexture` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:89` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:182 (`sentinel_override_clears_base_texture`)` | `translated` | `17fd8cdb12ed5d1d0aa1b0a05dbcc357f75aa350d5079b066c957da459d9f628` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_UntouchedTexture_LeavesBaseTextureAlone::test` | `AssetMaterialOverrideTests.ApplyOverride_UntouchedTexture_LeavesBaseTextureAlone` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:103` | `` | `` | `pending source translation` | `pending` | `80ec5e369e3682d92ec6996841b15bda38a3ef6edcd36a2fd9893d8c15459348` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_UntouchedTexture_LeavesBaseTextureAlone::test` | `AssetMaterialOverrideTests.ApplyOverride_UntouchedTexture_LeavesBaseTextureAlone` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:103` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:203 (`untouched_override_keeps_base_texture`)` | `translated` | `80ec5e369e3682d92ec6996841b15bda38a3ef6edcd36a2fd9893d8c15459348` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_ChangedScalar_ReplacesBaseValue::test` | `AssetMaterialOverrideTests.ApplyOverride_ChangedScalar_ReplacesBaseValue` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:116` | `` | `` | `pending source translation` | `pending` | `4c305c54c4e451932fbd4a4719957f92f38a7f7d28259559b43cb95fcf9250d1` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_ChangedScalar_ReplacesBaseValue::test` | `AssetMaterialOverrideTests.ApplyOverride_ChangedScalar_ReplacesBaseValue` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:116` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:220 (`changed_scalar_override_replaces_base`)` | `translated` | `4c305c54c4e451932fbd4a4719957f92f38a7f7d28259559b43cb95fcf9250d1` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseMaterial_ResetsFieldsButKeepsTransforms::test` | `AssetMaterialOverrideTests.SetBaseMaterial_ResetsFieldsButKeepsTransforms` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:128` | `` | `` | `pending source translation` | `pending` | `39312602e736fd8607a41d9e6b6348bfaf6e659cf3f63100ee15edd20b672306` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseMaterial_ResetsFieldsButKeepsTransforms::test` | `AssetMaterialOverrideTests.SetBaseMaterial_ResetsFieldsButKeepsTransforms` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:128` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:232 (`set_base_material_keeps_texture_transforms`)` | `translated` | `39312602e736fd8607a41d9e6b6348bfaf6e659cf3f63100ee15edd20b672306` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_RoundTrip_PreservesOverriddenFields::test` | `AssetMaterialOverrideTests.ToOverrideOsd_RoundTrip_PreservesOverriddenFields` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:142` | `` | `` | `pending source translation` | `pending` | `8d542528a14e3b4dcb74ea8a940a44673aada51f98baf8abcdd59a06f36e3cb0` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_RoundTrip_PreservesOverriddenFields::test` | `AssetMaterialOverrideTests.ToOverrideOsd_RoundTrip_PreservesOverriddenFields` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:142` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:257 (`override_osd_round_trip_preserves_fields`)` | `translated` | `8d542528a14e3b4dcb74ea8a940a44673aada51f98baf8abcdd59a06f36e3cb0` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_UntouchedMaterial_ProducesEmptyMap::test` | `AssetMaterialOverrideTests.ToOverrideOsd_UntouchedMaterial_ProducesEmptyMap` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:161` | `` | `` | `pending source translation` | `pending` | `c9e29f7ec0e6b28579e0499e3ec89841e01a313a9386ba60257e5e701129b1c2` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_UntouchedMaterial_ProducesEmptyMap::test` | `AssetMaterialOverrideTests.ToOverrideOsd_UntouchedMaterial_ProducesEmptyMap` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:161` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:290 (`untouched_material_override_osd_is_empty`)` | `translated` | `c9e29f7ec0e6b28579e0499e3ec89841e01a313a9386ba60257e5e701129b1c2` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_OverrideToDefaultRoughness_StillEncodesField::test` | `AssetMaterialOverrideTests.ToOverrideOsd_OverrideToDefaultRoughness_StillEncodesField` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:170` | `` | `` | `pending source translation` | `pending` | `4ea9920c6709bd29858a8da66313fcee5ebebd646743c5d822dd6c9e477bf3b4` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_OverrideToDefaultRoughness_StillEncodesField::test` | `AssetMaterialOverrideTests.ToOverrideOsd_OverrideToDefaultRoughness_StillEncodesField` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:170` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:298 (`default_roughness_override_is_encoded`)` | `translated` | `4ea9920c6709bd29858a8da66313fcee5ebebd646743c5d822dd6c9e477bf3b4` |
|
||||||
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToJson_RoundTrip_PreservesNameAndColor::test` | `AssetMaterialOverrideTests.ToJson_RoundTrip_PreservesNameAndColor` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:184` | `` | `` | `pending source translation` | `pending` | `d7ae4270d82671a970fc1b6457292860d24481dd84e9fb919ae60fded5f1914e` |
|
| `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToJson_RoundTrip_PreservesNameAndColor::test` | `AssetMaterialOverrideTests.ToJson_RoundTrip_PreservesNameAndColor` | `` | `LibreMetaverse.Tests/AssetMaterialOverrideTests.cs:184` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:317 (`material_json_round_trip_preserves_name_and_color`)` | `translated` | `d7ae4270d82671a970fc1b6457292860d24481dd84e9fb919ae60fded5f1914e` |
|
||||||
| `LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.RequestOwnAvatarTextures_WhenNotConnected_DoesNotThrow::test` | `AvatarManagerTests.RequestOwnAvatarTextures_WhenNotConnected_DoesNotThrow` | `` | `LibreMetaverse.Tests/AvatarManagerTests.cs:42` | `Appearance` | `` | `pending source translation` | `pending` | `bf3539f68a0adc58c2166289ca1c75f6ff03906f71ffe2fb749f6990404b541a` |
|
| `LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.RequestOwnAvatarTextures_WhenNotConnected_DoesNotThrow::test` | `AvatarManagerTests.RequestOwnAvatarTextures_WhenNotConnected_DoesNotThrow` | `` | `LibreMetaverse.Tests/AvatarManagerTests.cs:42` | `Appearance` | `` | `pending source translation` | `pending` | `bf3539f68a0adc58c2166289ca1c75f6ff03906f71ffe2fb749f6990404b541a` |
|
||||||
| `LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_AcceptsHigherVersion::test` | `AvatarManagerTests.UpdateLastReceivedCOFVersion_AcceptsHigherVersion` | `` | `LibreMetaverse.Tests/AvatarManagerTests.cs:55` | `Appearance` | `` | `pending source translation` | `pending` | `3656364491dcd7a05c868b11ea0d8be48609d10c6054b9696f54cbac10cfe6df` |
|
| `LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_AcceptsHigherVersion::test` | `AvatarManagerTests.UpdateLastReceivedCOFVersion_AcceptsHigherVersion` | `` | `LibreMetaverse.Tests/AvatarManagerTests.cs:55` | `Appearance` | `` | `pending source translation` | `pending` | `3656364491dcd7a05c868b11ea0d8be48609d10c6054b9696f54cbac10cfe6df` |
|
||||||
| `LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_RejectsLowerVersion::test` | `AvatarManagerTests.UpdateLastReceivedCOFVersion_RejectsLowerVersion` | `` | `LibreMetaverse.Tests/AvatarManagerTests.cs:68` | `Appearance` | `` | `pending source translation` | `pending` | `f4a827fcace9d50306a8c375183e056140996d2a39b02e4dd12fc6cc79e5d0f0` |
|
| `LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_RejectsLowerVersion::test` | `AvatarManagerTests.UpdateLastReceivedCOFVersion_RejectsLowerVersion` | `` | `LibreMetaverse.Tests/AvatarManagerTests.cs:68` | `Appearance` | `` | `pending source translation` | `pending` | `f4a827fcace9d50306a8c375183e056140996d2a39b02e4dd12fc6cc79e5d0f0` |
|
||||||
@@ -172,7 +172,7 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.ObjectManager_Null_Throws::test` | `ConstructorNullArgumentTests.ObjectManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:33` | `` | `` | `pending source translation` | `pending` | `8a11feba0edfb35e5dd99f681182e8f5a5cf8a3f738211b45a683a8a2ad45ddb` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.ObjectManager_Null_Throws::test` | `ConstructorNullArgumentTests.ObjectManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:33` | `` | `` | `pending source translation` | `pending` | `8a11feba0edfb35e5dd99f681182e8f5a5cf8a3f738211b45a683a8a2ad45ddb` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AgentManager_Null_Throws::test` | `ConstructorNullArgumentTests.AgentManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:39` | `` | `` | `pending source translation` | `pending` | `d86e41b6cdd03063685aa330c31b9a274c1d400b9a461abf3065fe185fe0bbf0` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AgentManager_Null_Throws::test` | `ConstructorNullArgumentTests.AgentManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:39` | `` | `` | `pending source translation` | `pending` | `d86e41b6cdd03063685aa330c31b9a274c1d400b9a461abf3065fe185fe0bbf0` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AvatarManager_Null_Throws::test` | `ConstructorNullArgumentTests.AvatarManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:45` | `` | `` | `pending source translation` | `pending` | `54f23cbf0ba87b0525c2914e78d75808e93fd1c460fc0bec4d15f09575b1431c` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AvatarManager_Null_Throws::test` | `ConstructorNullArgumentTests.AvatarManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:45` | `` | `` | `pending source translation` | `pending` | `54f23cbf0ba87b0525c2914e78d75808e93fd1c460fc0bec4d15f09575b1431c` |
|
||||||
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AssetManager_Null_Throws::test` | `ConstructorNullArgumentTests.AssetManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:51` | `` | `` | `pending source translation` | `pending` | `4fa1be8b233dacf6a5955359f2197ff77ae85ffbf2c3c68fcd8cbe672c2c5f91` |
|
| `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AssetManager_Null_Throws::test` | `ConstructorNullArgumentTests.AssetManager_Null_Throws` | `` | `LibreMetaverse.Tests/ConstructorNullArgumentTests.cs:51` | `` | `` | `tests/compat/tests/asset_capability_semantics.rs:821 (`asset_manager_none_client_is_argument_null`)` | `translated` | `4fa1be8b233dacf6a5955359f2197ff77ae85ffbf2c3c68fcd8cbe672c2c5f91` |
|
||||||
| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException::test` | `CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:60` | `` | `` | `pending source translation` | `pending` | `243079029ec81f92ffbc587007a2421389963f72c7843786c5b9a8634a7ddca3` |
|
| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException::test` | `CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:60` | `` | `` | `pending source translation` | `pending` | `243079029ec81f92ffbc587007a2421389963f72c7843786c5b9a8634a7ddca3` |
|
||||||
| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow::test` | `CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:67` | `` | `` | `pending source translation` | `pending` | `1d0daac0bfa091bc3c3bffddc32a1511295dd7101f8ab5dfbf305b13b9ac7405` |
|
| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow::test` | `CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:67` | `` | `` | `pending source translation` | `pending` | `1d0daac0bfa091bc3c3bffddc32a1511295dd7101f8ab5dfbf305b13b9ac7405` |
|
||||||
| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow::test` | `CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:77` | `` | `` | `pending source translation` | `pending` | `124b41c342a295f02e9d5991d1dead0ff3e9a780f96424b88f75117ca206460b` |
|
| `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow::test` | `CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow` | `` | `LibreMetaverse.Tests/CurrentOutfitFolderTests.cs:77` | `` | `` | `pending source translation` | `pending` | `124b41c342a295f02e9d5991d1dead0ff3e9a780f96424b88f75117ca206460b` |
|
||||||
@@ -236,28 +236,28 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:92` | `Experience` | `` | `pending source translation` | `pending` | `cf095ab428713004ebac6e1915a47ae0c03bd2958addbba2a39fd2f0edf51a74` |
|
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:92` | `Experience` | `` | `pending source translation` | `pending` | `cf095ab428713004ebac6e1915a47ae0c03bd2958addbba2a39fd2f0edf51a74` |
|
||||||
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:101` | `Experience` | `` | `pending source translation` | `pending` | `af084d1ab7a11079e6251865e8fd5aecfde38d2df359ebc1e208bc74925935c0` |
|
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:101` | `Experience` | `` | `pending source translation` | `pending` | `af084d1ab7a11079e6251865e8fd5aecfde38d2df359ebc1e208bc74925935c0` |
|
||||||
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:110` | `Experience` | `` | `pending source translation` | `pending` | `93204469ecfec2f3f4eb6838c99f6e2baf09bf76a075958d1ed369ba03767158` |
|
| `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget::test` | `ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget` | `` | `LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs:110` | `Experience` | `` | `pending source translation` | `pending` | `93204469ecfec2f3f4eb6838c99f6e2baf09bf76a075958d1ed369ba03767158` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SetMaterialOverrideAsync_HappyPath_PostsBareArrayWithGltfJson::test` | `GLTFMaterialOverrideCapTests.SetMaterialOverrideAsync_HappyPath_PostsBareArrayWithGltfJson` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:64` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `0c51b7b793111f5433e52057f26fa5a98d983e7230fefeb61a7b3408e97f28ee` |
|
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SetMaterialOverrideAsync_HappyPath_PostsBareArrayWithGltfJson::test` | `GLTFMaterialOverrideCapTests.SetMaterialOverrideAsync_HappyPath_PostsBareArrayWithGltfJson` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:64` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:179 (`set_material_override_posts_bare_array_with_gltf_json`)` | `translated` | `0c51b7b793111f5433e52057f26fa5a98d983e7230fefeb61a7b3408e97f28ee` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ClearMaterialOverrideAsync_SendsEmptyGltfJson::test` | `GLTFMaterialOverrideCapTests.ClearMaterialOverrideAsync_SendsEmptyGltfJson` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:86` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `8394d063ea71447d9ce2b76fd00be1d10967f9193e1eb909c5b9f2da56eec812` |
|
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ClearMaterialOverrideAsync_SendsEmptyGltfJson::test` | `GLTFMaterialOverrideCapTests.ClearMaterialOverrideAsync_SendsEmptyGltfJson` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:86` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:215 (`clear_material_override_sends_empty_gltf_json`)` | `translated` | `8394d063ea71447d9ce2b76fd00be1d10967f9193e1eb909c5b9f2da56eec812` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ApplyMaterialAsync_WithoutOverride_SendsAssetIdOnly::test` | `GLTFMaterialOverrideCapTests.ApplyMaterialAsync_WithoutOverride_SendsAssetIdOnly` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:100` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `1db03ab6710ecf532644398d1fef5e82520e1206058d66fb15c8885fdc8f8363` |
|
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ApplyMaterialAsync_WithoutOverride_SendsAssetIdOnly::test` | `GLTFMaterialOverrideCapTests.ApplyMaterialAsync_WithoutOverride_SendsAssetIdOnly` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:100` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:237 (`apply_material_without_override_sends_asset_id_only`)` | `translated` | `1db03ab6710ecf532644398d1fef5e82520e1206058d66fb15c8885fdc8f8363` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_MultipleEntries_SendsSingleArrayBody::test` | `GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_MultipleEntries_SendsSingleArrayBody` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:115` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `621dca88e7f1c9e024563204ca05c3c8d9a03c4b5a7b31ec1c006abe6732b47b` |
|
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_MultipleEntries_SendsSingleArrayBody::test` | `GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_MultipleEntries_SendsSingleArrayBody` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:115` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:263 (`material_updates_send_one_array_body`)` | `translated` | `621dca88e7f1c9e024563204ca05c3c8d9a03c4b5a7b31ec1c006abe6732b47b` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_ServerRejects_ReturnsFalse::test` | `GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_ServerRejects_ReturnsFalse` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:132` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `e9fbd95fff84695e2cb1a35943bda768f00cf9015b25e0ae1505dce4dde603a4` |
|
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_ServerRejects_ReturnsFalse::test` | `GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_ServerRejects_ReturnsFalse` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:132` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:288 (`material_updates_server_rejection_returns_false`)` | `translated` | `e9fbd95fff84695e2cb1a35943bda768f00cf9015b25e0ae1505dce4dde603a4` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:143` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `fdceb6bf865cb23386a6b82a9741f230e5c22b0ec6d37bc2ac8478f29292a49f` |
|
| `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs:143` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:309 (`material_updates_without_capability_make_no_request`)` | `translated` | `fdceb6bf865cb23386a6b82a9741f230e5c22b0ec6d37bc2ac8478f29292a49f` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_HappyPath_PostsMetadataThenJsonAndReturnsNewAsset::test` | `GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_HappyPath_PostsMetadataThenJsonAndReturnsNewAsset` | `` | `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs:68` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `5ac0e3c27fa6ebfddc9d7582aefb0684a676413948b055382c43b1b0b1cd7e7e` |
|
| `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_HappyPath_PostsMetadataThenJsonAndReturnsNewAsset::test` | `GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_HappyPath_PostsMetadataThenJsonAndReturnsNewAsset` | `` | `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs:68` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:325 (`material_agent_upload_posts_metadata_then_json`)` | `translated` | `5ac0e3c27fa6ebfddc9d7582aefb0684a676413948b055382c43b1b0b1cd7e7e` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialTaskInventoryAsync_HappyPath_PostsItemIdAndTaskId::test` | `GLTFMaterialUploadTests.RequestUpdateMaterialTaskInventoryAsync_HappyPath_PostsItemIdAndTaskId` | `` | `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs:92` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `7ac0e7d210b1aefa795e479f4da0d2dd4caae0b3bbe84ca124707c3ae005bbbd` |
|
| `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialTaskInventoryAsync_HappyPath_PostsItemIdAndTaskId::test` | `GLTFMaterialUploadTests.RequestUpdateMaterialTaskInventoryAsync_HappyPath_PostsItemIdAndTaskId` | `` | `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs:92` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:356 (`material_task_upload_posts_item_and_task_ids`)` | `translated` | `7ac0e7d210b1aefa795e479f4da0d2dd4caae0b3bbe84ca124707c3ae005bbbd` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_NoCapability_Throws::test` | `GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_NoCapability_Throws` | `` | `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs:115` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `325269807d778264e571d1518ca9a2ca69a27ba67ad689e580f2636ab595f335` |
|
| `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_NoCapability_Throws::test` | `GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_NoCapability_Throws` | `` | `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs:115` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:384 (`material_agent_upload_without_capability_is_invalid_operation`)` | `translated` | `325269807d778264e571d1518ca9a2ca69a27ba67ad689e580f2636ab595f335` |
|
||||||
| `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_UploadedJsonRoundTripsMaterial::test` | `GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_UploadedJsonRoundTripsMaterial` | `` | `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs:131` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `fd059dfc8c9299c3b6583b3b47ba18ae9c92e3ad923f88634019b0ab9f34d401` |
|
| `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_UploadedJsonRoundTripsMaterial::test` | `GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_UploadedJsonRoundTripsMaterial` | `` | `LibreMetaverse.Tests/GLTFMaterialUploadTests.cs:131` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:400 (`uploaded_material_json_round_trips`)` | `translated` | `fd059dfc8c9299c3b6583b3b47ba18ae9c92e3ad923f88634019b0ab9f34d401` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesSceneGraph::test` | `GltfDocumentTests.LoadGltf_ParsesSceneGraph` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:122` | `` | `` | `pending source translation` | `pending` | `e20583d8de31f793d1dc49d1dfde89e1eb8c00186359e7df4184e862ec9ed649` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesSceneGraph::test` | `GltfDocumentTests.LoadGltf_ParsesSceneGraph` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:122` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:336 (`gltf_parses_scene_graph`)` | `translated` | `e20583d8de31f793d1dc49d1dfde89e1eb8c00186359e7df4184e862ec9ed649` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesMeshAndPrimitive::test` | `GltfDocumentTests.LoadGltf_ParsesMeshAndPrimitive` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:136` | `` | `` | `pending source translation` | `pending` | `ef6a76308db1966423c7746f5414f3d0553587efc388bbedb962f38cc122ecaf` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesMeshAndPrimitive::test` | `GltfDocumentTests.LoadGltf_ParsesMeshAndPrimitive` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:136` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:349 (`gltf_parses_mesh_and_primitive`)` | `translated` | `ef6a76308db1966423c7746f5414f3d0553587efc388bbedb962f38cc122ecaf` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesMaterial::test` | `GltfDocumentTests.LoadGltf_ParsesMaterial` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:152` | `` | `` | `pending source translation` | `pending` | `0147b4d7102c5223f247f69fa4cf3daeb0aa6300ad46ef34d6a17163b694c13e` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesMaterial::test` | `GltfDocumentTests.LoadGltf_ParsesMaterial` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:152` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:363 (`gltf_parses_material`)` | `translated` | `0147b4d7102c5223f247f69fa4cf3daeb0aa6300ad46ef34d6a17163b694c13e` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetPositions_ReturnsCorrectTriangle::test` | `GltfDocumentTests.GetPositions_ReturnsCorrectTriangle` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:169` | `` | `` | `pending source translation` | `pending` | `c3d444122ab73794a011d5a5aafb0c2aa030975393f967e871dc88db200f5e96` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetPositions_ReturnsCorrectTriangle::test` | `GltfDocumentTests.GetPositions_ReturnsCorrectTriangle` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:169` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:377 (`gltf_positions_are_correct_triangle`)` | `translated` | `c3d444122ab73794a011d5a5aafb0c2aa030975393f967e871dc88db200f5e96` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetIndices_ReturnsCorrectValues::test` | `GltfDocumentTests.GetIndices_ReturnsCorrectValues` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:184` | `` | `` | `pending source translation` | `pending` | `fa39e87a3dfee7258d9a95907a97cbb107f5add7d6a6f9d9800249bb67e2fc58` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetIndices_ReturnsCorrectValues::test` | `GltfDocumentTests.GetIndices_ReturnsCorrectValues` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:184` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:395 (`gltf_indices_are_correct`)` | `translated` | `fa39e87a3dfee7258d9a95907a97cbb107f5add7d6a6f9d9800249bb67e2fc58` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetPositions_EmptyWhenNoAttribute::test` | `GltfDocumentTests.GetPositions_EmptyWhenNoAttribute` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:197` | `` | `` | `pending source translation` | `pending` | `06c691911ee6933f1884f6540d69afafa1f272acfed827c628580438204d9b4b` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetPositions_EmptyWhenNoAttribute::test` | `GltfDocumentTests.GetPositions_EmptyWhenNoAttribute` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:197` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:405 (`gltf_positions_empty_without_attribute`)` | `translated` | `06c691911ee6933f1884f6540d69afafa1f272acfed827c628580438204d9b4b` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetNormals_EmptyWhenNoAttribute::test` | `GltfDocumentTests.GetNormals_EmptyWhenNoAttribute` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:205` | `` | `` | `pending source translation` | `pending` | `e04480b0b9e23cb561cc55e744ebd85203c759f98ad69febeeb291919f0d91af` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetNormals_EmptyWhenNoAttribute::test` | `GltfDocumentTests.GetNormals_EmptyWhenNoAttribute` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:205` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:419 (`gltf_normals_empty_without_attribute`)` | `translated` | `e04480b0b9e23cb561cc55e744ebd85203c759f98ad69febeeb291919f0d91af` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ToJson_RoundTrip_PreservesSceneGraph::test` | `GltfDocumentTests.ToJson_RoundTrip_PreservesSceneGraph` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:215` | `` | `` | `pending source translation` | `pending` | `41c385b7bde3f8e4f4ad98d4f1f737fc6ccc241c2613526fd745eb35430386b2` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ToJson_RoundTrip_PreservesSceneGraph::test` | `GltfDocumentTests.ToJson_RoundTrip_PreservesSceneGraph` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:215` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:432 (`gltf_json_round_trip_preserves_scene_graph`)` | `translated` | `41c385b7bde3f8e4f4ad98d4f1f737fc6ccc241c2613526fd745eb35430386b2` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ToGlb_RoundTrip_PreservesGeometry::test` | `GltfDocumentTests.ToGlb_RoundTrip_PreservesGeometry` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:230` | `` | `` | `pending source translation` | `pending` | `1e97fe2d1492ac195f6a4386329c76ad131ab99a41b8e03216b1bab8b48fae36` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ToGlb_RoundTrip_PreservesGeometry::test` | `GltfDocumentTests.ToGlb_RoundTrip_PreservesGeometry` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:230` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:449 (`glb_round_trip_preserves_geometry`)` | `translated` | `1e97fe2d1492ac195f6a4386329c76ad131ab99a41b8e03216b1bab8b48fae36` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.Load_AutoDetectsGlbVsJson::test` | `GltfDocumentTests.Load_AutoDetectsGlbVsJson` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:252` | `` | `` | `pending source translation` | `pending` | `6d07930be2302e504ef9ece3fef10f47b855d33ae6c8bff152e82df0beb2a474` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.Load_AutoDetectsGlbVsJson::test` | `GltfDocumentTests.Load_AutoDetectsGlbVsJson` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:252` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:463 (`gltf_load_auto_detects_glb_and_json`)` | `translated` | `6d07930be2302e504ef9ece3fef10f47b855d33ae6c8bff152e82df0beb2a474` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ParseNode_TrsDefaults::test` | `GltfDocumentTests.ParseNode_TrsDefaults` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:268` | `` | `` | `pending source translation` | `pending` | `0f0fbe116d20276c2aee917b940bded9de277ed0b3e3b659844c5b3532755259` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ParseNode_TrsDefaults::test` | `GltfDocumentTests.ParseNode_TrsDefaults` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:268` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:475 (`gltf_node_trs_defaults`)` | `translated` | `0f0fbe116d20276c2aee917b940bded9de277ed0b3e3b659844c5b3532755259` |
|
||||||
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ParseNode_ExplicitMatrix::test` | `GltfDocumentTests.ParseNode_ExplicitMatrix` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:280` | `` | `` | `pending source translation` | `pending` | `197ba2ee3a66cbb7d927acea13ce9dc84e62af8a500d939957749039118755c8` |
|
| `LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ParseNode_ExplicitMatrix::test` | `GltfDocumentTests.ParseNode_ExplicitMatrix` | `` | `LibreMetaverse.Tests/GltfDocumentTests.cs:280` | `` | `` | `tests/compat/tests/asset_document_semantics.rs:495 (`gltf_node_explicit_matrix`)` | `translated` | `197ba2ee3a66cbb7d927acea13ce9dc84e62af8a500d939957749039118755c8` |
|
||||||
| `LibreMetaverse.Tests/GridClientTests.cs::GridClientTests.GetGridRegion::test` | `GridClientTests.GetGridRegion` | `` | `LibreMetaverse.Tests/GridClientTests.cs:90` | `GridClient, RequiresLiveServer` | `` | `tests/compat/tests/network_semantics.rs:372 (`get_grid_region_live`)` | `ignored-live` | `b0b72fc63fe829984167a479b763784c7daae8691399f3f3d2feb824090ad59f` |
|
| `LibreMetaverse.Tests/GridClientTests.cs::GridClientTests.GetGridRegion::test` | `GridClientTests.GetGridRegion` | `` | `LibreMetaverse.Tests/GridClientTests.cs:90` | `GridClient, RequiresLiveServer` | `` | `tests/compat/tests/network_semantics.rs:372 (`get_grid_region_live`)` | `ignored-live` | `b0b72fc63fe829984167a479b763784c7daae8691399f3f3d2feb824090ad59f` |
|
||||||
| `LibreMetaverse.Tests/HelpersZeroCodingTests.cs::HelpersZeroCodingTests.ZeroDecode_ValidInput_DecodesCorrectly::test` | `HelpersZeroCodingTests.ZeroDecode_ValidInput_DecodesCorrectly` | `` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs:36` | `Helpers` | `` | `tests/compat/tests/wire_semantics.rs:79 (`zero_decode_valid_input_decodes_correctly`)` | `translated` | `62353da2b1afb7bfdf5142706d15d22086a5e1e8c55f39af3e64686dda4ea071` |
|
| `LibreMetaverse.Tests/HelpersZeroCodingTests.cs::HelpersZeroCodingTests.ZeroDecode_ValidInput_DecodesCorrectly::test` | `HelpersZeroCodingTests.ZeroDecode_ValidInput_DecodesCorrectly` | `` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs:36` | `Helpers` | `` | `tests/compat/tests/wire_semantics.rs:79 (`zero_decode_valid_input_decodes_correctly`)` | `translated` | `62353da2b1afb7bfdf5142706d15d22086a5e1e8c55f39af3e64686dda4ea071` |
|
||||||
| `LibreMetaverse.Tests/HelpersZeroCodingTests.cs::HelpersZeroCodingTests.ZeroDecode_NullSource_ThrowsArgumentNullException::test` | `HelpersZeroCodingTests.ZeroDecode_NullSource_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs:64` | `Helpers` | `` | `tests/compat/tests/wire_semantics.rs:97 (`zero_decode_null_source_throws_argument_null`)` | `translated` | `50ebbd8ea35b87df18cccdea9a26534d5c142228e5b1698cf191b9fd2e9a9957` |
|
| `LibreMetaverse.Tests/HelpersZeroCodingTests.cs::HelpersZeroCodingTests.ZeroDecode_NullSource_ThrowsArgumentNullException::test` | `HelpersZeroCodingTests.ZeroDecode_NullSource_ThrowsArgumentNullException` | `` | `LibreMetaverse.Tests/HelpersZeroCodingTests.cs:64` | `Helpers` | `` | `tests/compat/tests/wire_semantics.rs:97 (`zero_decode_null_source_throws_argument_null`)` | `translated` | `50ebbd8ea35b87df18cccdea9a26534d5c142228e5b1698cf191b9fd2e9a9957` |
|
||||||
@@ -459,10 +459,10 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/NotationLLSDTests.cs::NotationSDTests.SerializeMap::test` | `NotationSDTests.SerializeMap` | `` | `LibreMetaverse.Tests/NotationLLSDTests.cs:600` | `` | `` | `tests/compat/tests/structured_data.rs:1037 (`notation_serialize_map`)` | `translated` | `71bf4cf86acc617623d904f5d1a1f892e45e5f6298e057ab7670281da1d6b541` |
|
| `LibreMetaverse.Tests/NotationLLSDTests.cs::NotationSDTests.SerializeMap::test` | `NotationSDTests.SerializeMap` | `` | `LibreMetaverse.Tests/NotationLLSDTests.cs:600` | `` | `` | `tests/compat/tests/structured_data.rs:1037 (`notation_serialize_map`)` | `translated` | `71bf4cf86acc617623d904f5d1a1f892e45e5f6298e057ab7670281da1d6b541` |
|
||||||
| `LibreMetaverse.Tests/NotationLLSDTests.cs::NotationSDTests.DeserializeRealWorldExamples::test` | `NotationSDTests.DeserializeRealWorldExamples` | `` | `LibreMetaverse.Tests/NotationLLSDTests.cs:653` | `` | `` | `tests/compat/tests/structured_data.rs:1053 (`notation_deserialize_real_world_examples`)` | `translated` | `684c4f3ad342010bc466699fc921375f3df16b63c600ac85f970d63b57d62ae2` |
|
| `LibreMetaverse.Tests/NotationLLSDTests.cs::NotationSDTests.DeserializeRealWorldExamples::test` | `NotationSDTests.DeserializeRealWorldExamples` | `` | `LibreMetaverse.Tests/NotationLLSDTests.cs:653` | `` | `` | `tests/compat/tests/structured_data.rs:1053 (`notation_deserialize_real_world_examples`)` | `translated` | `684c4f3ad342010bc466699fc921375f3df16b63c600ac85f970d63b57d62ae2` |
|
||||||
| `LibreMetaverse.Tests/NotationLLSDTests.cs::NotationSDTests.SerializeFormattedTest::test` | `NotationSDTests.SerializeFormattedTest` | `` | `LibreMetaverse.Tests/NotationLLSDTests.cs:707` | `` | `` | `tests/compat/tests/structured_data.rs:1126 (`notation_serialize_formatted_test`)` | `translated` | `de64ee1e02e47116c580a7340e0ce8a908787eff63d46a56ee04379330932ee5` |
|
| `LibreMetaverse.Tests/NotationLLSDTests.cs::NotationSDTests.SerializeFormattedTest::test` | `NotationSDTests.SerializeFormattedTest` | `` | `LibreMetaverse.Tests/NotationLLSDTests.cs:707` | `` | `` | `tests/compat/tests/structured_data.rs:1126 (`notation_serialize_formatted_test`)` | `translated` | `de64ee1e02e47116c580a7340e0ce8a908787eff63d46a56ee04379330932ee5` |
|
||||||
| `LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_StandardRegion_Loads256x256::test` | `OarFileTerrainTests.LoadTerrain_StandardRegion_Loads256x256` | `` | `LibreMetaverse.Tests/OarFileTerrainTests.cs:38` | `OarFile` | `` | `pending source translation` | `pending` | `c4e3a994baf06b0106a6614e9c3efbcc27e45ff1725f5470d2db6ded1fff6014` |
|
| `LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_StandardRegion_Loads256x256::test` | `OarFileTerrainTests.LoadTerrain_StandardRegion_Loads256x256` | `` | `LibreMetaverse.Tests/OarFileTerrainTests.cs:38` | `OarFile` | `` | `crates/libremetaverse/src/asset_archive_semantics.rs:16 (`load_standard_region_terrain`)` | `translated` | `c4e3a994baf06b0106a6614e9c3efbcc27e45ff1725f5470d2db6ded1fff6014` |
|
||||||
| `LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_Varregion_Loads512x512::test` | `OarFileTerrainTests.LoadTerrain_Varregion_Loads512x512` | `` | `LibreMetaverse.Tests/OarFileTerrainTests.cs:52` | `OarFile` | `` | `pending source translation` | `pending` | `4820338f10acbb4987e26992d7a7957be58ab6bc548674bf18943ef312962894` |
|
| `LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_Varregion_Loads512x512::test` | `OarFileTerrainTests.LoadTerrain_Varregion_Loads512x512` | `` | `LibreMetaverse.Tests/OarFileTerrainTests.cs:52` | `OarFile` | `` | `crates/libremetaverse/src/asset_archive_semantics.rs:45 (`load_varregion_terrain`)` | `translated` | `4820338f10acbb4987e26992d7a7957be58ab6bc548674bf18943ef312962894` |
|
||||||
| `LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_WrongByteCount_FailsGracefully::test` | `OarFileTerrainTests.LoadTerrain_WrongByteCount_FailsGracefully` | `` | `LibreMetaverse.Tests/OarFileTerrainTests.cs:65` | `OarFile` | `` | `pending source translation` | `pending` | `ff6fb4feb2773c93397d412d0ecf6aef1f3636e823dabb729a7a6cbe94d1513f` |
|
| `LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_WrongByteCount_FailsGracefully::test` | `OarFileTerrainTests.LoadTerrain_WrongByteCount_FailsGracefully` | `` | `LibreMetaverse.Tests/OarFileTerrainTests.cs:65` | `OarFile` | `` | `crates/libremetaverse/src/asset_archive_semantics.rs:73 (`reject_terrain_with_wrong_byte_count`)` | `translated` | `ff6fb4feb2773c93397d412d0ecf6aef1f3636e823dabb729a7a6cbe94d1513f` |
|
||||||
| `LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_NonSquarePostCount_FailsGracefully::test` | `OarFileTerrainTests.LoadTerrain_NonSquarePostCount_FailsGracefully` | `` | `LibreMetaverse.Tests/OarFileTerrainTests.cs:76` | `OarFile` | `` | `pending source translation` | `pending` | `218754e53232cd10318668c70b94ae9d7d541d09598b0490082e023e76d6045f` |
|
| `LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_NonSquarePostCount_FailsGracefully::test` | `OarFileTerrainTests.LoadTerrain_NonSquarePostCount_FailsGracefully` | `` | `LibreMetaverse.Tests/OarFileTerrainTests.cs:76` | `OarFile` | `` | `crates/libremetaverse/src/asset_archive_semantics.rs:95 (`reject_terrain_with_non_square_post_count`)` | `translated` | `218754e53232cd10318668c70b94ae9d7d541d09598b0490082e023e76d6045f` |
|
||||||
| `LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_BareArrayOfArraysResponse_RaisesInstantMessage::test` | `OfflineMessagesTests.RetrieveInstantMessagesAsync_BareArrayOfArraysResponse_RaisesInstantMessage` | `` | `LibreMetaverse.Tests/OfflineMessagesTests.cs:70` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `d51f69e0fa1e1e59a5cedec7d60315d1f590848672a9f4f0c5e21d2abff5c372` |
|
| `LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_BareArrayOfArraysResponse_RaisesInstantMessage::test` | `OfflineMessagesTests.RetrieveInstantMessagesAsync_BareArrayOfArraysResponse_RaisesInstantMessage` | `` | `LibreMetaverse.Tests/OfflineMessagesTests.cs:70` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `d51f69e0fa1e1e59a5cedec7d60315d1f590848672a9f4f0c5e21d2abff5c372` |
|
||||||
| `LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_MessagesMapResponse_RaisesInstantMessage::test` | `OfflineMessagesTests.RetrieveInstantMessagesAsync_MessagesMapResponse_RaisesInstantMessage` | `` | `LibreMetaverse.Tests/OfflineMessagesTests.cs:94` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `dbce6320d57d12ca5557cfba65257e15be314cde947b20dd21bc386819fcb3ce` |
|
| `LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_MessagesMapResponse_RaisesInstantMessage::test` | `OfflineMessagesTests.RetrieveInstantMessagesAsync_MessagesMapResponse_RaisesInstantMessage` | `` | `LibreMetaverse.Tests/OfflineMessagesTests.cs:94` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `dbce6320d57d12ca5557cfba65257e15be314cde947b20dd21bc386819fcb3ce` |
|
||||||
| `LibreMetaverse.Tests/PacketTests.cs::PacketTests.HeaderFlags::test` | `PacketTests.HeaderFlags` | `` | `LibreMetaverse.Tests/PacketTests.cs:37` | `` | `` | `tests/compat/tests/wire_semantics.rs:312 (`packet_header_flags`)` | `translated` | `89d9955f4a2ccb1fe1de227df0d9dc43a8836145a625b07c69e92e3acdef4c8b` |
|
| `LibreMetaverse.Tests/PacketTests.cs::PacketTests.HeaderFlags::test` | `PacketTests.HeaderFlags` | `` | `LibreMetaverse.Tests/PacketTests.cs:37` | `` | `` | `tests/compat/tests/wire_semantics.rs:312 (`packet_header_flags`)` | `translated` | `89d9955f4a2ccb1fe1de227df0d9dc43a8836145a625b07c69e92e3acdef4c8b` |
|
||||||
@@ -1133,10 +1133,10 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_PlainAssetId_ParsesWithoutDecryption::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_PlainAssetId_ParsesWithoutDecryption` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:115` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `95f39928dae61bca86b7d0a0702307db6c5fdc754e51f73a24bd5ee131e6de3f` |
|
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_PlainAssetId_ParsesWithoutDecryption::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_PlainAssetId_ParsesWithoutDecryption` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:115` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `95f39928dae61bca86b7d0a0702307db6c5fdc754e51f73a24bd5ee131e6de3f` |
|
||||||
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_NonSuccessStatus_ReturnsContentsFolderOnly::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_NonSuccessStatus_ReturnsContentsFolderOnly` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:143` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `b8a25891064e470ac8d77ecd8a4847cf773b043de5ebeae275a9dd6669518585` |
|
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_NonSuccessStatus_ReturnsContentsFolderOnly::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_NonSuccessStatus_ReturnsContentsFolderOnly` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:143` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `b8a25891064e470ac8d77ecd8a4847cf773b043de5ebeae275a9dd6669518585` |
|
||||||
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_NoCapability_DoesNotMakeHttpRequest::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_NoCapability_DoesNotMakeHttpRequest` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:164` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `c0c43ebcf781fb81b1fef7ce1dd2774e350d92ef882f49876f1a16d23a338592` |
|
| `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_NoCapability_DoesNotMakeHttpRequest::test` | `RequestTaskInventoryCapTests.GetTaskInventoryAsync_NoCapability_DoesNotMakeHttpRequest` | `` | `LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs:164` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `c0c43ebcf781fb81b1fef7ce1dd2774e350d92ef882f49876f1a16d23a338592` |
|
||||||
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_HappyPath_PostsMetadataThenImageAndReturnsTrue::test` | `SendPostcardTests.SendPostcardAsync_HappyPath_PostsMetadataThenImageAndReturnsTrue` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:68` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `2e02bd16ef1431c2ca82d7804dffc764be0175cff5daff8c38d0a61641439e06` |
|
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_HappyPath_PostsMetadataThenImageAndReturnsTrue::test` | `SendPostcardTests.SendPostcardAsync_HappyPath_PostsMetadataThenImageAndReturnsTrue` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:68` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:548 (`postcard_posts_metadata_then_image`)` | `translated` | `2e02bd16ef1431c2ca82d7804dffc764be0175cff5daff8c38d0a61641439e06` |
|
||||||
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploaderMissingFromResponse_ReturnsFalseWithoutSecondRequest::test` | `SendPostcardTests.SendPostcardAsync_UploaderMissingFromResponse_ReturnsFalseWithoutSecondRequest` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:100` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `2f9498d57d7a512399f9b108765e6e8da8e4c937402f9671d580c66332630432` |
|
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploaderMissingFromResponse_ReturnsFalseWithoutSecondRequest::test` | `SendPostcardTests.SendPostcardAsync_UploaderMissingFromResponse_ReturnsFalseWithoutSecondRequest` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:100` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:586 (`postcard_missing_uploader_returns_false_after_one_request`)` | `translated` | `2f9498d57d7a512399f9b108765e6e8da8e4c937402f9671d580c66332630432` |
|
||||||
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploadDoesNotComplete_ReturnsFalse::test` | `SendPostcardTests.SendPostcardAsync_UploadDoesNotComplete_ReturnsFalse` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:112` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `937b682b406506ec9fba9570852bbf8689450a11cbecb85979af97609b1794f9` |
|
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploadDoesNotComplete_ReturnsFalse::test` | `SendPostcardTests.SendPostcardAsync_UploadDoesNotComplete_ReturnsFalse` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:112` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:608 (`postcard_incomplete_upload_returns_false`)` | `translated` | `937b682b406506ec9fba9570852bbf8689450a11cbecb85979af97609b1794f9` |
|
||||||
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `SendPostcardTests.SendPostcardAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:125` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `8d3ef84e873096d9388bb7db3eaeeb79c661fd9951e338f71bbf3251ae6580e8` |
|
| `LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `SendPostcardTests.SendPostcardAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/SendPostcardTests.cs:125` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:635 (`postcard_without_capability_makes_no_request`)` | `translated` | `8d3ef84e873096d9388bb7db3eaeeb79c661fd9951e338f71bbf3251ae6580e8` |
|
||||||
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent::test` | `SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:81` | `Estate` | `` | `pending source translation` | `pending` | `df6eb48241f71c34074be66869c9ae1d5980186583259568728261b5eedd7c48` |
|
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent::test` | `SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:81` | `Estate` | `` | `pending source translation` | `pending` | `df6eb48241f71c34074be66869c9ae1d5980186583259568728261b5eedd7c48` |
|
||||||
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout::test` | `SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:111` | `Estate` | `` | `pending source translation` | `pending` | `2ac5a6c96f3acec341056387d727288fd3661565bd2a7c385078602efe8661da` |
|
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout::test` | `SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:111` | `Estate` | `` | `pending source translation` | `pending` | `2ac5a6c96f3acec341056387d727288fd3661565bd2a7c385078602efe8661da` |
|
||||||
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField::test` | `SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:133` | `Estate` | `` | `pending source translation` | `pending` | `4d367bc3fd012d1579847fd9837bf883c5ea95452776a086bbf856899d7c2099` |
|
| `LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField::test` | `SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField` | `` | `LibreMetaverse.Tests/SimConsoleTests.cs:133` | `Estate` | `` | `pending source translation` | `pending` | `4d367bc3fd012d1579847fd9837bf883c5ea95452776a086bbf856899d7c2099` |
|
||||||
@@ -1175,12 +1175,12 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly::test` | `SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:374` | `LocationParser` | `` | `pending source translation` | `pending` | `abf53480da20d1ff57f5f06f1433c120ea84e0d6d5363cb33e4a275d76cfa306` |
|
| `LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly::test` | `SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly` | `` | `LibreMetaverse.Tests/SlurlParserTests.cs:374` | `LocationParser` | `` | `pending source translation` | `pending` | `abf53480da20d1ff57f5f06f1433c120ea84e0d6d5363cb33e4a275d76cfa306` |
|
||||||
| `LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields::test` | `StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields` | `` | `LibreMetaverse.Tests/StartAuctionTests.cs:45` | `Parcel` | `` | `pending source translation` | `pending` | `f37ef06cfba37754effe04a0bb0edfa159c761b811a05efd95157896756bef16` |
|
| `LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields::test` | `StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields` | `` | `LibreMetaverse.Tests/StartAuctionTests.cs:45` | `Parcel` | `` | `pending source translation` | `pending` | `f37ef06cfba37754effe04a0bb0edfa159c761b811a05efd95157896756bef16` |
|
||||||
| `LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.StartAuction_DoesNotThrow::test` | `StartAuctionTests.StartAuction_DoesNotThrow` | `` | `LibreMetaverse.Tests/StartAuctionTests.cs:71` | `Parcel` | `` | `pending source translation` | `pending` | `deec194333b480dabb3f6e6d96b360a29d11a40ca1103117fc7ce5cdb80d6eb0` |
|
| `LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.StartAuction_DoesNotThrow::test` | `StartAuctionTests.StartAuction_DoesNotThrow` | `` | `LibreMetaverse.Tests/StartAuctionTests.cs:71` | `Parcel` | `` | `pending source translation` | `pending` | `deec194333b480dabb3f6e6d96b360a29d11a40ca1103117fc7ce5cdb80d6eb0` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ParsesFourSlotsWithSomeEmpty::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ParsesFourSlotsWithSomeEmpty` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:64` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `0b7f2b5a7a95c70f4ed97b9b028f3ec16f1cd427a9d4d1b133523bd331f6b9f2` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ParsesFourSlotsWithSomeEmpty::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ParsesFourSlotsWithSomeEmpty` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:64` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:445 (`terrain_get_parses_four_slots_with_empty_entries`)` | `translated` | `0b7f2b5a7a95c70f4ed97b9b028f3ec16f1cd427a9d4d1b133523bd331f6b9f2` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ServerReportsFailure_ReturnsNull::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ServerReportsFailure_ReturnsNull` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:81` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `c66b84662333288b7328822d1f9fa79450075d44a1178a9b0b661671072efe5b` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ServerReportsFailure_ReturnsNull::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ServerReportsFailure_ReturnsNull` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:81` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:468 (`terrain_get_server_failure_returns_none`)` | `translated` | `c66b84662333288b7328822d1f9fa79450075d44a1178a9b0b661671072efe5b` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_NoCapability_ReturnsNullWithoutRequest::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:92` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `677f80689e1b6a67893d100e1116805fb9f63c5b6ec33e64a4dc9a4cf24c1237` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_NoCapability_ReturnsNullWithoutRequest::test` | `TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:92` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:482 (`terrain_get_without_capability_makes_no_request`)` | `translated` | `677f80689e1b6a67893d100e1116805fb9f63c5b6ec33e64a4dc9a4cf24c1237` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_MixOfNullAndSet_PostsFourEntries::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_MixOfNullAndSet_PostsFourEntries` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:111` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `a4ce031e565ca7eb1864064d299dbf0c7b715581ce330a57be9c3aa93987e67c` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_MixOfNullAndSet_PostsFourEntries::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_MixOfNullAndSet_PostsFourEntries` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:111` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:494 (`terrain_set_posts_four_mixed_entries`)` | `translated` | `a4ce031e565ca7eb1864064d299dbf0c7b715581ce330a57be9c3aa93987e67c` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_WrongLength_Throws::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_WrongLength_Throws` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:128` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `836099a369b37555049b1c1ddfb9562c57cdef88381b7a79e8b80fe62b169a44` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_WrongLength_Throws::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_WrongLength_Throws` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:128` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:518 (`terrain_set_wrong_length_is_argument_error`)` | `translated` | `836099a369b37555049b1c1ddfb9562c57cdef88381b7a79e8b80fe62b169a44` |
|
||||||
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:135` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `37948cbc0240910d63782d88c0fb9f1d239215cea34a5aa84ac68a10d0555e87` |
|
| `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_NoCapability_ReturnsFalseWithoutRequest::test` | `TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_NoCapability_ReturnsFalseWithoutRequest` | `` | `LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs:135` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:533 (`terrain_set_without_capability_makes_no_request`)` | `translated` | `37948cbc0240910d63782d88c0fb9f1d239215cea34a5aa84ac68a10d0555e87` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d3ad6116f2458248` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `32, Description = "First face affected by 32-bit overflow"` | `LibreMetaverse.Tests/TextureEntryTests.cs:46` | `TextureEntry` | `` | `pending source translation` | `pending` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d3ad6116f2458248` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `32, Description = "First face affected by 32-bit overflow"` | `LibreMetaverse.Tests/TextureEntryTests.cs:46` | `TextureEntry` | `` | `pending source translation` | `pending` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:c6f3ac57944a5314` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `33` | `LibreMetaverse.Tests/TextureEntryTests.cs:47` | `TextureEntry` | `` | `pending source translation` | `pending` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:c6f3ac57944a5314` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `33` | `LibreMetaverse.Tests/TextureEntryTests.cs:47` | `TextureEntry` | `` | `pending source translation` | `pending` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
||||||
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d59eced1ded07f84` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `40` | `LibreMetaverse.Tests/TextureEntryTests.cs:48` | `TextureEntry` | `` | `pending source translation` | `pending` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
| `LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d59eced1ded07f84` | `TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved` | `40` | `LibreMetaverse.Tests/TextureEntryTests.cs:48` | `TextureEntry` | `` | `pending source translation` | `pending` | `5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55` |
|
||||||
@@ -1200,12 +1200,12 @@ Reviewed Rust tests live outside `generated_parity.rs` and carry a `parity-case`
|
|||||||
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.BitUnpacking::test` | `TypeTests.BitUnpacking` | `` | `LibreMetaverse.Tests/TypeTests.cs:252` | `` | `` | `tests/compat/tests/wire_semantics.rs:271 (`bit_unpacking`)` | `translated` | `741470d770a0a71853d84e26abaf927fc7dc385dedf0d7de87f63e7a22cb4dd7` |
|
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.BitUnpacking::test` | `TypeTests.BitUnpacking` | `` | `LibreMetaverse.Tests/TypeTests.cs:252` | `` | `` | `tests/compat/tests/wire_semantics.rs:271 (`bit_unpacking`)` | `translated` | `741470d770a0a71853d84e26abaf927fc7dc385dedf0d7de87f63e7a22cb4dd7` |
|
||||||
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.BitPacking::test` | `TypeTests.BitPacking` | `` | `LibreMetaverse.Tests/TypeTests.cs:279` | `` | `` | `tests/compat/tests/wire_semantics.rs:285 (`bit_packing`)` | `translated` | `fe3cac4216b588667d56b35496a803097dbc39f84c7a82fd95aa101836588948` |
|
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.BitPacking::test` | `TypeTests.BitPacking` | `` | `LibreMetaverse.Tests/TypeTests.cs:279` | `` | `` | `tests/compat/tests/wire_semantics.rs:285 (`bit_packing`)` | `translated` | `fe3cac4216b588667d56b35496a803097dbc39f84c7a82fd95aa101836588948` |
|
||||||
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.LLSDTerseParsing::test` | `TypeTests.LLSDTerseParsing` | `` | `LibreMetaverse.Tests/TypeTests.cs:322` | `` | `` | `tests/compat/tests/structured_data.rs:1336 (`llsd_terse_parsing`)` | `translated` | `c5fcc05c15fa60c43cd40f5fc2b1349d9fbd1f5bb3537d8b04e91f37302e77f1` |
|
| `LibreMetaverse.Tests/TypeTests.cs::TypeTests.LLSDTerseParsing::test` | `TypeTests.LLSDTerseParsing` | `` | `LibreMetaverse.Tests/TypeTests.cs:322` | `` | `` | `tests/compat/tests/structured_data.rs:1336 (`llsd_terse_parsing`)` | `translated` | `c5fcc05c15fa60c43cd40f5fc2b1349d9fbd1f5bb3537d8b04e91f37302e77f1` |
|
||||||
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_AgentInventoryItem_SendsBareItemIdAndReturnsNewAsset::test` | `UploadThumbnailTests.UploadThumbnailAsync_AgentInventoryItem_SendsBareItemIdAndReturnsNewAsset` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:73` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `40ca874a37dade3bfbb391a2b4a75c684cfd7509b269286ccc14d747340d095d` |
|
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_AgentInventoryItem_SendsBareItemIdAndReturnsNewAsset::test` | `UploadThumbnailTests.UploadThumbnailAsync_AgentInventoryItem_SendsBareItemIdAndReturnsNewAsset` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:73` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:670 (`thumbnail_agent_item_sends_bare_item_id`)` | `translated` | `40ca874a37dade3bfbb391a2b4a75c684cfd7509b269286ccc14d747340d095d` |
|
||||||
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_TaskInventoryItem_SendsItemIdAndTaskId::test` | `UploadThumbnailTests.UploadThumbnailAsync_TaskInventoryItem_SendsItemIdAndTaskId` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:92` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `dae80f9a7ba6222a651165f779c123d8472f88a17490e69a1112acc3cec6d108` |
|
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_TaskInventoryItem_SendsItemIdAndTaskId::test` | `UploadThumbnailTests.UploadThumbnailAsync_TaskInventoryItem_SendsItemIdAndTaskId` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:92` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:699 (`thumbnail_task_item_sends_item_and_task_ids`)` | `translated` | `dae80f9a7ba6222a651165f779c123d8472f88a17490e69a1112acc3cec6d108` |
|
||||||
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_KnownLocalFolder_SendsCategoryId::test` | `UploadThumbnailTests.UploadThumbnailAsync_KnownLocalFolder_SendsCategoryId` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:110` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `1ccca44bbead54fd5041c41fc6560478ba17f9e5d9bacff21096b254d2f526db` |
|
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_KnownLocalFolder_SendsCategoryId::test` | `UploadThumbnailTests.UploadThumbnailAsync_KnownLocalFolder_SendsCategoryId` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:110` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:725 (`thumbnail_known_local_folder_sends_category_id`)` | `translated` | `1ccca44bbead54fd5041c41fc6560478ba17f9e5d9bacff21096b254d2f526db` |
|
||||||
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_NoCapability_ReturnsNullWithoutRequest::test` | `UploadThumbnailTests.UploadThumbnailAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:128` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `2bc1ad18b159c5d62a18d2208ed3cf3c88d3f666a0e0dad8730778cd22b59eda` |
|
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_NoCapability_ReturnsNullWithoutRequest::test` | `UploadThumbnailTests.UploadThumbnailAsync_NoCapability_ReturnsNullWithoutRequest` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:128` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:756 (`thumbnail_without_capability_makes_no_request`)` | `translated` | `2bc1ad18b159c5d62a18d2208ed3cf3c88d3f666a0e0dad8730778cd22b59eda` |
|
||||||
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_MetadataResponseMissingUploader_ReturnsNullWithoutSecondRequest::test` | `UploadThumbnailTests.UploadThumbnailAsync_MetadataResponseMissingUploader_ReturnsNullWithoutSecondRequest` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:145` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `8db3eddf1204ad795e9d5ef15365f422f96191a8b4c24ef3393b03c10d92d662` |
|
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_MetadataResponseMissingUploader_ReturnsNullWithoutSecondRequest::test` | `UploadThumbnailTests.UploadThumbnailAsync_MetadataResponseMissingUploader_ReturnsNullWithoutSecondRequest` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:145` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:773 (`thumbnail_missing_uploader_returns_none_after_one_request`)` | `translated` | `8db3eddf1204ad795e9d5ef15365f422f96191a8b4c24ef3393b03c10d92d662` |
|
||||||
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_UploadDoesNotComplete_ReturnsNull::test` | `UploadThumbnailTests.UploadThumbnailAsync_UploadDoesNotComplete_ReturnsNull` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:156` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `pending source translation` | `pending` | `e870f6913e3f45676ce490069930427e6c625072fc1d6ebbf16f503be51df4ae` |
|
| `LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_UploadDoesNotComplete_ReturnsNull::test` | `UploadThumbnailTests.UploadThumbnailAsync_UploadDoesNotComplete_ReturnsNull` | `` | `LibreMetaverse.Tests/UploadThumbnailTests.cs:156` | `` | `LibreMetaverse.Tests/TestHelpers/FakeGridClient.cs` | `tests/compat/tests/asset_capability_semantics.rs:793 (`thumbnail_incomplete_upload_returns_none`)` | `translated` | `e870f6913e3f45676ce490069930427e6c625072fc1d6ebbf16f503be51df4ae` |
|
||||||
| `LibreMetaverse.Tests/UtilUnitTests.cs::UtilUnitTests.FileHelper_SanitizeAndSafeNames::test` | `UtilUnitTests.FileHelper_SanitizeAndSafeNames` | `` | `LibreMetaverse.Tests/UtilUnitTests.cs:12` | `Utilities` | `` | `tests/compat/tests/types_utilities.rs:218 (`file_helper_sanitize_and_safe_names`)` | `translated` | `770d1cb751c4b8290c9443bcb4a91d17703628a157cc428c607a7d36ae0af985` |
|
| `LibreMetaverse.Tests/UtilUnitTests.cs::UtilUnitTests.FileHelper_SanitizeAndSafeNames::test` | `UtilUnitTests.FileHelper_SanitizeAndSafeNames` | `` | `LibreMetaverse.Tests/UtilUnitTests.cs:12` | `Utilities` | `` | `tests/compat/tests/types_utilities.rs:218 (`file_helper_sanitize_and_safe_names`)` | `translated` | `770d1cb751c4b8290c9443bcb4a91d17703628a157cc428c607a7d36ae0af985` |
|
||||||
| `LibreMetaverse.Tests/UtilUnitTests.cs::UtilUnitTests.ObservableDictionary_Events_FireOnAddRemoveAndClear::test` | `UtilUnitTests.ObservableDictionary_Events_FireOnAddRemoveAndClear` | `` | `LibreMetaverse.Tests/UtilUnitTests.cs:33` | `Utilities` | `` | `tests/compat/tests/types_utilities.rs:255 (`observable_dictionary_events_fire_on_add_remove_and_clear`)` | `translated` | `579412c3c839e1fe5b44cf956f8d329a15d4e05c05778b4e6e3ff9b7d2fb7607` |
|
| `LibreMetaverse.Tests/UtilUnitTests.cs::UtilUnitTests.ObservableDictionary_Events_FireOnAddRemoveAndClear::test` | `UtilUnitTests.ObservableDictionary_Events_FireOnAddRemoveAndClear` | `` | `LibreMetaverse.Tests/UtilUnitTests.cs:33` | `Utilities` | `` | `tests/compat/tests/types_utilities.rs:255 (`observable_dictionary_events_fire_on_add_remove_and_clear`)` | `translated` | `579412c3c839e1fe5b44cf956f8d329a15d4e05c05778b4e6e3ff9b7d2fb7607` |
|
||||||
| `LibreMetaverse.Tests/UtilUnitTests.cs::UtilUnitTests.EventSubscriptionHelper_WaitForEventAndAsync::test` | `UtilUnitTests.EventSubscriptionHelper_WaitForEventAndAsync` | `` | `LibreMetaverse.Tests/UtilUnitTests.cs:62` | `Utilities` | `` | `tests/compat/tests/types_utilities.rs:320 (`event_subscription_helper_wait_for_event_and_async`)` | `translated` | `bab59e0caf1630edda9a2a6daecca95cd1a28f189fdde01b1b6afee4cd96d8cb` |
|
| `LibreMetaverse.Tests/UtilUnitTests.cs::UtilUnitTests.EventSubscriptionHelper_WaitForEventAndAsync::test` | `UtilUnitTests.EventSubscriptionHelper_WaitForEventAndAsync` | `` | `LibreMetaverse.Tests/UtilUnitTests.cs:62` | `Utilities` | `` | `tests/compat/tests/types_utilities.rs:320 (`event_subscription_helper_wait_for_event_and_async`)` | `translated` | `bab59e0caf1630edda9a2a6daecca95cd1a28f189fdde01b1b6afee4cd96d8cb` |
|
||||||
|
|||||||
828
tests/compat/tests/asset_capability_semantics.rs
Normal file
828
tests/compat/tests/asset_capability_semantics.rs
Normal file
@@ -0,0 +1,828 @@
|
|||||||
|
#![allow(
|
||||||
|
clippy::float_cmp,
|
||||||
|
clippy::needless_pass_by_value,
|
||||||
|
clippy::too_many_lines
|
||||||
|
)]
|
||||||
|
|
||||||
|
// Exact BSD-3-Clause fixture provenance at LibreMetaverse
|
||||||
|
// 2aa70bb68513b39795da5d13c88f31b86e85a3ba (see LICENSE.md):
|
||||||
|
// GLTFMaterialOverrideCapTests.cs 4d717ded7cc7bd4e68210417f722a1ceec6391b19dc3b1dfeb558ae16e6f115b
|
||||||
|
// GLTFMaterialUploadTests.cs 0602d1504e405868d7bcb608eb7c0db9f47e9ec6636846f34d48669aa5a27025
|
||||||
|
// TerrainMaterialOverrideTests.cs b9409ba65906e2b9d30d42b350b4b3e9c1655d4a503c4ff87bd548dd229dad88
|
||||||
|
// SendPostcardTests.cs 56691373dfa8f817f0b1079b8ec40f16e0186d6cfb13f772da0ffe3935188b4d
|
||||||
|
// UploadThumbnailTests.cs 8a88c5e4d45e7e1d4f8a41092528eefee347c7bd5f5e6f3af171ac19455e894b
|
||||||
|
// ConstructorNullArgumentTests.cs 28deea0bf4d9353a2424842c6184abab8fe82746ceb12e093912728a247f21bc
|
||||||
|
|
||||||
|
use libremetaverse::assets::AssetMaterial;
|
||||||
|
use libremetaverse::{
|
||||||
|
AssetManager, GLTFMaterialUpdate, GridClient, HttpCapsClient, InventoryFolder, Simulator,
|
||||||
|
};
|
||||||
|
use libremetaverse_compat_tests::block_on;
|
||||||
|
use libremetaverse_types::compat::{HttpMessageHandler, HttpRequest, HttpResponse, Uri};
|
||||||
|
use libremetaverse_types::{Color4, Error, UUID, Vector3};
|
||||||
|
use std::collections::{BTreeMap, HashMap, VecDeque};
|
||||||
|
use std::fmt::Write as _;
|
||||||
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
|
const MODIFY_MATERIAL: &str = "http://test.invalid/modify-material-params";
|
||||||
|
const MATERIAL_AGENT: &str = "http://test.invalid/update-material-agent-inventory";
|
||||||
|
const MATERIAL_TASK: &str = "http://test.invalid/update-material-task-inventory";
|
||||||
|
const MATERIAL_UPLOADER: &str = "http://test.invalid/update-material/upload/abc123";
|
||||||
|
const MODIFY_REGION: &str = "http://test.invalid/modify-region";
|
||||||
|
const POSTCARD: &str = "http://test.invalid/send-postcard";
|
||||||
|
const POSTCARD_UPLOADER: &str = "http://test.invalid/send-postcard/upload/abc123";
|
||||||
|
const THUMBNAIL: &str = "http://test.invalid/inventory-thumbnail-upload";
|
||||||
|
const THUMBNAIL_UPLOADER: &str = "http://test.invalid/inventory-thumbnail-upload/upload/abc123";
|
||||||
|
const SEED_CAPS: &str = "http://test.invalid/seed";
|
||||||
|
const OTHER_CAP: &str = "http://test.invalid/other";
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
struct RecordingHttp {
|
||||||
|
requests: Arc<Mutex<Vec<HttpRequest>>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl RecordingHttp {
|
||||||
|
fn new(
|
||||||
|
capabilities: &[(&str, &str)],
|
||||||
|
responses: &[(&str, &str)],
|
||||||
|
) -> (Self, HttpMessageHandler) {
|
||||||
|
let requests = Arc::new(Mutex::new(Vec::new()));
|
||||||
|
let recorded = Arc::clone(&requests);
|
||||||
|
let mut queued = HashMap::<String, VecDeque<HttpResponse>>::new();
|
||||||
|
for (uri, body) in responses {
|
||||||
|
queued
|
||||||
|
.entry((*uri).into())
|
||||||
|
.or_default()
|
||||||
|
.push_back(response(body));
|
||||||
|
}
|
||||||
|
let queued = Mutex::new(queued);
|
||||||
|
let mut seed_body = "<llsd><map>".to_owned();
|
||||||
|
for (name, uri) in capabilities {
|
||||||
|
write!(seed_body, "<key>{name}</key><uri>{uri}</uri>")
|
||||||
|
.expect("writing to a String cannot fail");
|
||||||
|
}
|
||||||
|
seed_body.push_str("</map></llsd>");
|
||||||
|
let handler = HttpMessageHandler::new(move |request, _| {
|
||||||
|
let uri = request.uri.0.clone();
|
||||||
|
let response = if uri == SEED_CAPS {
|
||||||
|
HttpResponse {
|
||||||
|
status_code: 200,
|
||||||
|
headers: BTreeMap::new(),
|
||||||
|
content_type: Some("application/llsd+xml".into()),
|
||||||
|
body: seed_body.as_bytes().to_vec(),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
recorded.lock().expect("request recording").push(request);
|
||||||
|
queued
|
||||||
|
.lock()
|
||||||
|
.expect("response queue")
|
||||||
|
.get_mut(&uri)
|
||||||
|
.and_then(VecDeque::pop_front)
|
||||||
|
.unwrap_or_else(|| HttpResponse {
|
||||||
|
status_code: 404,
|
||||||
|
headers: BTreeMap::new(),
|
||||||
|
content_type: None,
|
||||||
|
body: Vec::new(),
|
||||||
|
})
|
||||||
|
};
|
||||||
|
async move { response }
|
||||||
|
});
|
||||||
|
(Self { requests }, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn requests(&self) -> Vec<HttpRequest> {
|
||||||
|
self.requests.lock().expect("request recording").clone()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn response(body: &str) -> HttpResponse {
|
||||||
|
HttpResponse {
|
||||||
|
status_code: 200,
|
||||||
|
headers: BTreeMap::from([("Content-Length".into(), body.len().to_string())]),
|
||||||
|
content_type: Some("application/json".into()),
|
||||||
|
body: body.as_bytes().to_vec(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn client_with_fixture(
|
||||||
|
capabilities: &[(&str, &str)],
|
||||||
|
responses: &[(&str, &str)],
|
||||||
|
) -> (GridClient, RecordingHttp) {
|
||||||
|
let (recording, handler) = RecordingHttp::new(capabilities, responses);
|
||||||
|
let mut client = GridClient::new().expect("GridClient constructor");
|
||||||
|
client.set_http_caps_client(
|
||||||
|
HttpCapsClient::new(handler.clone()).expect("HttpCapsClient constructor"),
|
||||||
|
);
|
||||||
|
if !capabilities.is_empty() {
|
||||||
|
let mut simulator_client = GridClient::new().expect("simulator GridClient constructor");
|
||||||
|
simulator_client.set_http_caps_client(
|
||||||
|
HttpCapsClient::new(handler).expect("simulator HttpCapsClient constructor"),
|
||||||
|
);
|
||||||
|
let simulator = Simulator::new(
|
||||||
|
simulator_client,
|
||||||
|
"127.0.0.1:0".parse().expect("loopback endpoint"),
|
||||||
|
0,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.expect("fixture simulator");
|
||||||
|
simulator
|
||||||
|
.set_seed_caps(Some(Uri(SEED_CAPS.into())), Some(true))
|
||||||
|
.expect("seed fixture capabilities");
|
||||||
|
let mut network = client.network();
|
||||||
|
network.set_current_sim(Some(simulator));
|
||||||
|
client.set_network(network);
|
||||||
|
}
|
||||||
|
(client, recording)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn body(request: &HttpRequest) -> String {
|
||||||
|
String::from_utf8(request.body.clone()).expect("UTF-8 request body")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn uuid_eq(actual: &UUID, expected: &UUID) {
|
||||||
|
assert_eq!(
|
||||||
|
actual.get_bytes().expect("actual UUID bytes"),
|
||||||
|
expected.get_bytes().expect("expected UUID bytes")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn happy_upload_responses<'a>(
|
||||||
|
capability: &'a str,
|
||||||
|
uploader: &'a str,
|
||||||
|
new_asset: &UUID,
|
||||||
|
) -> [(&'a str, String); 2] {
|
||||||
|
[
|
||||||
|
(
|
||||||
|
capability,
|
||||||
|
format!(r#"{{"state":"upload","uploader":"{uploader}"}}"#),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
uploader,
|
||||||
|
format!(
|
||||||
|
r#"{{"state":"complete","new_asset":"{}"}}"#,
|
||||||
|
new_asset.to_string()
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
fn response_refs<'a, const N: usize>(
|
||||||
|
responses: &'a [(&'a str, String); N],
|
||||||
|
) -> Vec<(&'a str, &'a str)> {
|
||||||
|
responses
|
||||||
|
.iter()
|
||||||
|
.map(|(uri, body)| (*uri, body.as_str()))
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SetMaterialOverrideAsync_HappyPath_PostsBareArrayWithGltfJson::test 0c51b7b793111f5433e52057f26fa5a98d983e7230fefeb61a7b3408e97f28ee translated
|
||||||
|
#[test]
|
||||||
|
fn set_material_override_posts_bare_array_with_gltf_json() {
|
||||||
|
let (client, recording) = client_with_fixture(
|
||||||
|
&[("ModifyMaterialParams", MODIFY_MATERIAL)],
|
||||||
|
&[(MODIFY_MATERIAL, r#"{"success":true}"#)],
|
||||||
|
);
|
||||||
|
let object_id = UUID::random().expect("UUID Random");
|
||||||
|
let expected_id = object_id.to_string();
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
material
|
||||||
|
.set_base_color_factor_with_color4_boolean(
|
||||||
|
Color4::new_with_single_single_single_single(0.1, 0.2, 0.3, 1.0)
|
||||||
|
.expect("Color4 constructor"),
|
||||||
|
Some(true),
|
||||||
|
)
|
||||||
|
.expect("SetBaseColorFactor");
|
||||||
|
let result = block_on(client.objects().set_material_override(
|
||||||
|
client.network().current_sim().expect("current simulator"),
|
||||||
|
object_id,
|
||||||
|
3,
|
||||||
|
material,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("SetMaterialOverrideAsync");
|
||||||
|
assert!(result);
|
||||||
|
let requests = recording.requests();
|
||||||
|
assert_eq!(requests.len(), 1);
|
||||||
|
let body = body(&requests[0]);
|
||||||
|
assert!(body.contains("<key>object_id</key>"));
|
||||||
|
assert!(body.contains(&expected_id));
|
||||||
|
assert!(body.contains("<key>side</key>"));
|
||||||
|
assert!(body.contains("<key>gltf_json</key>"));
|
||||||
|
assert!(!body.contains("<key>asset_id</key>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ClearMaterialOverrideAsync_SendsEmptyGltfJson::test 8394d063ea71447d9ce2b76fd00be1d10967f9193e1eb909c5b9f2da56eec812 translated
|
||||||
|
#[test]
|
||||||
|
fn clear_material_override_sends_empty_gltf_json() {
|
||||||
|
let (client, recording) = client_with_fixture(
|
||||||
|
&[("ModifyMaterialParams", MODIFY_MATERIAL)],
|
||||||
|
&[(MODIFY_MATERIAL, r#"{"success":true}"#)],
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
block_on(client.objects().clear_material_override(
|
||||||
|
client.network().current_sim().expect("current simulator"),
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
0,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("ClearMaterialOverrideAsync")
|
||||||
|
);
|
||||||
|
let body = body(&recording.requests()[0]);
|
||||||
|
assert!(body.contains("<key>gltf_json</key>"));
|
||||||
|
assert!(body.contains("<string />") || body.contains("<string></string>"));
|
||||||
|
assert!(!body.contains("<key>asset_id</key>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ApplyMaterialAsync_WithoutOverride_SendsAssetIdOnly::test 1db03ab6710ecf532644398d1fef5e82520e1206058d66fb15c8885fdc8f8363 translated
|
||||||
|
#[test]
|
||||||
|
fn apply_material_without_override_sends_asset_id_only() {
|
||||||
|
let (client, recording) = client_with_fixture(
|
||||||
|
&[("ModifyMaterialParams", MODIFY_MATERIAL)],
|
||||||
|
&[(MODIFY_MATERIAL, r#"{"success":true}"#)],
|
||||||
|
);
|
||||||
|
let asset_id = UUID::random().expect("UUID Random");
|
||||||
|
let expected_id = asset_id.to_string();
|
||||||
|
assert!(
|
||||||
|
block_on(client.objects().apply_material(
|
||||||
|
client.network().current_sim().expect("current simulator"),
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
1,
|
||||||
|
asset_id,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("ApplyMaterialAsync")
|
||||||
|
);
|
||||||
|
let body = body(&recording.requests()[0]);
|
||||||
|
assert!(body.contains("<key>asset_id</key>"));
|
||||||
|
assert!(body.contains(&expected_id));
|
||||||
|
assert!(!body.contains("<key>gltf_json</key>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_MultipleEntries_SendsSingleArrayBody::test 621dca88e7f1c9e024563204ca05c3c8d9a03c4b5a7b31ec1c006abe6732b47b translated
|
||||||
|
#[test]
|
||||||
|
fn material_updates_send_one_array_body() {
|
||||||
|
let (client, recording) = client_with_fixture(
|
||||||
|
&[("ModifyMaterialParams", MODIFY_MATERIAL)],
|
||||||
|
&[(MODIFY_MATERIAL, r#"{"success":true}"#)],
|
||||||
|
);
|
||||||
|
let mut first = GLTFMaterialUpdate::new().expect("GLTFMaterialUpdate constructor");
|
||||||
|
first.set_object_id(UUID::random().expect("UUID Random"));
|
||||||
|
first.set_side(0);
|
||||||
|
let mut second = GLTFMaterialUpdate::new().expect("GLTFMaterialUpdate constructor");
|
||||||
|
second.set_object_id(UUID::random().expect("UUID Random"));
|
||||||
|
second.set_side(1);
|
||||||
|
second.set_asset_id(Some(Some(UUID::random().expect("UUID Random"))));
|
||||||
|
assert!(
|
||||||
|
block_on(client.objects().send_material_updates(
|
||||||
|
client.network().current_sim().expect("current simulator"),
|
||||||
|
Box::new(vec![first, second].into_iter()),
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("SendMaterialUpdatesAsync")
|
||||||
|
);
|
||||||
|
assert_eq!(recording.requests().len(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_ServerRejects_ReturnsFalse::test e9fbd95fff84695e2cb1a35943bda768f00cf9015b25e0ae1505dce4dde603a4 translated
|
||||||
|
#[test]
|
||||||
|
fn material_updates_server_rejection_returns_false() {
|
||||||
|
let (client, _) = client_with_fixture(
|
||||||
|
&[("ModifyMaterialParams", MODIFY_MATERIAL)],
|
||||||
|
&[(
|
||||||
|
MODIFY_MATERIAL,
|
||||||
|
r#"{"success":false,"message":"no rez rights"}"#,
|
||||||
|
)],
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
!block_on(client.objects().clear_material_override(
|
||||||
|
client.network().current_sim().expect("current simulator"),
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
0,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("ClearMaterialOverrideAsync")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_NoCapability_ReturnsFalseWithoutRequest::test fdceb6bf865cb23386a6b82a9741f230e5c22b0ec6d37bc2ac8478f29292a49f translated
|
||||||
|
#[test]
|
||||||
|
fn material_updates_without_capability_make_no_request() {
|
||||||
|
let (client, recording) = client_with_fixture(&[("SomeOtherCap", OTHER_CAP)], &[]);
|
||||||
|
assert!(
|
||||||
|
!block_on(client.objects().clear_material_override(
|
||||||
|
client.network().current_sim().expect("current simulator"),
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
0,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("ClearMaterialOverrideAsync")
|
||||||
|
);
|
||||||
|
assert!(recording.requests().is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_HappyPath_PostsMetadataThenJsonAndReturnsNewAsset::test 5ac0e3c27fa6ebfddc9d7582aefb0684a676413948b055382c43b1b0b1cd7e7e translated
|
||||||
|
#[test]
|
||||||
|
fn material_agent_upload_posts_metadata_then_json() {
|
||||||
|
let item_id = UUID::random().expect("UUID Random");
|
||||||
|
let new_asset = UUID::random().expect("UUID Random");
|
||||||
|
let responses = happy_upload_responses(MATERIAL_AGENT, MATERIAL_UPLOADER, &new_asset);
|
||||||
|
let refs = response_refs(&responses);
|
||||||
|
let (client, recording) = client_with_fixture(
|
||||||
|
&[
|
||||||
|
("UpdateMaterialAgentInventory", MATERIAL_AGENT),
|
||||||
|
("UpdateMaterialTaskInventory", MATERIAL_TASK),
|
||||||
|
],
|
||||||
|
&refs,
|
||||||
|
);
|
||||||
|
let result = block_on(client.inventory().request_update_material_agent_inventory(
|
||||||
|
AssetMaterial::new_with_constructor().expect("AssetMaterial constructor"),
|
||||||
|
item_id,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("RequestUpdateMaterialAgentInventoryAsync");
|
||||||
|
assert!(result.0);
|
||||||
|
uuid_eq(&result.2, &new_asset);
|
||||||
|
let requests = recording.requests();
|
||||||
|
assert_eq!(requests.len(), 2);
|
||||||
|
let metadata = body(&requests[0]);
|
||||||
|
assert!(metadata.contains("<key>item_id</key>"));
|
||||||
|
assert!(!metadata.contains("<key>task_id</key>"));
|
||||||
|
assert_eq!(requests[1].uri, Uri(MATERIAL_UPLOADER.into()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialTaskInventoryAsync_HappyPath_PostsItemIdAndTaskId::test 7ac0e7d210b1aefa795e479f4da0d2dd4caae0b3bbe84ca124707c3ae005bbbd translated
|
||||||
|
#[test]
|
||||||
|
fn material_task_upload_posts_item_and_task_ids() {
|
||||||
|
let new_asset = UUID::random().expect("UUID Random");
|
||||||
|
let responses = happy_upload_responses(MATERIAL_TASK, MATERIAL_UPLOADER, &new_asset);
|
||||||
|
let refs = response_refs(&responses);
|
||||||
|
let (client, recording) = client_with_fixture(
|
||||||
|
&[
|
||||||
|
("UpdateMaterialAgentInventory", MATERIAL_AGENT),
|
||||||
|
("UpdateMaterialTaskInventory", MATERIAL_TASK),
|
||||||
|
],
|
||||||
|
&refs,
|
||||||
|
);
|
||||||
|
let result = block_on(client.inventory().request_update_material_task_inventory(
|
||||||
|
AssetMaterial::new_with_constructor().expect("AssetMaterial constructor"),
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("RequestUpdateMaterialTaskInventoryAsync");
|
||||||
|
assert!(result.0);
|
||||||
|
uuid_eq(&result.2, &new_asset);
|
||||||
|
let metadata = body(&recording.requests()[0]);
|
||||||
|
assert!(metadata.contains("<key>item_id</key>"));
|
||||||
|
assert!(metadata.contains("<key>task_id</key>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_NoCapability_Throws::test 325269807d778264e571d1518ca9a2ca69a27ba67ad689e580f2636ab595f335 translated
|
||||||
|
#[test]
|
||||||
|
fn material_agent_upload_without_capability_is_invalid_operation() {
|
||||||
|
let (client, _) = client_with_fixture(&[], &[]);
|
||||||
|
let result = block_on(client.inventory().request_update_material_agent_inventory(
|
||||||
|
AssetMaterial::new_with_constructor().expect("AssetMaterial constructor"),
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
));
|
||||||
|
match result {
|
||||||
|
Err(error) => assert_eq!(error, Error::InvalidOperation),
|
||||||
|
Ok(_) => panic!("expected InvalidOperation, got success"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_UploadedJsonRoundTripsMaterial::test fd059dfc8c9299c3b6583b3b47ba18ae9c92e3ad923f88634019b0ab9f34d401 translated
|
||||||
|
#[test]
|
||||||
|
fn uploaded_material_json_round_trips() {
|
||||||
|
let new_asset = UUID::random().expect("UUID Random");
|
||||||
|
let responses = happy_upload_responses(MATERIAL_AGENT, MATERIAL_UPLOADER, &new_asset);
|
||||||
|
let refs = response_refs(&responses);
|
||||||
|
let (client, recording) = client_with_fixture(
|
||||||
|
&[
|
||||||
|
("UpdateMaterialAgentInventory", MATERIAL_AGENT),
|
||||||
|
("UpdateMaterialTaskInventory", MATERIAL_TASK),
|
||||||
|
],
|
||||||
|
&refs,
|
||||||
|
);
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
material.set_name("My Material".into());
|
||||||
|
material
|
||||||
|
.set_base_color_factor_with_color4_boolean(
|
||||||
|
Color4::new_with_single_single_single_single(0.2, 0.4, 0.6, 1.0)
|
||||||
|
.expect("Color4 constructor"),
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.expect("SetBaseColorFactor");
|
||||||
|
block_on(client.inventory().request_update_material_agent_inventory(
|
||||||
|
material,
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("RequestUpdateMaterialAgentInventoryAsync");
|
||||||
|
let uploaded = recording.requests()[1].body.clone();
|
||||||
|
let round_trip =
|
||||||
|
AssetMaterial::new_with_uuid_bytes(UUID::random().expect("UUID Random"), uploaded)
|
||||||
|
.expect("AssetMaterial JSON constructor");
|
||||||
|
assert_eq!(round_trip.name(), "My Material");
|
||||||
|
assert_eq!(
|
||||||
|
[
|
||||||
|
round_trip.base_color_factor().r,
|
||||||
|
round_trip.base_color_factor().g,
|
||||||
|
round_trip.base_color_factor().b,
|
||||||
|
round_trip.base_color_factor().a,
|
||||||
|
],
|
||||||
|
[0.2, 0.4, 0.6, 1.0]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ParsesFourSlotsWithSomeEmpty::test 0b7f2b5a7a95c70f4ed97b9b028f3ec16f1cd427a9d4d1b133523bd331f6b9f2 translated
|
||||||
|
#[test]
|
||||||
|
fn terrain_get_parses_four_slots_with_empty_entries() {
|
||||||
|
let (client, _) = client_with_fixture(
|
||||||
|
&[("ModifyRegion", MODIFY_REGION)],
|
||||||
|
&[(
|
||||||
|
MODIFY_REGION,
|
||||||
|
r#"{"success":true,"overrides":[{},{"mf":0.25},{},{}]}"#,
|
||||||
|
)],
|
||||||
|
);
|
||||||
|
let overrides = block_on(client.terrain().get_terrain_material_overrides(None))
|
||||||
|
.expect("GetTerrainMaterialOverridesAsync")
|
||||||
|
.expect("successful override response");
|
||||||
|
assert_eq!(overrides.len(), 4);
|
||||||
|
assert!(overrides[0].is_none());
|
||||||
|
assert_eq!(
|
||||||
|
overrides[1].as_ref().expect("slot one").metallic_factor(),
|
||||||
|
0.25
|
||||||
|
);
|
||||||
|
assert!(overrides[2].is_none());
|
||||||
|
assert!(overrides[3].is_none());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ServerReportsFailure_ReturnsNull::test c66b84662333288b7328822d1f9fa79450075d44a1178a9b0b661671072efe5b translated
|
||||||
|
#[test]
|
||||||
|
fn terrain_get_server_failure_returns_none() {
|
||||||
|
let (client, _) = client_with_fixture(
|
||||||
|
&[("ModifyRegion", MODIFY_REGION)],
|
||||||
|
&[(MODIFY_REGION, r#"{"success":false,"message":"nope"}"#)],
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
block_on(client.terrain().get_terrain_material_overrides(None))
|
||||||
|
.expect("GetTerrainMaterialOverridesAsync")
|
||||||
|
.is_none()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_NoCapability_ReturnsNullWithoutRequest::test 677f80689e1b6a67893d100e1116805fb9f63c5b6ec33e64a4dc9a4cf24c1237 translated
|
||||||
|
#[test]
|
||||||
|
fn terrain_get_without_capability_makes_no_request() {
|
||||||
|
let (client, recording) = client_with_fixture(&[("SomeOtherCap", OTHER_CAP)], &[]);
|
||||||
|
assert!(
|
||||||
|
block_on(client.terrain().get_terrain_material_overrides(None))
|
||||||
|
.expect("GetTerrainMaterialOverridesAsync")
|
||||||
|
.is_none()
|
||||||
|
);
|
||||||
|
assert!(recording.requests().is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_MixOfNullAndSet_PostsFourEntries::test a4ce031e565ca7eb1864064d299dbf0c7b715581ce330a57be9c3aa93987e67c translated
|
||||||
|
#[test]
|
||||||
|
fn terrain_set_posts_four_mixed_entries() {
|
||||||
|
let (client, recording) = client_with_fixture(
|
||||||
|
&[("ModifyRegion", MODIFY_REGION)],
|
||||||
|
&[(MODIFY_REGION, r#"{"success":true}"#)],
|
||||||
|
);
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
material
|
||||||
|
.set_roughness_factor_with_single_boolean(0.1, Some(true))
|
||||||
|
.expect("SetRoughnessFactor");
|
||||||
|
assert!(
|
||||||
|
block_on(
|
||||||
|
client
|
||||||
|
.terrain()
|
||||||
|
.set_terrain_material_overrides(vec![None, Some(material), None, None], None,)
|
||||||
|
)
|
||||||
|
.expect("SetTerrainMaterialOverridesAsync")
|
||||||
|
);
|
||||||
|
let body = body(&recording.requests()[0]);
|
||||||
|
assert!(body.contains("<key>overrides</key>"));
|
||||||
|
assert!(body.contains("<key>rf</key>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_WrongLength_Throws::test 836099a369b37555049b1c1ddfb9562c57cdef88381b7a79e8b80fe62b169a44 translated
|
||||||
|
#[test]
|
||||||
|
fn terrain_set_wrong_length_is_argument_error() {
|
||||||
|
let (client, _) = client_with_fixture(&[("ModifyRegion", MODIFY_REGION)], &[]);
|
||||||
|
let result = block_on(
|
||||||
|
client
|
||||||
|
.terrain()
|
||||||
|
.set_terrain_material_overrides(vec![None, None], None),
|
||||||
|
);
|
||||||
|
match result {
|
||||||
|
Err(error) => assert_eq!(error, Error::Argument),
|
||||||
|
Ok(_) => panic!("expected Argument, got success"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_NoCapability_ReturnsFalseWithoutRequest::test 37948cbc0240910d63782d88c0fb9f1d239215cea34a5aa84ac68a10d0555e87 translated
|
||||||
|
#[test]
|
||||||
|
fn terrain_set_without_capability_makes_no_request() {
|
||||||
|
let (client, recording) = client_with_fixture(&[("SomeOtherCap", OTHER_CAP)], &[]);
|
||||||
|
assert!(
|
||||||
|
!block_on(
|
||||||
|
client
|
||||||
|
.terrain()
|
||||||
|
.set_terrain_material_overrides(vec![None, None, None, None], None,)
|
||||||
|
)
|
||||||
|
.expect("SetTerrainMaterialOverridesAsync")
|
||||||
|
);
|
||||||
|
assert!(recording.requests().is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_HappyPath_PostsMetadataThenImageAndReturnsTrue::test 2e02bd16ef1431c2ca82d7804dffc764be0175cff5daff8c38d0a61641439e06 translated
|
||||||
|
#[test]
|
||||||
|
fn postcard_posts_metadata_then_image() {
|
||||||
|
let (mut client, recording) = client_with_fixture(
|
||||||
|
&[("SendPostcard", POSTCARD)],
|
||||||
|
&[
|
||||||
|
(
|
||||||
|
POSTCARD,
|
||||||
|
r#"{"state":"upload","uploader":"http://test.invalid/send-postcard/upload/abc123"}"#,
|
||||||
|
),
|
||||||
|
(POSTCARD_UPLOADER, r#"{"state":"complete"}"#),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
block_on(client.self_().send_postcard(
|
||||||
|
vec![0xff, 0xd8, 0xff, 0xd9],
|
||||||
|
"friend@example.com".into(),
|
||||||
|
"Jim Radford".into(),
|
||||||
|
"Postcard from the edge".into(),
|
||||||
|
"Hello, how are you today?".into(),
|
||||||
|
Vector3::one(),
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("SendPostcardAsync")
|
||||||
|
);
|
||||||
|
let requests = recording.requests();
|
||||||
|
assert_eq!(requests.len(), 2);
|
||||||
|
assert_eq!(requests[0].method, "POST");
|
||||||
|
assert_eq!(requests[0].uri, Uri(POSTCARD.into()));
|
||||||
|
let metadata = body(&requests[0]);
|
||||||
|
assert!(!metadata.contains("<key>from</key>"));
|
||||||
|
for field in ["to", "name", "subject", "msg", "pos-global"] {
|
||||||
|
assert!(metadata.contains(field));
|
||||||
|
}
|
||||||
|
assert_eq!(requests[1].method, "POST");
|
||||||
|
assert_eq!(requests[1].uri, Uri(POSTCARD_UPLOADER.into()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploaderMissingFromResponse_ReturnsFalseWithoutSecondRequest::test 2f9498d57d7a512399f9b108765e6e8da8e4c937402f9671d580c66332630432 translated
|
||||||
|
#[test]
|
||||||
|
fn postcard_missing_uploader_returns_false_after_one_request() {
|
||||||
|
let (mut client, recording) = client_with_fixture(
|
||||||
|
&[("SendPostcard", POSTCARD)],
|
||||||
|
&[(POSTCARD, r#"{"state":"upload"}"#)],
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
!block_on(client.self_().send_postcard(
|
||||||
|
vec![1, 2, 3],
|
||||||
|
"friend@example.com".into(),
|
||||||
|
"Jim Radford".into(),
|
||||||
|
"Subject".into(),
|
||||||
|
"Message".into(),
|
||||||
|
Vector3::zero(),
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("SendPostcardAsync")
|
||||||
|
);
|
||||||
|
assert_eq!(recording.requests().len(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploadDoesNotComplete_ReturnsFalse::test 937b682b406506ec9fba9570852bbf8689450a11cbecb85979af97609b1794f9 translated
|
||||||
|
#[test]
|
||||||
|
fn postcard_incomplete_upload_returns_false() {
|
||||||
|
let (mut client, _) = client_with_fixture(
|
||||||
|
&[("SendPostcard", POSTCARD)],
|
||||||
|
&[
|
||||||
|
(
|
||||||
|
POSTCARD,
|
||||||
|
r#"{"state":"upload","uploader":"http://test.invalid/send-postcard/upload/abc123"}"#,
|
||||||
|
),
|
||||||
|
(POSTCARD_UPLOADER, r#"{"state":"failed"}"#),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
!block_on(client.self_().send_postcard(
|
||||||
|
vec![1, 2, 3],
|
||||||
|
"friend@example.com".into(),
|
||||||
|
"Jim Radford".into(),
|
||||||
|
"Subject".into(),
|
||||||
|
"Message".into(),
|
||||||
|
Vector3::zero(),
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("SendPostcardAsync")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_NoCapability_ReturnsFalseWithoutRequest::test 8d3ef84e873096d9388bb7db3eaeeb79c661fd9951e338f71bbf3251ae6580e8 translated
|
||||||
|
#[test]
|
||||||
|
fn postcard_without_capability_makes_no_request() {
|
||||||
|
let (mut client, recording) = client_with_fixture(&[], &[]);
|
||||||
|
assert!(
|
||||||
|
!block_on(client.self_().send_postcard(
|
||||||
|
vec![1, 2, 3],
|
||||||
|
"friend@example.com".into(),
|
||||||
|
"Jim Radford".into(),
|
||||||
|
"Subject".into(),
|
||||||
|
"Message".into(),
|
||||||
|
Vector3::zero(),
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("SendPostcardAsync")
|
||||||
|
);
|
||||||
|
assert!(recording.requests().is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
fn thumbnail_responses(new_asset: &UUID) -> [(&str, String); 2] {
|
||||||
|
[
|
||||||
|
(
|
||||||
|
THUMBNAIL,
|
||||||
|
format!(r#"{{"uploader":"{THUMBNAIL_UPLOADER}"}}"#),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
THUMBNAIL_UPLOADER,
|
||||||
|
format!(
|
||||||
|
r#"{{"state":"complete","new_asset":"{}"}}"#,
|
||||||
|
new_asset.to_string()
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_AgentInventoryItem_SendsBareItemIdAndReturnsNewAsset::test 40ca874a37dade3bfbb391a2b4a75c684cfd7509b269286ccc14d747340d095d translated
|
||||||
|
#[test]
|
||||||
|
fn thumbnail_agent_item_sends_bare_item_id() {
|
||||||
|
let new_asset = UUID::random().expect("UUID Random");
|
||||||
|
let responses = thumbnail_responses(&new_asset);
|
||||||
|
let refs = response_refs(&responses);
|
||||||
|
let (client, recording) =
|
||||||
|
client_with_fixture(&[("InventoryThumbnailUpload", THUMBNAIL)], &refs);
|
||||||
|
let item_id = UUID::random().expect("UUID Random");
|
||||||
|
let result = block_on(client.inventory().upload_thumbnail(
|
||||||
|
item_id,
|
||||||
|
UUID::zero(),
|
||||||
|
vec![1, 2, 3],
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("UploadThumbnailAsync")
|
||||||
|
.flatten()
|
||||||
|
.expect("new thumbnail asset");
|
||||||
|
uuid_eq(&result, &new_asset);
|
||||||
|
let requests = recording.requests();
|
||||||
|
assert_eq!(requests.len(), 2);
|
||||||
|
let metadata = body(&requests[0]);
|
||||||
|
assert!(metadata.contains("<key>item_id</key>"));
|
||||||
|
assert!(!metadata.contains("<key>task_id</key>"));
|
||||||
|
assert!(!metadata.contains("<key>category_id</key>"));
|
||||||
|
assert_eq!(requests[1].uri, Uri(THUMBNAIL_UPLOADER.into()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_TaskInventoryItem_SendsItemIdAndTaskId::test dae80f9a7ba6222a651165f779c123d8472f88a17490e69a1112acc3cec6d108 translated
|
||||||
|
#[test]
|
||||||
|
fn thumbnail_task_item_sends_item_and_task_ids() {
|
||||||
|
let new_asset = UUID::random().expect("UUID Random");
|
||||||
|
let responses = thumbnail_responses(&new_asset);
|
||||||
|
let refs = response_refs(&responses);
|
||||||
|
let (client, recording) =
|
||||||
|
client_with_fixture(&[("InventoryThumbnailUpload", THUMBNAIL)], &refs);
|
||||||
|
let item_id = UUID::random().expect("UUID Random");
|
||||||
|
let task_id = UUID::random().expect("UUID Random");
|
||||||
|
let result =
|
||||||
|
block_on(
|
||||||
|
client
|
||||||
|
.inventory()
|
||||||
|
.upload_thumbnail(item_id, task_id, vec![1, 2, 3], None, None),
|
||||||
|
)
|
||||||
|
.expect("UploadThumbnailAsync")
|
||||||
|
.flatten()
|
||||||
|
.expect("new thumbnail asset");
|
||||||
|
uuid_eq(&result, &new_asset);
|
||||||
|
let metadata = body(&recording.requests()[0]);
|
||||||
|
assert!(metadata.contains("<key>item_id</key>"));
|
||||||
|
assert!(metadata.contains("<key>task_id</key>"));
|
||||||
|
assert!(!metadata.contains("<key>category_id</key>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_KnownLocalFolder_SendsCategoryId::test 1ccca44bbead54fd5041c41fc6560478ba17f9e5d9bacff21096b254d2f526db translated
|
||||||
|
#[test]
|
||||||
|
fn thumbnail_known_local_folder_sends_category_id() {
|
||||||
|
let folder_id = UUID::random().expect("UUID Random");
|
||||||
|
let new_asset = UUID::random().expect("UUID Random");
|
||||||
|
let responses = thumbnail_responses(&new_asset);
|
||||||
|
let refs = response_refs(&responses);
|
||||||
|
let (client, recording) =
|
||||||
|
client_with_fixture(&[("InventoryThumbnailUpload", THUMBNAIL)], &refs);
|
||||||
|
let mut folder = InventoryFolder::new(folder_id).expect("InventoryFolder constructor");
|
||||||
|
folder.base.set_name("Test Folder".into());
|
||||||
|
folder.base.set_parent_uuid(UUID::zero());
|
||||||
|
let mut store = client.inventory().store().expect("fixture inventory store");
|
||||||
|
store.set_item(folder_id, folder.base);
|
||||||
|
let result = block_on(client.inventory().upload_thumbnail(
|
||||||
|
folder_id,
|
||||||
|
UUID::zero(),
|
||||||
|
vec![1, 2, 3],
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("UploadThumbnailAsync")
|
||||||
|
.flatten()
|
||||||
|
.expect("new thumbnail asset");
|
||||||
|
uuid_eq(&result, &new_asset);
|
||||||
|
let metadata = body(&recording.requests()[0]);
|
||||||
|
assert!(metadata.contains("<key>category_id</key>"));
|
||||||
|
assert!(!metadata.contains("<key>item_id</key>"));
|
||||||
|
assert!(!metadata.contains("<key>task_id</key>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_NoCapability_ReturnsNullWithoutRequest::test 2bc1ad18b159c5d62a18d2208ed3cf3c88d3f666a0e0dad8730778cd22b59eda translated
|
||||||
|
#[test]
|
||||||
|
fn thumbnail_without_capability_makes_no_request() {
|
||||||
|
let (client, recording) = client_with_fixture(&[], &[]);
|
||||||
|
let result = block_on(client.inventory().upload_thumbnail(
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
UUID::zero(),
|
||||||
|
vec![1],
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("UploadThumbnailAsync")
|
||||||
|
.flatten();
|
||||||
|
assert!(result.is_none());
|
||||||
|
assert!(recording.requests().is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_MetadataResponseMissingUploader_ReturnsNullWithoutSecondRequest::test 8db3eddf1204ad795e9d5ef15365f422f96191a8b4c24ef3393b03c10d92d662 translated
|
||||||
|
#[test]
|
||||||
|
fn thumbnail_missing_uploader_returns_none_after_one_request() {
|
||||||
|
let (client, recording) = client_with_fixture(
|
||||||
|
&[("InventoryThumbnailUpload", THUMBNAIL)],
|
||||||
|
&[(THUMBNAIL, r#"{"state":"upload"}"#)],
|
||||||
|
);
|
||||||
|
let result = block_on(client.inventory().upload_thumbnail(
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
UUID::zero(),
|
||||||
|
vec![1],
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("UploadThumbnailAsync")
|
||||||
|
.flatten();
|
||||||
|
assert!(result.is_none());
|
||||||
|
assert_eq!(recording.requests().len(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_UploadDoesNotComplete_ReturnsNull::test e870f6913e3f45676ce490069930427e6c625072fc1d6ebbf16f503be51df4ae translated
|
||||||
|
#[test]
|
||||||
|
fn thumbnail_incomplete_upload_returns_none() {
|
||||||
|
let (client, _) = client_with_fixture(
|
||||||
|
&[("InventoryThumbnailUpload", THUMBNAIL)],
|
||||||
|
&[
|
||||||
|
(
|
||||||
|
THUMBNAIL,
|
||||||
|
r#"{"uploader":"http://test.invalid/inventory-thumbnail-upload/upload/abc123"}"#,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
THUMBNAIL_UPLOADER,
|
||||||
|
r#"{"state":"failed","message":"bad image"}"#,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
let result = block_on(client.inventory().upload_thumbnail(
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
UUID::zero(),
|
||||||
|
vec![1],
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.expect("UploadThumbnailAsync")
|
||||||
|
.flatten();
|
||||||
|
assert!(result.is_none());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AssetManager_Null_Throws::test 4fa1be8b233dacf6a5955359f2197ff77ae85ffbf2c3c68fcd8cbe672c2c5f91 translated
|
||||||
|
#[test]
|
||||||
|
fn asset_manager_none_client_is_argument_null() {
|
||||||
|
match AssetManager::new(None) {
|
||||||
|
Err(error) => assert_eq!(error, Error::ArgumentNull),
|
||||||
|
Ok(_) => panic!("expected ArgumentNull, got success"),
|
||||||
|
}
|
||||||
|
}
|
||||||
516
tests/compat/tests/asset_document_semantics.rs
Normal file
516
tests/compat/tests/asset_document_semantics.rs
Normal file
@@ -0,0 +1,516 @@
|
|||||||
|
#![allow(clippy::float_cmp)]
|
||||||
|
|
||||||
|
// Exact BSD-3-Clause fixture provenance at LibreMetaverse
|
||||||
|
// 2aa70bb68513b39795da5d13c88f31b86e85a3ba (see LICENSE.md):
|
||||||
|
// AssetMaterialOverrideTests.cs 3ec3a8bca08da06c52de1eeea1428b2b83c27660af20580f0333ed67b01bd09b
|
||||||
|
// GltfDocumentTests.cs e6e94d5b97a27b8cc4a345f08ab9a9a43b6ce587667edd89d8a4ebbc04eaa646
|
||||||
|
// Embedded 44-byte triangle buffer d3478e66e380d8a2b0c9d80f3459f75660efb111e7b801a7d1c1f8f48723d79b
|
||||||
|
|
||||||
|
use libremetaverse::assets::gltf::{GltfDocument, GltfPrimitive, GltfPrimitiveMode};
|
||||||
|
use libremetaverse::assets::{AssetMaterial, GltfAlphaMode};
|
||||||
|
use libremetaverse_structured_data::OSDMap;
|
||||||
|
use libremetaverse_types::{Color4, Quaternion, UUID, Vector2, Vector3};
|
||||||
|
|
||||||
|
fn color(r: f32, g: f32, b: f32, a: f32) -> Color4 {
|
||||||
|
Color4::new_with_single_single_single_single(r, g, b, a).expect("Color4 constructor")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn vector2(x: f32, y: f32) -> Vector2 {
|
||||||
|
Vector2::new_with_single_single(x, y).expect("Vector2 constructor")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn color_values(value: &Color4) -> [f32; 4] {
|
||||||
|
[value.r, value.g, value.b, value.a]
|
||||||
|
}
|
||||||
|
|
||||||
|
fn vector2_values(value: &Vector2) -> [f32; 2] {
|
||||||
|
[value.x, value.y]
|
||||||
|
}
|
||||||
|
|
||||||
|
fn vector3_values(value: &Vector3) -> [f32; 3] {
|
||||||
|
[value.x, value.y, value.z]
|
||||||
|
}
|
||||||
|
|
||||||
|
fn quaternion_values(value: &Quaternion) -> [f32; 4] {
|
||||||
|
[value.x, value.y, value.z, value.w]
|
||||||
|
}
|
||||||
|
|
||||||
|
fn uuid_eq(actual: &UUID, expected: &UUID) {
|
||||||
|
assert_eq!(
|
||||||
|
actual.get_bytes().expect("actual UUID bytes"),
|
||||||
|
expected.get_bytes().expect("expected UUID bytes")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn minimal_gltf_json() -> String {
|
||||||
|
r#"{
|
||||||
|
"asset": { "version": "2.0", "generator": "Test" },
|
||||||
|
"scene": 0,
|
||||||
|
"scenes": [{ "name": "Scene", "nodes": [0] }],
|
||||||
|
"nodes": [{ "name": "Mesh", "mesh": 0 }],
|
||||||
|
"meshes": [{
|
||||||
|
"name": "Triangle",
|
||||||
|
"primitives": [{
|
||||||
|
"attributes": { "POSITION": 0 },
|
||||||
|
"indices": 1,
|
||||||
|
"material": 0,
|
||||||
|
"mode": 4
|
||||||
|
}]
|
||||||
|
}],
|
||||||
|
"materials": [{
|
||||||
|
"name": "Mat",
|
||||||
|
"pbrMetallicRoughness": {
|
||||||
|
"baseColorFactor": [1.0, 0.5, 0.0, 1.0],
|
||||||
|
"metallicFactor": 0.0,
|
||||||
|
"roughnessFactor": 1.0
|
||||||
|
},
|
||||||
|
"alphaMode": "OPAQUE",
|
||||||
|
"alphaCutoff": 0.5,
|
||||||
|
"doubleSided": false
|
||||||
|
}],
|
||||||
|
"accessors": [
|
||||||
|
{
|
||||||
|
"bufferView": 0,
|
||||||
|
"byteOffset": 0,
|
||||||
|
"componentType": 5126,
|
||||||
|
"count": 3,
|
||||||
|
"type": "VEC3",
|
||||||
|
"max": [1.0, 1.0, 0.0],
|
||||||
|
"min": [0.0, 0.0, 0.0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView": 1,
|
||||||
|
"byteOffset": 0,
|
||||||
|
"componentType": 5123,
|
||||||
|
"count": 3,
|
||||||
|
"type": "SCALAR"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"bufferViews": [
|
||||||
|
{ "buffer": 0, "byteOffset": 0, "byteLength": 36, "target": 34962 },
|
||||||
|
{ "buffer": 0, "byteOffset": 36, "byteLength": 6, "target": 34963 }
|
||||||
|
],
|
||||||
|
"buffers": [{
|
||||||
|
"byteLength": 44,
|
||||||
|
"uri": "data:application/octet-stream;base64,AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAABAAIAAAA="
|
||||||
|
}]
|
||||||
|
}"#
|
||||||
|
.into()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_document() -> GltfDocument {
|
||||||
|
GltfDocument::load_gltf(minimal_gltf_json(), None).expect("GltfDocument LoadGltf")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn first_primitive(document: &GltfDocument) -> GltfPrimitive {
|
||||||
|
document.meshes()[0]
|
||||||
|
.primitives()
|
||||||
|
.into_iter()
|
||||||
|
.next()
|
||||||
|
.expect("first primitive")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_close(actual: f32, expected: f32, tolerance: f32) {
|
||||||
|
assert!((actual - expected).abs() <= tolerance);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_OverrideToDefault_IsNudgedOffDefault::test df553fd4df83e48d4dd74cdd8aa15a737ea3a416bcad802f7110bbfe79928a31 translated
|
||||||
|
#[test]
|
||||||
|
fn base_color_override_to_default_is_nudged() {
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
let default = AssetMaterial::default().base_color_factor();
|
||||||
|
material
|
||||||
|
.set_base_color_factor_with_color4_boolean(default, Some(true))
|
||||||
|
.expect("SetBaseColorFactor");
|
||||||
|
assert_ne!(
|
||||||
|
color_values(&material.base_color_factor()),
|
||||||
|
color_values(&AssetMaterial::default().base_color_factor())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_NotOverride_LeavesExactDefaultUnchanged::test fec94fcfac0f36cc5813ed087a30e04fcc9815bc02072ea3f5dd282b8698a89c translated
|
||||||
|
#[test]
|
||||||
|
fn base_color_non_override_keeps_default() {
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
let default = AssetMaterial::default().base_color_factor();
|
||||||
|
material
|
||||||
|
.set_base_color_factor_with_color4_boolean(default, None)
|
||||||
|
.expect("SetBaseColorFactor");
|
||||||
|
assert_eq!(
|
||||||
|
color_values(&material.base_color_factor()),
|
||||||
|
color_values(&AssetMaterial::default().base_color_factor())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetMetallicFactor_OverrideToOne_ClampsBelowDefault::test 7fcee795160428082f6e579881867c7b6c83f31549077fc28a46d18c75c485c9 translated
|
||||||
|
#[test]
|
||||||
|
fn metallic_override_to_one_clamps_below_default() {
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
material
|
||||||
|
.set_metallic_factor_with_single_boolean(1.0, Some(true))
|
||||||
|
.expect("SetMetallicFactor");
|
||||||
|
assert!(material.metallic_factor() < 1.0);
|
||||||
|
assert_ne!(
|
||||||
|
material.metallic_factor(),
|
||||||
|
AssetMaterial::default().metallic_factor()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetAlphaMode_OverrideToDefaultOpaque_SetsOverrideFlag::test 8af09d12a58083657e27e285802bb3a6a1d1c136397cea53865d964006343715 translated
|
||||||
|
#[test]
|
||||||
|
fn alpha_mode_override_sets_flag() {
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
material
|
||||||
|
.set_alpha_mode_with_gltf_alpha_mode_boolean(GltfAlphaMode::Opaque, Some(true))
|
||||||
|
.expect("SetAlphaMode");
|
||||||
|
assert!(material.override_alpha_mode());
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetTextureId_OverrideToNull_UsesSentinelUuid::test d9ebf410d2a55c3619b99524a571396fb268e5edd41de955cb86e4ec8cc55c78 translated
|
||||||
|
#[test]
|
||||||
|
fn null_texture_override_uses_sentinel() {
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
material
|
||||||
|
.set_texture_id(AssetMaterial::TEXTURE_BASE_COLOR, UUID::zero(), Some(true))
|
||||||
|
.expect("SetTextureId");
|
||||||
|
uuid_eq(
|
||||||
|
&material.texture_ids()[AssetMaterial::TEXTURE_BASE_COLOR as usize],
|
||||||
|
&AssetMaterial::gltf_override_null_uuid(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_SentinelTexture_ClearsBaseTexture::test 17fd8cdb12ed5d1d0aa1b0a05dbcc357f75aa350d5079b066c957da459d9f628 translated
|
||||||
|
#[test]
|
||||||
|
fn sentinel_override_clears_base_texture() {
|
||||||
|
let mut base = AssetMaterial::new_with_constructor().expect("base material");
|
||||||
|
base.set_texture_id(
|
||||||
|
AssetMaterial::TEXTURE_BASE_COLOR,
|
||||||
|
UUID::random().expect("UUID Random"),
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.expect("base texture");
|
||||||
|
let mut override_ = AssetMaterial::new_with_constructor().expect("override material");
|
||||||
|
override_
|
||||||
|
.set_texture_id(AssetMaterial::TEXTURE_BASE_COLOR, UUID::zero(), Some(true))
|
||||||
|
.expect("override texture");
|
||||||
|
base.apply_override(override_).expect("ApplyOverride");
|
||||||
|
uuid_eq(
|
||||||
|
&base.texture_ids()[AssetMaterial::TEXTURE_BASE_COLOR as usize],
|
||||||
|
&UUID::zero(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_UntouchedTexture_LeavesBaseTextureAlone::test 80ec5e369e3682d92ec6996841b15bda38a3ef6edcd36a2fd9893d8c15459348 translated
|
||||||
|
#[test]
|
||||||
|
fn untouched_override_keeps_base_texture() {
|
||||||
|
let original = UUID::random().expect("UUID Random");
|
||||||
|
let original_copy = UUID::new_with_bytes_int32(original.get_bytes().expect("UUID bytes"), 0)
|
||||||
|
.expect("UUID copy");
|
||||||
|
let mut base = AssetMaterial::new_with_constructor().expect("base material");
|
||||||
|
base.set_texture_id(AssetMaterial::TEXTURE_BASE_COLOR, original, None)
|
||||||
|
.expect("base texture");
|
||||||
|
let override_ = AssetMaterial::new_with_constructor().expect("override material");
|
||||||
|
base.apply_override(override_).expect("ApplyOverride");
|
||||||
|
uuid_eq(
|
||||||
|
&base.texture_ids()[AssetMaterial::TEXTURE_BASE_COLOR as usize],
|
||||||
|
&original_copy,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_ChangedScalar_ReplacesBaseValue::test 4c305c54c4e451932fbd4a4719957f92f38a7f7d28259559b43cb95fcf9250d1 translated
|
||||||
|
#[test]
|
||||||
|
fn changed_scalar_override_replaces_base() {
|
||||||
|
let mut base = AssetMaterial::new_with_constructor().expect("base material");
|
||||||
|
let mut override_ = AssetMaterial::new_with_constructor().expect("override material");
|
||||||
|
override_
|
||||||
|
.set_roughness_factor_with_single_boolean(0.3, Some(true))
|
||||||
|
.expect("SetRoughnessFactor");
|
||||||
|
base.apply_override(override_).expect("ApplyOverride");
|
||||||
|
assert_eq!(base.roughness_factor(), 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseMaterial_ResetsFieldsButKeepsTransforms::test 39312602e736fd8607a41d9e6b6348bfaf6e659cf3f63100ee15edd20b672306 translated
|
||||||
|
#[test]
|
||||||
|
fn set_base_material_keeps_texture_transforms() {
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
material.set_name("Foo".into());
|
||||||
|
material
|
||||||
|
.set_roughness_factor_with_single_boolean(0.2, Some(true))
|
||||||
|
.expect("SetRoughnessFactor");
|
||||||
|
material
|
||||||
|
.set_texture_offset(AssetMaterial::TEXTURE_BASE_COLOR, vector2(0.5, 0.25))
|
||||||
|
.expect("SetTextureOffset");
|
||||||
|
material.set_base_material().expect("SetBaseMaterial");
|
||||||
|
assert_eq!(material.name(), "");
|
||||||
|
assert_eq!(
|
||||||
|
material.roughness_factor(),
|
||||||
|
AssetMaterial::default().roughness_factor()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
vector2_values(
|
||||||
|
&material.texture_transforms()[AssetMaterial::TEXTURE_BASE_COLOR as usize].offset,
|
||||||
|
),
|
||||||
|
vector2_values(&vector2(0.5, 0.25))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_RoundTrip_PreservesOverriddenFields::test 8d542528a14e3b4dcb74ea8a940a44673aada51f98baf8abcdd59a06f36e3cb0 translated
|
||||||
|
#[test]
|
||||||
|
fn override_osd_round_trip_preserves_fields() {
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
material
|
||||||
|
.set_roughness_factor_with_single_boolean(0.4, Some(true))
|
||||||
|
.expect("SetRoughnessFactor");
|
||||||
|
material
|
||||||
|
.set_metallic_factor_with_single_boolean(0.6, Some(true))
|
||||||
|
.expect("SetMetallicFactor");
|
||||||
|
let texture = UUID::random().expect("UUID Random");
|
||||||
|
let expected =
|
||||||
|
UUID::new_with_bytes_int32(texture.get_bytes().expect("UUID bytes"), 0).expect("UUID copy");
|
||||||
|
material
|
||||||
|
.set_texture_id(AssetMaterial::TEXTURE_EMISSIVE, texture, Some(true))
|
||||||
|
.expect("SetTextureId");
|
||||||
|
material
|
||||||
|
.set_texture_rotation(AssetMaterial::TEXTURE_EMISSIVE, 1.25)
|
||||||
|
.expect("SetTextureRotation");
|
||||||
|
let osd = material.to_override_osd().expect("ToOverrideOsd");
|
||||||
|
let round_trip = AssetMaterial::from_override_osd(osd).expect("FromOverrideOsd");
|
||||||
|
assert_eq!(round_trip.roughness_factor(), 0.4);
|
||||||
|
assert_eq!(round_trip.metallic_factor(), 0.6);
|
||||||
|
uuid_eq(
|
||||||
|
&round_trip.texture_ids()[AssetMaterial::TEXTURE_EMISSIVE as usize],
|
||||||
|
&expected,
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
round_trip.texture_transforms()[AssetMaterial::TEXTURE_EMISSIVE as usize].rotation,
|
||||||
|
1.25
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_UntouchedMaterial_ProducesEmptyMap::test c9e29f7ec0e6b28579e0499e3ec89841e01a313a9386ba60257e5e701129b1c2 translated
|
||||||
|
#[test]
|
||||||
|
fn untouched_material_override_osd_is_empty() {
|
||||||
|
let material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
let osd: OSDMap = material.to_override_osd().expect("ToOverrideOsd");
|
||||||
|
assert_eq!(osd.count(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_OverrideToDefaultRoughness_StillEncodesField::test 4ea9920c6709bd29858a8da66313fcee5ebebd646743c5d822dd6c9e477bf3b4 translated
|
||||||
|
#[test]
|
||||||
|
fn default_roughness_override_is_encoded() {
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
material
|
||||||
|
.set_roughness_factor_with_single_boolean(
|
||||||
|
AssetMaterial::default().roughness_factor(),
|
||||||
|
Some(true),
|
||||||
|
)
|
||||||
|
.expect("SetRoughnessFactor");
|
||||||
|
let osd = material.to_override_osd().expect("ToOverrideOsd");
|
||||||
|
assert!(osd.contains_key("rf".into()).expect("ContainsKey"));
|
||||||
|
let round_trip = AssetMaterial::from_override_osd(osd).expect("FromOverrideOsd");
|
||||||
|
assert_ne!(
|
||||||
|
round_trip.roughness_factor(),
|
||||||
|
AssetMaterial::default().roughness_factor()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToJson_RoundTrip_PreservesNameAndColor::test d7ae4270d82671a970fc1b6457292860d24481dd84e9fb919ae60fded5f1914e translated
|
||||||
|
#[test]
|
||||||
|
fn material_json_round_trip_preserves_name_and_color() {
|
||||||
|
let mut material = AssetMaterial::new_with_constructor().expect("AssetMaterial constructor");
|
||||||
|
material.set_name("Chrome".into());
|
||||||
|
material
|
||||||
|
.set_base_color_factor_with_color4_boolean(color(0.1, 0.2, 0.3, 1.0), None)
|
||||||
|
.expect("SetBaseColorFactor");
|
||||||
|
let json = material.to_json().expect("AssetMaterial ToJson");
|
||||||
|
let decoded =
|
||||||
|
AssetMaterial::new_with_uuid_bytes(UUID::random().expect("UUID Random"), json.into_bytes())
|
||||||
|
.expect("AssetMaterial bytes constructor");
|
||||||
|
assert_eq!(decoded.name(), "Chrome");
|
||||||
|
assert_eq!(
|
||||||
|
color_values(&decoded.base_color_factor()),
|
||||||
|
color_values(&material.base_color_factor())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesSceneGraph::test e20583d8de31f793d1dc49d1dfde89e1eb8c00186359e7df4184e862ec9ed649 translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_parses_scene_graph() {
|
||||||
|
let document = load_document();
|
||||||
|
assert_eq!(document.version(), "2.0");
|
||||||
|
assert_eq!(document.generator().as_deref(), Some("Test"));
|
||||||
|
assert_eq!(document.default_scene(), 0);
|
||||||
|
assert_eq!(document.scenes().len(), 1);
|
||||||
|
assert_eq!(document.scenes()[0].nodes().len(), 1);
|
||||||
|
assert_eq!(document.nodes().len(), 1);
|
||||||
|
assert_eq!(document.nodes()[0].mesh(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesMeshAndPrimitive::test ef6a76308db1966423c7746f5414f3d0553587efc388bbedb962f38cc122ecaf translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_parses_mesh_and_primitive() {
|
||||||
|
let document = load_document();
|
||||||
|
assert_eq!(document.meshes().len(), 1);
|
||||||
|
assert_eq!(document.meshes()[0].name().as_deref(), Some("Triangle"));
|
||||||
|
assert_eq!(document.meshes()[0].primitives().len(), 1);
|
||||||
|
let primitive = first_primitive(&document);
|
||||||
|
assert!(primitive.attributes().contains_key("POSITION"));
|
||||||
|
assert_eq!(primitive.indices(), 1);
|
||||||
|
assert_eq!(primitive.material(), 0);
|
||||||
|
assert_eq!(primitive.mode(), GltfPrimitiveMode::Triangles);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesMaterial::test 0147b4d7102c5223f247f69fa4cf3daeb0aa6300ad46ef34d6a17163b694c13e translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_parses_material() {
|
||||||
|
let document = load_document();
|
||||||
|
assert_eq!(document.materials().len(), 1);
|
||||||
|
let material = &document.materials()[0];
|
||||||
|
assert_eq!(material.name().as_deref(), Some("Mat"));
|
||||||
|
assert_close(material.base_color_factor().r, 1.0, 1e-4);
|
||||||
|
assert_close(material.base_color_factor().g, 0.5, 1e-4);
|
||||||
|
assert_close(material.metallic_factor(), 0.0, 1e-4);
|
||||||
|
assert_close(material.roughness_factor(), 1.0, 1e-4);
|
||||||
|
assert_eq!(material.alpha_mode(), GltfAlphaMode::Opaque);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetPositions_ReturnsCorrectTriangle::test c3d444122ab73794a011d5a5aafb0c2aa030975393f967e871dc88db200f5e96 translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_positions_are_correct_triangle() {
|
||||||
|
let document = load_document();
|
||||||
|
let positions = document
|
||||||
|
.get_positions(first_primitive(&document))
|
||||||
|
.expect("GetPositions");
|
||||||
|
assert_eq!(positions.len(), 3);
|
||||||
|
assert_eq!(
|
||||||
|
vector3_values(&positions[0]),
|
||||||
|
vector3_values(&Vector3::zero())
|
||||||
|
);
|
||||||
|
assert_close(positions[1].x, 1.0, 1e-5);
|
||||||
|
assert_close(positions[1].y, 0.0, 1e-5);
|
||||||
|
assert_close(positions[2].x, 0.0, 1e-5);
|
||||||
|
assert_close(positions[2].y, 1.0, 1e-5);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetIndices_ReturnsCorrectValues::test fa39e87a3dfee7258d9a95907a97cbb107f5add7d6a6f9d9800249bb67e2fc58 translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_indices_are_correct() {
|
||||||
|
let document = load_document();
|
||||||
|
let indices = document
|
||||||
|
.get_indices(first_primitive(&document))
|
||||||
|
.expect("GetIndices");
|
||||||
|
assert_eq!(indices, [0, 1, 2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetPositions_EmptyWhenNoAttribute::test 06c691911ee6933f1884f6540d69afafa1f272acfed827c628580438204d9b4b translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_positions_empty_without_attribute() {
|
||||||
|
let document = load_document();
|
||||||
|
let primitive = GltfPrimitive::new().expect("GltfPrimitive constructor");
|
||||||
|
assert_eq!(
|
||||||
|
document
|
||||||
|
.get_positions(primitive)
|
||||||
|
.expect("GetPositions")
|
||||||
|
.len(),
|
||||||
|
0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetNormals_EmptyWhenNoAttribute::test e04480b0b9e23cb561cc55e744ebd85203c759f98ad69febeeb291919f0d91af translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_normals_empty_without_attribute() {
|
||||||
|
let document = load_document();
|
||||||
|
assert_eq!(
|
||||||
|
document
|
||||||
|
.get_normals(first_primitive(&document))
|
||||||
|
.expect("GetNormals")
|
||||||
|
.len(),
|
||||||
|
0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ToJson_RoundTrip_PreservesSceneGraph::test 41c385b7bde3f8e4f4ad98d4f1f737fc6ccc241c2613526fd745eb35430386b2 translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_json_round_trip_preserves_scene_graph() {
|
||||||
|
let original = load_document();
|
||||||
|
let json = original.to_json(None).expect("GltfDocument ToJson");
|
||||||
|
let round_trip = GltfDocument::load_gltf(json, None).expect("GltfDocument LoadGltf");
|
||||||
|
assert_eq!(round_trip.scenes().len(), original.scenes().len());
|
||||||
|
assert_eq!(round_trip.nodes().len(), original.nodes().len());
|
||||||
|
assert_eq!(round_trip.meshes().len(), original.meshes().len());
|
||||||
|
assert_eq!(round_trip.materials().len(), original.materials().len());
|
||||||
|
assert_close(
|
||||||
|
round_trip.materials()[0].base_color_factor().r,
|
||||||
|
original.materials()[0].base_color_factor().r,
|
||||||
|
1e-4,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ToGlb_RoundTrip_PreservesGeometry::test 1e97fe2d1492ac195f6a4386329c76ad131ab99a41b8e03216b1bab8b48fae36 translated
|
||||||
|
#[test]
|
||||||
|
fn glb_round_trip_preserves_geometry() {
|
||||||
|
let original = load_document();
|
||||||
|
let glb = original.to_glb().expect("GltfDocument ToGlb");
|
||||||
|
assert_eq!(&glb[..4], &[0x67, 0x6c, 0x54, 0x46]);
|
||||||
|
let round_trip = GltfDocument::load(glb, None).expect("GltfDocument Load");
|
||||||
|
let positions = round_trip
|
||||||
|
.get_positions(first_primitive(&round_trip))
|
||||||
|
.expect("GetPositions");
|
||||||
|
assert_eq!(positions.len(), 3);
|
||||||
|
assert_close(positions[1].x, 1.0, 1e-5);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.Load_AutoDetectsGlbVsJson::test 6d07930be2302e504ef9ece3fef10f47b855d33ae6c8bff152e82df0beb2a474 translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_load_auto_detects_glb_and_json() {
|
||||||
|
let original = load_document();
|
||||||
|
let glb = original.to_glb().expect("GltfDocument ToGlb");
|
||||||
|
let json = original.to_json(None).expect("GltfDocument ToJson");
|
||||||
|
let from_glb = GltfDocument::load(glb, None).expect("load GLB");
|
||||||
|
let from_json = GltfDocument::load(json.into_bytes(), None).expect("load JSON");
|
||||||
|
assert_eq!(from_glb.meshes().len(), 1);
|
||||||
|
assert_eq!(from_json.meshes().len(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ParseNode_TrsDefaults::test 0f0fbe116d20276c2aee917b940bded9de277ed0b3e3b659844c5b3532755259 translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_node_trs_defaults() {
|
||||||
|
let document = load_document();
|
||||||
|
let node = &document.nodes()[0];
|
||||||
|
assert!(node.matrix().is_none());
|
||||||
|
assert_eq!(
|
||||||
|
vector3_values(&node.translation()),
|
||||||
|
vector3_values(&Vector3::zero())
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
quaternion_values(&node.rotation()),
|
||||||
|
quaternion_values(&Quaternion::identity())
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
vector3_values(&node.scale()),
|
||||||
|
vector3_values(&Vector3::one())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ParseNode_ExplicitMatrix::test 197ba2ee3a66cbb7d927acea13ce9dc84e62af8a500d939957749039118755c8 translated
|
||||||
|
#[test]
|
||||||
|
fn gltf_node_explicit_matrix() {
|
||||||
|
let document = GltfDocument::load_gltf(
|
||||||
|
r#"{
|
||||||
|
"asset": { "version": "2.0" },
|
||||||
|
"nodes": [{
|
||||||
|
"matrix": [1,0,0,0, 0,1,0,0, 0,0,1,0, 5,6,7,1]
|
||||||
|
}]
|
||||||
|
}"#
|
||||||
|
.into(),
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.expect("GltfDocument LoadGltf");
|
||||||
|
let matrix = document.nodes()[0]
|
||||||
|
.matrix()
|
||||||
|
.flatten()
|
||||||
|
.expect("explicit matrix");
|
||||||
|
assert_close(matrix.m14, 5.0, 1e-5);
|
||||||
|
assert_close(matrix.m24, 6.0, 1e-5);
|
||||||
|
assert_close(matrix.m34, 7.0, 1e-5);
|
||||||
|
}
|
||||||
@@ -90,19 +90,6 @@
|
|||||||
// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary::test af99909259d531024895ce7ea325b49927a12daa886a35eab3d52e3f8fc76921
|
// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_EmptyList_ReturnsEmptyDictionary::test af99909259d531024895ce7ea325b49927a12daa886a35eab3d52e3f8fc76921
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues::test 0aec57fab35764525195e6c0e08a63ff10a467be684295381731c04e836539b5
|
// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_RoundTrip_DefaultValues::test 0aec57fab35764525195e6c0e08a63ff10a467be684295381731c04e836539b5
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams::test ff87dd3a506027ad248006b3b55d85a18b0810bc5b4e3a72eb81d31ebbe4184a
|
// pending-parity-case: LibreMetaverse.Tests/AppearanceTests.cs::AppearanceTests.AvatarAppearanceEventArgs_DecodeVisualParams_MatchesAvatarDecodeVisualParams::test ff87dd3a506027ad248006b3b55d85a18b0810bc5b4e3a72eb81d31ebbe4184a
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_OverrideToDefault_IsNudgedOffDefault::test df553fd4df83e48d4dd74cdd8aa15a737ea3a416bcad802f7110bbfe79928a31
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseColorFactor_NotOverride_LeavesExactDefaultUnchanged::test fec94fcfac0f36cc5813ed087a30e04fcc9815bc02072ea3f5dd282b8698a89c
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetMetallicFactor_OverrideToOne_ClampsBelowDefault::test 7fcee795160428082f6e579881867c7b6c83f31549077fc28a46d18c75c485c9
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetAlphaMode_OverrideToDefaultOpaque_SetsOverrideFlag::test 8af09d12a58083657e27e285802bb3a6a1d1c136397cea53865d964006343715
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetTextureId_OverrideToNull_UsesSentinelUuid::test d9ebf410d2a55c3619b99524a571396fb268e5edd41de955cb86e4ec8cc55c78
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_SentinelTexture_ClearsBaseTexture::test 17fd8cdb12ed5d1d0aa1b0a05dbcc357f75aa350d5079b066c957da459d9f628
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_UntouchedTexture_LeavesBaseTextureAlone::test 80ec5e369e3682d92ec6996841b15bda38a3ef6edcd36a2fd9893d8c15459348
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ApplyOverride_ChangedScalar_ReplacesBaseValue::test 4c305c54c4e451932fbd4a4719957f92f38a7f7d28259559b43cb95fcf9250d1
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.SetBaseMaterial_ResetsFieldsButKeepsTransforms::test 39312602e736fd8607a41d9e6b6348bfaf6e659cf3f63100ee15edd20b672306
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_RoundTrip_PreservesOverriddenFields::test 8d542528a14e3b4dcb74ea8a940a44673aada51f98baf8abcdd59a06f36e3cb0
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_UntouchedMaterial_ProducesEmptyMap::test c9e29f7ec0e6b28579e0499e3ec89841e01a313a9386ba60257e5e701129b1c2
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToOverrideOsd_OverrideToDefaultRoughness_StillEncodesField::test 4ea9920c6709bd29858a8da66313fcee5ebebd646743c5d822dd6c9e477bf3b4
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AssetMaterialOverrideTests.cs::AssetMaterialOverrideTests.ToJson_RoundTrip_PreservesNameAndColor::test d7ae4270d82671a970fc1b6457292860d24481dd84e9fb919ae60fded5f1914e
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.RequestOwnAvatarTextures_WhenNotConnected_DoesNotThrow::test bf3539f68a0adc58c2166289ca1c75f6ff03906f71ffe2fb749f6990404b541a
|
// pending-parity-case: LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.RequestOwnAvatarTextures_WhenNotConnected_DoesNotThrow::test bf3539f68a0adc58c2166289ca1c75f6ff03906f71ffe2fb749f6990404b541a
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_AcceptsHigherVersion::test 3656364491dcd7a05c868b11ea0d8be48609d10c6054b9696f54cbac10cfe6df
|
// pending-parity-case: LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_AcceptsHigherVersion::test 3656364491dcd7a05c868b11ea0d8be48609d10c6054b9696f54cbac10cfe6df
|
||||||
// pending-parity-case: LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_RejectsLowerVersion::test f4a827fcace9d50306a8c375183e056140996d2a39b02e4dd12fc6cc79e5d0f0
|
// pending-parity-case: LibreMetaverse.Tests/AvatarManagerTests.cs::AvatarManagerTests.UpdateLastReceivedCOFVersion_RejectsLowerVersion::test f4a827fcace9d50306a8c375183e056140996d2a39b02e4dd12fc6cc79e5d0f0
|
||||||
@@ -133,7 +120,6 @@
|
|||||||
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.ObjectManager_Null_Throws::test 8a11feba0edfb35e5dd99f681182e8f5a5cf8a3f738211b45a683a8a2ad45ddb
|
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.ObjectManager_Null_Throws::test 8a11feba0edfb35e5dd99f681182e8f5a5cf8a3f738211b45a683a8a2ad45ddb
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AgentManager_Null_Throws::test d86e41b6cdd03063685aa330c31b9a274c1d400b9a461abf3065fe185fe0bbf0
|
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AgentManager_Null_Throws::test d86e41b6cdd03063685aa330c31b9a274c1d400b9a461abf3065fe185fe0bbf0
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AvatarManager_Null_Throws::test 54f23cbf0ba87b0525c2914e78d75808e93fd1c460fc0bec4d15f09575b1431c
|
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AvatarManager_Null_Throws::test 54f23cbf0ba87b0525c2914e78d75808e93fd1c460fc0bec4d15f09575b1431c
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ConstructorNullArgumentTests.cs::ConstructorNullArgumentTests.AssetManager_Null_Throws::test 4fa1be8b233dacf6a5955359f2197ff77ae85ffbf2c3c68fcd8cbe672c2c5f91
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException::test 243079029ec81f92ffbc587007a2421389963f72c7843786c5b9a8634a7ddca3
|
// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Constructor_WithNullClient_ThrowsArgumentNullException::test 243079029ec81f92ffbc587007a2421389963f72c7843786c5b9a8634a7ddca3
|
||||||
// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow::test 1d0daac0bfa091bc3c3bffddc32a1511295dd7101f8ab5dfbf305b13b9ac7405
|
// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledOnce_DoesNotThrow::test 1d0daac0bfa091bc3c3bffddc32a1511295dd7101f8ab5dfbf305b13b9ac7405
|
||||||
// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow::test 124b41c342a295f02e9d5991d1dead0ff3e9a780f96424b88f75117ca206460b
|
// pending-parity-case: LibreMetaverse.Tests/CurrentOutfitFolderTests.cs::CurrentOutfitFolderTests.Dispose_CalledMultipleTimes_DoesNotThrow::test 124b41c342a295f02e9d5991d1dead0ff3e9a780f96424b88f75117ca206460b
|
||||||
@@ -194,28 +180,6 @@
|
|||||||
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow::test cf095ab428713004ebac6e1915a47ae0c03bd2958addbba2a39fd2f0edf51a74
|
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Allowed_ReturnsAllow::test cf095ab428713004ebac6e1915a47ae0c03bd2958addbba2a39fd2f0edf51a74
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock::test af084d1ab7a11079e6251865e8fd5aecfde38d2df359ebc1e208bc74925935c0
|
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_Blocked_ReturnsBlock::test af084d1ab7a11079e6251865e8fd5aecfde38d2df359ebc1e208bc74925935c0
|
||||||
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget::test 93204469ecfec2f3f4eb6838c99f6e2baf09bf76a075958d1ed369ba03767158
|
// pending-parity-case: LibreMetaverse.Tests/ExperiencePreferencesMessageTests.cs::ExperiencePreferencesMessageTests.ExtractExperiencePermission_NeitherList_ReturnsForget::test 93204469ecfec2f3f4eb6838c99f6e2baf09bf76a075958d1ed369ba03767158
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SetMaterialOverrideAsync_HappyPath_PostsBareArrayWithGltfJson::test 0c51b7b793111f5433e52057f26fa5a98d983e7230fefeb61a7b3408e97f28ee
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ClearMaterialOverrideAsync_SendsEmptyGltfJson::test 8394d063ea71447d9ce2b76fd00be1d10967f9193e1eb909c5b9f2da56eec812
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.ApplyMaterialAsync_WithoutOverride_SendsAssetIdOnly::test 1db03ab6710ecf532644398d1fef5e82520e1206058d66fb15c8885fdc8f8363
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_MultipleEntries_SendsSingleArrayBody::test 621dca88e7f1c9e024563204ca05c3c8d9a03c4b5a7b31ec1c006abe6732b47b
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_ServerRejects_ReturnsFalse::test e9fbd95fff84695e2cb1a35943bda768f00cf9015b25e0ae1505dce4dde603a4
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GLTFMaterialOverrideCapTests.cs::GLTFMaterialOverrideCapTests.SendMaterialUpdatesAsync_NoCapability_ReturnsFalseWithoutRequest::test fdceb6bf865cb23386a6b82a9741f230e5c22b0ec6d37bc2ac8478f29292a49f
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_HappyPath_PostsMetadataThenJsonAndReturnsNewAsset::test 5ac0e3c27fa6ebfddc9d7582aefb0684a676413948b055382c43b1b0b1cd7e7e
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialTaskInventoryAsync_HappyPath_PostsItemIdAndTaskId::test 7ac0e7d210b1aefa795e479f4da0d2dd4caae0b3bbe84ca124707c3ae005bbbd
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_NoCapability_Throws::test 325269807d778264e571d1518ca9a2ca69a27ba67ad689e580f2636ab595f335
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GLTFMaterialUploadTests.cs::GLTFMaterialUploadTests.RequestUpdateMaterialAgentInventoryAsync_UploadedJsonRoundTripsMaterial::test fd059dfc8c9299c3b6583b3b47ba18ae9c92e3ad923f88634019b0ab9f34d401
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesSceneGraph::test e20583d8de31f793d1dc49d1dfde89e1eb8c00186359e7df4184e862ec9ed649
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesMeshAndPrimitive::test ef6a76308db1966423c7746f5414f3d0553587efc388bbedb962f38cc122ecaf
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.LoadGltf_ParsesMaterial::test 0147b4d7102c5223f247f69fa4cf3daeb0aa6300ad46ef34d6a17163b694c13e
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetPositions_ReturnsCorrectTriangle::test c3d444122ab73794a011d5a5aafb0c2aa030975393f967e871dc88db200f5e96
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetIndices_ReturnsCorrectValues::test fa39e87a3dfee7258d9a95907a97cbb107f5add7d6a6f9d9800249bb67e2fc58
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetPositions_EmptyWhenNoAttribute::test 06c691911ee6933f1884f6540d69afafa1f272acfed827c628580438204d9b4b
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.GetNormals_EmptyWhenNoAttribute::test e04480b0b9e23cb561cc55e744ebd85203c759f98ad69febeeb291919f0d91af
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ToJson_RoundTrip_PreservesSceneGraph::test 41c385b7bde3f8e4f4ad98d4f1f737fc6ccc241c2613526fd745eb35430386b2
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ToGlb_RoundTrip_PreservesGeometry::test 1e97fe2d1492ac195f6a4386329c76ad131ab99a41b8e03216b1bab8b48fae36
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.Load_AutoDetectsGlbVsJson::test 6d07930be2302e504ef9ece3fef10f47b855d33ae6c8bff152e82df0beb2a474
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ParseNode_TrsDefaults::test 0f0fbe116d20276c2aee917b940bded9de277ed0b3e3b659844c5b3532755259
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/GltfDocumentTests.cs::GltfDocumentTests.ParseNode_ExplicitMatrix::test 197ba2ee3a66cbb7d927acea13ce9dc84e62af8a500d939957749039118755c8
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/InventoryAISClientTests.cs::InventoryAISClientTests.ParseLinksFromEmbedded_ObjectAsset_ResultsInAttachmentInventoryTypeAndParsesFields::test 3ae365ed34f12d036dcd44c94f8568d163cfeec2a58b4975975b77b418770131
|
// pending-parity-case: LibreMetaverse.Tests/InventoryAISClientTests.cs::InventoryAISClientTests.ParseLinksFromEmbedded_ObjectAsset_ResultsInAttachmentInventoryTypeAndParsesFields::test 3ae365ed34f12d036dcd44c94f8568d163cfeec2a58b4975975b77b418770131
|
||||||
// pending-parity-case: LibreMetaverse.Tests/InventoryAISClientTests.cs::InventoryAISClientTests.ParseItemsFromEmbedded_ItemsKey_ParsesConcreteItems::test d9e7c64106639071e1ec6ada7346bfa050a31183becaac79efefcd4755fe2855
|
// pending-parity-case: LibreMetaverse.Tests/InventoryAISClientTests.cs::InventoryAISClientTests.ParseItemsFromEmbedded_ItemsKey_ParsesConcreteItems::test d9e7c64106639071e1ec6ada7346bfa050a31183becaac79efefcd4755fe2855
|
||||||
// pending-parity-case: LibreMetaverse.Tests/InventoryAISClientTests.cs::InventoryAISClientTests.ParseLinksFromEmbedded_MeshAsset_TreatedAsAttachment::test f807110d577c654128dd8d42e618c610c260c4f3367cf2795776564409f876a2
|
// pending-parity-case: LibreMetaverse.Tests/InventoryAISClientTests.cs::InventoryAISClientTests.ParseLinksFromEmbedded_MeshAsset_TreatedAsAttachment::test f807110d577c654128dd8d42e618c610c260c4f3367cf2795776564409f876a2
|
||||||
@@ -339,10 +303,6 @@
|
|||||||
// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsAttachment_WhenTargetIsAttachment::test f58debff8f66b7b417215eb6879f96935647b66cc619fdb00e6815c9ce5e7c67
|
// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsAttachment_WhenTargetIsAttachment::test f58debff8f66b7b417215eb6879f96935647b66cc619fdb00e6815c9ce5e7c67
|
||||||
// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsObject_WhenTargetIsObject::test b8137c994019103977b0b85d8c148e12ae8f9051334ca487db7c88bcbe707d40
|
// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_Indexer_ReturnsObject_WhenTargetIsObject::test b8137c994019103977b0b85d8c148e12ae8f9051334ca487db7c88bcbe707d40
|
||||||
// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_NotContains_WhenTargetAbsent::test 6900e220c33ec135d02c55e047c7052a095d5dd9d71da4a857ae70bc151c472b
|
// pending-parity-case: LibreMetaverse.Tests/MisclassifiedLinkRegressionTests.cs::MisclassifiedLinkRegressionTests.InventoryStore_NotContains_WhenTargetAbsent::test 6900e220c33ec135d02c55e047c7052a095d5dd9d71da4a857ae70bc151c472b
|
||||||
// pending-parity-case: LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_StandardRegion_Loads256x256::test c4e3a994baf06b0106a6614e9c3efbcc27e45ff1725f5470d2db6ded1fff6014
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_Varregion_Loads512x512::test 4820338f10acbb4987e26992d7a7957be58ab6bc548674bf18943ef312962894
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_WrongByteCount_FailsGracefully::test ff6fb4feb2773c93397d412d0ecf6aef1f3636e823dabb729a7a6cbe94d1513f
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/OarFileTerrainTests.cs::OarFileTerrainTests.LoadTerrain_NonSquarePostCount_FailsGracefully::test 218754e53232cd10318668c70b94ae9d7d541d09598b0490082e023e76d6045f
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_BareArrayOfArraysResponse_RaisesInstantMessage::test d51f69e0fa1e1e59a5cedec7d60315d1f590848672a9f4f0c5e21d2abff5c372
|
// pending-parity-case: LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_BareArrayOfArraysResponse_RaisesInstantMessage::test d51f69e0fa1e1e59a5cedec7d60315d1f590848672a9f4f0c5e21d2abff5c372
|
||||||
// pending-parity-case: LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_MessagesMapResponse_RaisesInstantMessage::test dbce6320d57d12ca5557cfba65257e15be314cde947b20dd21bc386819fcb3ce
|
// pending-parity-case: LibreMetaverse.Tests/OfflineMessagesTests.cs::OfflineMessagesTests.RetrieveInstantMessagesAsync_MessagesMapResponse_RaisesInstantMessage::test dbce6320d57d12ca5557cfba65257e15be314cde947b20dd21bc386819fcb3ce
|
||||||
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathBegin::test 5c8e14e1d08a91a4e7c3e252c932b8fe15cf6b5231cc9fe5bb7ef2ae6e2c8299
|
// pending-parity-case: LibreMetaverse.Tests/PrimObjectTests.cs::PrimObjectTests.PathBegin::test 5c8e14e1d08a91a4e7c3e252c932b8fe15cf6b5231cc9fe5bb7ef2ae6e2c8299
|
||||||
@@ -996,10 +956,6 @@
|
|||||||
// pending-parity-case: LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_PlainAssetId_ParsesWithoutDecryption::test 95f39928dae61bca86b7d0a0702307db6c5fdc754e51f73a24bd5ee131e6de3f
|
// pending-parity-case: LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_PlainAssetId_ParsesWithoutDecryption::test 95f39928dae61bca86b7d0a0702307db6c5fdc754e51f73a24bd5ee131e6de3f
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_NonSuccessStatus_ReturnsContentsFolderOnly::test b8a25891064e470ac8d77ecd8a4847cf773b043de5ebeae275a9dd6669518585
|
// pending-parity-case: LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_NonSuccessStatus_ReturnsContentsFolderOnly::test b8a25891064e470ac8d77ecd8a4847cf773b043de5ebeae275a9dd6669518585
|
||||||
// pending-parity-case: LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_NoCapability_DoesNotMakeHttpRequest::test c0c43ebcf781fb81b1fef7ce1dd2774e350d92ef882f49876f1a16d23a338592
|
// pending-parity-case: LibreMetaverse.Tests/RequestTaskInventoryCapTests.cs::RequestTaskInventoryCapTests.GetTaskInventoryAsync_NoCapability_DoesNotMakeHttpRequest::test c0c43ebcf781fb81b1fef7ce1dd2774e350d92ef882f49876f1a16d23a338592
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_HappyPath_PostsMetadataThenImageAndReturnsTrue::test 2e02bd16ef1431c2ca82d7804dffc764be0175cff5daff8c38d0a61641439e06
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploaderMissingFromResponse_ReturnsFalseWithoutSecondRequest::test 2f9498d57d7a512399f9b108765e6e8da8e4c937402f9671d580c66332630432
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_UploadDoesNotComplete_ReturnsFalse::test 937b682b406506ec9fba9570852bbf8689450a11cbecb85979af97609b1794f9
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SendPostcardTests.cs::SendPostcardTests.SendPostcardAsync_NoCapability_ReturnsFalseWithoutRequest::test 8d3ef84e873096d9388bb7db3eaeeb79c661fd9951e338f71bbf3251ae6580e8
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent::test df6eb48241f71c34074be66869c9ae1d5980186583259568728261b5eedd7c48
|
// pending-parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_IgnoresPostBody_UsesSimConsoleResponseEvent::test df6eb48241f71c34074be66869c9ae1d5980186583259568728261b5eedd7c48
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout::test 2ac5a6c96f3acec341056387d727288fd3661565bd2a7c385078602efe8661da
|
// pending-parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SendSimConsoleCommandAsync_NoResponseEvent_ReturnsNullAfterTimeout::test 2ac5a6c96f3acec341056387d727288fd3661565bd2a7c385078602efe8661da
|
||||||
// pending-parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField::test 4d367bc3fd012d1579847fd9837bf883c5ea95452776a086bbf856899d7c2099
|
// pending-parity-case: LibreMetaverse.Tests/SimConsoleTests.cs::SimConsoleTests.SimConsoleResponseMessage_Deserialize_ReadsBodyField::test 4d367bc3fd012d1579847fd9837bf883c5ea95452776a086bbf856899d7c2099
|
||||||
@@ -1038,12 +994,6 @@
|
|||||||
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly::test abf53480da20d1ff57f5f06f1433c120ea84e0d6d5363cb33e4a275d76cfa306
|
// pending-parity-case: LibreMetaverse.Tests/SlurlParserTests.cs::SlurlParserTests.ParseAllSlappCommands_RecognizesCorrectly::test abf53480da20d1ff57f5f06f1433c120ea84e0d6d5363cb33e4a275d76cfa306
|
||||||
// pending-parity-case: LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields::test f37ef06cfba37754effe04a0bb0edfa159c761b811a05efd95157896756bef16
|
// pending-parity-case: LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.ViewerStartAuctionPacket_RoundTripsAgentAndParcelFields::test f37ef06cfba37754effe04a0bb0edfa159c761b811a05efd95157896756bef16
|
||||||
// pending-parity-case: LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.StartAuction_DoesNotThrow::test deec194333b480dabb3f6e6d96b360a29d11a40ca1103117fc7ce5cdb80d6eb0
|
// pending-parity-case: LibreMetaverse.Tests/StartAuctionTests.cs::StartAuctionTests.StartAuction_DoesNotThrow::test deec194333b480dabb3f6e6d96b360a29d11a40ca1103117fc7ce5cdb80d6eb0
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ParsesFourSlotsWithSomeEmpty::test 0b7f2b5a7a95c70f4ed97b9b028f3ec16f1cd427a9d4d1b133523bd331f6b9f2
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_ServerReportsFailure_ReturnsNull::test c66b84662333288b7328822d1f9fa79450075d44a1178a9b0b661671072efe5b
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.GetTerrainMaterialOverridesAsync_NoCapability_ReturnsNullWithoutRequest::test 677f80689e1b6a67893d100e1116805fb9f63c5b6ec33e64a4dc9a4cf24c1237
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_MixOfNullAndSet_PostsFourEntries::test a4ce031e565ca7eb1864064d299dbf0c7b715581ce330a57be9c3aa93987e67c
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_WrongLength_Throws::test 836099a369b37555049b1c1ddfb9562c57cdef88381b7a79e8b80fe62b169a44
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TerrainMaterialOverrideTests.cs::TerrainMaterialOverrideTests.SetTerrainMaterialOverridesAsync_NoCapability_ReturnsFalseWithoutRequest::test 37948cbc0240910d63782d88c0fb9f1d239215cea34a5aa84ac68a10d0555e87
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d3ad6116f2458248 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55
|
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d3ad6116f2458248 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:c6f3ac57944a5314 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55
|
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:c6f3ac57944a5314 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d59eced1ded07f84 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55
|
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_HighFace_TextureID_IsPreserved::case:d59eced1ded07f84 5f215cd1c50fa8871967653b4667f848c14ff24a3b71906e51aac13c56de1f55
|
||||||
@@ -1054,12 +1004,6 @@
|
|||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatU_IsPreserved::test 58e80815263025ec54cd15e3c9a42771f5e55c81e9acb212a0f163faef9fd499
|
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatU_IsPreserved::test 58e80815263025ec54cd15e3c9a42771f5e55c81e9acb212a0f163faef9fd499
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatV_IsPreserved::test fbeb1fdd584a26576b6f1ba653b2995d1a6d6bccc2c1dc51e46aa9f211b78724
|
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_Face32_RepeatV_IsPreserved::test fbeb1fdd584a26576b6f1ba653b2995d1a6d6bccc2c1dc51e46aa9f211b78724
|
||||||
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_AllFaces_TextureIDs_AllPreserved::test 5e5a390af8deff77ef80f751735456541f24d7e27666557d50d99065cc3ba6a4
|
// pending-parity-case: LibreMetaverse.Tests/TextureEntryTests.cs::TextureEntryTests.RoundTrip_AllFaces_TextureIDs_AllPreserved::test 5e5a390af8deff77ef80f751735456541f24d7e27666557d50d99065cc3ba6a4
|
||||||
// pending-parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_AgentInventoryItem_SendsBareItemIdAndReturnsNewAsset::test 40ca874a37dade3bfbb391a2b4a75c684cfd7509b269286ccc14d747340d095d
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_TaskInventoryItem_SendsItemIdAndTaskId::test dae80f9a7ba6222a651165f779c123d8472f88a17490e69a1112acc3cec6d108
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_KnownLocalFolder_SendsCategoryId::test 1ccca44bbead54fd5041c41fc6560478ba17f9e5d9bacff21096b254d2f526db
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_NoCapability_ReturnsNullWithoutRequest::test 2bc1ad18b159c5d62a18d2208ed3cf3c88d3f666a0e0dad8730778cd22b59eda
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_MetadataResponseMissingUploader_ReturnsNullWithoutSecondRequest::test 8db3eddf1204ad795e9d5ef15365f422f96191a8b4c24ef3393b03c10d92d662
|
|
||||||
// pending-parity-case: LibreMetaverse.Tests/UploadThumbnailTests.cs::UploadThumbnailTests.UploadThumbnailAsync_UploadDoesNotComplete_ReturnsNull::test e870f6913e3f45676ce490069930427e6c625072fc1d6ebbf16f503be51df4ae
|
|
||||||
// pending-parity-case: LibreMetaverse.Rendering.Tests/Avatar/AvatarBoneMathTests.cs::AvatarBoneMathTests.BuildBoneWorldMatrices_UnitScale_MatchesNaiveMatrixChain::test 32ea442e98ebfe42238424274aefa960d9bac9a5048c4c971b315b712f870291
|
// pending-parity-case: LibreMetaverse.Rendering.Tests/Avatar/AvatarBoneMathTests.cs::AvatarBoneMathTests.BuildBoneWorldMatrices_UnitScale_MatchesNaiveMatrixChain::test 32ea442e98ebfe42238424274aefa960d9bac9a5048c4c971b315b712f870291
|
||||||
// pending-parity-case: LibreMetaverse.Rendering.Tests/Avatar/AvatarBoneMathTests.cs::AvatarBoneMathTests.BuildBoneWorldMatrices_AnisotropicParentScale_OffsetsChildPositionButNotChildScale::test c82d9c6df0612703729e75ec955e4ef90651bb290d3daebe8d8bed7bba8891a3
|
// pending-parity-case: LibreMetaverse.Rendering.Tests/Avatar/AvatarBoneMathTests.cs::AvatarBoneMathTests.BuildBoneWorldMatrices_AnisotropicParentScale_OffsetsChildPositionButNotChildScale::test c82d9c6df0612703729e75ec955e4ef90651bb290d3daebe8d8bed7bba8891a3
|
||||||
// pending-parity-case: LibreMetaverse.Rendering.Tests/MeshFoundry/MeshFoundryTests.cs::MeshFoundryTests.GenerateSimpleMesh_Box_ReturnsNonNull::test cc5f4d8a21dd21e23e21c6372a4b21e100bffb0fc2a6b9a745d4283c1b05286d
|
// pending-parity-case: LibreMetaverse.Rendering.Tests/MeshFoundry/MeshFoundryTests.cs::MeshFoundryTests.GenerateSimpleMesh_Box_ReturnsNonNull::test cc5f4d8a21dd21e23e21c6372a4b21e100bffb0fc2a6b9a745d4283c1b05286d
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -73,6 +73,7 @@ WIRE_ROOT_TYPES = {
|
|||||||
"T:LibreMetaverse.TreeDefinition",
|
"T:LibreMetaverse.TreeDefinition",
|
||||||
}
|
}
|
||||||
COMPOSED_BASE_TYPES = {
|
COMPOSED_BASE_TYPES = {
|
||||||
|
"T:LibreMetaverse.InventoryFolder",
|
||||||
"T:LibreMetaverse.Messages.Linden.ChatSessionAcceptInvitation",
|
"T:LibreMetaverse.Messages.Linden.ChatSessionAcceptInvitation",
|
||||||
"T:LibreMetaverse.Messages.Linden.ChatSessionRequestMuteUpdate",
|
"T:LibreMetaverse.Messages.Linden.ChatSessionRequestMuteUpdate",
|
||||||
"T:LibreMetaverse.Messages.Linden.ChatSessionRequestStartConference",
|
"T:LibreMetaverse.Messages.Linden.ChatSessionRequestStartConference",
|
||||||
|
|||||||
@@ -171,6 +171,10 @@ MEMBER_RETURN_OVERRIDES = {
|
|||||||
"M:LibreMetaverse.Caps.Capabilities": "Vec<String>",
|
"M:LibreMetaverse.Caps.Capabilities": "Vec<String>",
|
||||||
}
|
}
|
||||||
MEMBER_SIGNATURE_OVERRIDES = {
|
MEMBER_SIGNATURE_OVERRIDES = {
|
||||||
|
"M:LibreMetaverse.AssetManager.#ctor(LibreMetaverse.GridClient)": (
|
||||||
|
"pub fn new(client: Option<libremetaverse::GridClient>) -> Result<Self, crate::Error>",
|
||||||
|
"optional_owned",
|
||||||
|
),
|
||||||
"M:LibreMetaverse.Helpers.ZeroDecode(System.Byte[],System.Int32,System.Byte[])": (
|
"M:LibreMetaverse.Helpers.ZeroDecode(System.Byte[],System.Int32,System.Byte[])": (
|
||||||
"pub fn zero_decode(src: Option<&[u8]>, srclen: i32, dest: Option<&mut [u8]>) "
|
"pub fn zero_decode(src: Option<&[u8]>, srclen: i32, dest: Option<&mut [u8]>) "
|
||||||
"-> Result<i32, crate::Error>",
|
"-> Result<i32, crate::Error>",
|
||||||
@@ -187,6 +191,18 @@ MEMBER_SIGNATURE_OVERRIDES = {
|
|||||||
"-> Result<(), crate::Error>",
|
"-> Result<(), crate::Error>",
|
||||||
"mutable_self,owned,mutable_borrow,mutable_borrow,optional_mutable_borrow",
|
"mutable_self,owned,mutable_borrow,mutable_borrow,optional_mutable_borrow",
|
||||||
),
|
),
|
||||||
|
"M:LibreMetaverse.TerrainManager.GetTerrainMaterialOverridesAsync(System.Threading.CancellationToken)": (
|
||||||
|
"pub async fn get_terrain_material_overrides(&self, cancellation_token: "
|
||||||
|
"Option<libremetaverse_types::compat::CancellationToken>) "
|
||||||
|
"-> Result<Option<Vec<Option<libremetaverse::assets::AssetMaterial>>>, crate::Error>",
|
||||||
|
"shared_self,optional_owned",
|
||||||
|
),
|
||||||
|
"M:LibreMetaverse.TerrainManager.SetTerrainMaterialOverridesAsync(LibreMetaverse.Assets.AssetMaterial[],System.Threading.CancellationToken)": (
|
||||||
|
"pub async fn set_terrain_material_overrides(&self, overrides: "
|
||||||
|
"Vec<Option<libremetaverse::assets::AssetMaterial>>, cancellation_token: "
|
||||||
|
"Option<libremetaverse_types::compat::CancellationToken>) -> Result<bool, crate::Error>",
|
||||||
|
"shared_self,owned,optional_owned",
|
||||||
|
),
|
||||||
}
|
}
|
||||||
PROPERTY_SIGNATURE_OVERRIDES = {
|
PROPERTY_SIGNATURE_OVERRIDES = {
|
||||||
"P:LibreMetaverse.GridClient.Self": (
|
"P:LibreMetaverse.GridClient.Self": (
|
||||||
@@ -600,6 +616,10 @@ def method_receiver(owner: dict, item: dict) -> tuple[str, str]:
|
|||||||
return "", "none"
|
return "", "none"
|
||||||
if item["name"] == "Deserialize":
|
if item["name"] == "Deserialize":
|
||||||
return "&mut self", "mutable_self"
|
return "&mut self", "mutable_self"
|
||||||
|
if owner["doc_id"] == "T:LibreMetaverse.Assets.AssetMaterial" and item["name"].startswith(
|
||||||
|
("Apply", "Decode", "Encode", "Set")
|
||||||
|
):
|
||||||
|
return "&mut self", "mutable_self"
|
||||||
if owner["doc_id"] == "T:LibreMetaverse.BitPack" and item["name"].startswith(("Pack", "Unpack")):
|
if owner["doc_id"] == "T:LibreMetaverse.BitPack" and item["name"].startswith(("Pack", "Unpack")):
|
||||||
return "&mut self", "mutable_self"
|
return "&mut self", "mutable_self"
|
||||||
if (
|
if (
|
||||||
|
|||||||
Reference in New Issue
Block a user