From e788b3d30e23fa1918d62df9730d5fff5be144c1 Mon Sep 17 00:00:00 2001 From: Scott McKay Date: Tue, 3 Sep 2024 10:08:29 +1000 Subject: [PATCH] Fix C# warnings. (#21913) ### Description Update some testing dependencies. Fix various warnings. Mainly around documentation (existing) and unit test usage (mainly resulting from xunit update). Invalid angle brackets for generics in documentation were changed to use curly braces based on https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/xmldoc/ > To refer to generic identifiers in code reference (cref) elements, you can use either the escape characters (for example, cref="List<T>") or braces (cref="List{T}"). As a special case, the compiler parses the braces as angle brackets to make the documentation comment less cumbersome to the author when referring to generic identifiers. ### Motivation and Context --- .../DisposableNamedOnnxValue.shared.cs | 8 +++---- .../InferenceSession.shared.cs | 5 ++-- .../ManagedProjections.shared.cs | 2 +- .../NamedOnnxValue.shared.cs | 23 +++++-------------- .../NativeMethods.shared.cs | 17 +++++++------- .../NativeOnnxValueHelper.shared.cs | 2 +- .../Microsoft.ML.OnnxRuntime/OrtEnv.shared.cs | 2 +- .../OrtFloat16.shared.cs | 11 ++++----- .../ProviderOptions.shared.cs | 8 +++---- .../SessionOptions.shared.cs | 10 ++++---- .../InferenceTest.cs | 23 +++++++++++-------- ...crosoft.ML.OnnxRuntime.Tests.Common.csproj | 4 ++-- .../OrtIoBindingAllocationTest.cs | 1 + .../Tensors/TensorTests.cs | 4 ++++ ...icrosoft.ML.OnnxRuntime.Tests.Droid.csproj | 2 +- .../InferenceTest.netcore.cs | 18 +++++++-------- ...oft.ML.OnnxRuntime.Tests.NetCoreApp.csproj | 6 ++--- 17 files changed, 71 insertions(+), 75 deletions(-) diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/DisposableNamedOnnxValue.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/DisposableNamedOnnxValue.shared.cs index 6d69f58d20..a73bca7f3e 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/DisposableNamedOnnxValue.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/DisposableNamedOnnxValue.shared.cs @@ -83,7 +83,7 @@ namespace Microsoft.ML.OnnxRuntime /// Ctor /// /// Name of the output value - /// Managed object created to represent output value, such as DenseTensor + /// Managed object created to represent output value, such as DenseTensor{T}; /// List or Dictionary /// /// Tensor element type if value type is a Tensor @@ -133,7 +133,7 @@ namespace Microsoft.ML.OnnxRuntime public TensorElementType ElementType { get; } /// - /// Overrides the base class method. With respect to pinnedMemoryHandle, it has no operation + /// Overrides the base class method. With respect to memoryHolder, it has no operation /// to do, as this class maintains a native buffer via _ortValueHolder and the memory will be /// disposed by it. This is the case when we are dealing with an OrtValue that is backed by native memory /// and not by pinned managed memory. @@ -142,7 +142,7 @@ namespace Microsoft.ML.OnnxRuntime /// but the interface (derived from NamedOnnxValue) allows it to be passed as output and one of the test /// cases does it. Unless we deprecate and re-do the interface, we must support it. /// - /// always set to null + /// always set to null /// Native OrtValue handle internal override IntPtr InputToOrtValueHandle(NodeMetadata metadata, out IDisposable memoryHolder) { @@ -150,7 +150,7 @@ namespace Microsoft.ML.OnnxRuntime { throw new InvalidOperationException("The instance of this class does not own an OrtValue"); } - // PinnedMemoryHandle holds the default value as DisposableNamedOnnxValue + // memoryHolder holds the default value as DisposableNamedOnnxValue // doesn't hold any managed buffer (that needs to be pinned) memoryHolder = null; // Return non-owning instance of OrtValue diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/InferenceSession.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/InferenceSession.shared.cs index b21d036f61..b62a3c50bf 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/InferenceSession.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/InferenceSession.shared.cs @@ -908,7 +908,7 @@ namespace Microsoft.ML.OnnxRuntime /// /// names to convert to zero terminated utf8 and pin /// extractor functor that helps extracting names from inputs - /// inputs/outputs metadata + /// inputs/outputs metadata /// private static IntPtr[] LookupUtf8Names(IReadOnlyCollection values, NameExtractor nameExtractor, MetadataLookup metaLookup) @@ -1222,7 +1222,6 @@ namespace Microsoft.ML.OnnxRuntime /// Initializes the session object with a native session handle /// /// Value of a native session object - /// Session options private void InitWithSessionHandle(IntPtr session) { _nativeHandle = session; @@ -2075,7 +2074,7 @@ namespace Microsoft.ML.OnnxRuntime /// /// Custom metadata key/value pairs /// - /// An instance of a Dictionary + /// An instance of a Dictionary{string,string} public Dictionary CustomMetadataMap { get diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/ManagedProjections.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/ManagedProjections.shared.cs index e512a8c261..13117f23e8 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/ManagedProjections.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/ManagedProjections.shared.cs @@ -65,7 +65,7 @@ namespace Microsoft.ML.OnnxRuntime /// The function creates OrtValue objects for each element of the sequence /// and then creates an OrtValue for the whole sequence. /// - /// NamedOnnxValue containing a IEnumerable + /// NamedOnnxValue containing a IEnumerable{NamedOnnxValue} /// sequence metadata /// OrtValue that represents a sequence /// diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/NamedOnnxValue.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/NamedOnnxValue.shared.cs index d73c471bb9..48a1045558 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/NamedOnnxValue.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/NamedOnnxValue.shared.cs @@ -53,13 +53,13 @@ namespace Microsoft.ML.OnnxRuntime /// Other sequences and maps. Although the OnnxValueType is exposed, /// the caller is supposed to know the actual data type contained. /// - /// The convention is that for tensors, it would contain a DenseTensor instance or - /// anything derived from Tensor. + /// The convention is that for tensors, it would contain a DenseTensor{T} instance or + /// anything derived from Tensor{T}. /// - /// For sequences, it would contain a IList where T is an instance of NamedOnnxValue that + /// For sequences, it would contain a IList{T} where T is an instance of NamedOnnxValue that /// would contain a tensor or another type. /// - /// For Maps, it would contain a IDictionary where K,V are primitive types or strings. + /// For Maps, it would contain a IDictionary{K, V} where K,V are primitive types or strings. /// /// public class NamedOnnxValue @@ -153,7 +153,7 @@ namespace Microsoft.ML.OnnxRuntime } /// - /// Instantiates NamedOnnxValue that contains IDictionary + /// Instantiates NamedOnnxValue that contains IDictionary{K, V} /// /// Keys type /// Values type @@ -225,7 +225,7 @@ namespace Microsoft.ML.OnnxRuntime /// based on the pinned managed memory. The caller is responsible for Disposing /// both OrtValue and pinnedMemoryHandle /// - /// dispose after returned OrtValus is disposed + /// dispose after returned OrtValue is disposed /// The native OrtValue handle internal virtual IntPtr InputToOrtValueHandle(NodeMetadata metadata, out IDisposable memoryOwner) { @@ -272,12 +272,6 @@ namespace Microsoft.ML.OnnxRuntime $" Use Run() overloads that return DisposableNamedOnnxValue to get access to all Onnx value types that may be returned as output."); } - /// - /// This method is used internally to feed dictionary keys - /// to create an OrtValue for map keys - /// - /// - /// DenseTensor" internal TensorBase GetDictionaryKeys() { if (ValueType != OnnxValueType.ONNX_TYPE_MAP) @@ -289,11 +283,6 @@ namespace Microsoft.ML.OnnxRuntime return _mapHelper.Keys; } - /// - /// - /// - /// - /// DenseTensor" internal TensorBase GetDictionaryValues() { if (ValueType != OnnxValueType.ONNX_TYPE_MAP) diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/NativeMethods.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/NativeMethods.shared.cs index 44d2222dbc..b2a7b75891 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/NativeMethods.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/NativeMethods.shared.cs @@ -1506,7 +1506,7 @@ namespace Microsoft.ML.OnnxRuntime /// /// Destroy OrtIoBinding instance created by OrtCreateIoBinding /// - /// instance of OrtIoBinding + /// instance of OrtIoBinding [UnmanagedFunctionPointer(CallingConvention.Winapi)] public delegate void DOrtReleaseIoBinding(IntPtr /*(OrtIoBinding)*/ io_binding); @@ -1516,7 +1516,7 @@ namespace Microsoft.ML.OnnxRuntime /// Bind OrtValue to the model input with the specified name /// If binding with the specified name already exists, it will be replaced /// - /// instance of OrtIoBinding + /// instance of OrtIoBinding /// model input name (utf-8) /// OrtValue that is used for input (may wrap arbitrary memory). /// The param instance is copied internally so this argument may be released. @@ -1544,7 +1544,7 @@ namespace Microsoft.ML.OnnxRuntime /// Bind OrtValue to the model output with the specified name /// If binding with the specified name already exists, it will be replaced /// - /// instance of OrtIoBinding + /// instance of OrtIoBinding /// model output name (utf-8) /// OrtValue that is used for output (may wrap arbitrary memory). /// The param instance is copied internally so this argument may be released. @@ -1605,7 +1605,7 @@ namespace Microsoft.ML.OnnxRuntime /// The function returns output values after the model has been run with RunWithBinding() /// It returns a natively allocated buffer of OrtValue pointers. All of the OrtValues must be individually /// released after no longer needed. You may use OrtValue disposable class to wrap the native handle and properly dispose it - /// in connection with DisposableList. All values are returned in the same order as they were bound. + /// in connection with DisposableList{T}. All values are returned in the same order as they were bound. /// The buffer that contains OrtValues must deallocated using the same allocator that was specified as an argument. /// You may use an instance OrtMemoryAllocation to properly dispose of the native memory. /// @@ -1643,9 +1643,7 @@ namespace Microsoft.ML.OnnxRuntime /// /// Provides element-level access into a tensor. /// - /// a pointer to an array of index values that specify an element's location in the tensor data blob - /// length of location_values - /// a pointer to the element specified by location_values + /// instance of OrtIoBinding [UnmanagedFunctionPointer(CallingConvention.Winapi)] public delegate void DOrtTensorAt(IntPtr /*(OrtIoBinding)*/ io_binding); @@ -1656,10 +1654,11 @@ namespace Microsoft.ML.OnnxRuntime /// sharing between multiple sessions that use the same env instance. /// Lifetime of the created allocator will be valid for the duration of the environment. /// Returns an error if an allocator with the same OrtMemoryInfo is already registered. + /// /// Native OrtEnv instance /// Native OrtMemoryInfo instance /// Native OrtArenaCfg instance - /// A pointer to native ortStatus indicating success/failure + /// A pointer to native ortStatus indicating success/failure [UnmanagedFunctionPointer(CallingConvention.Winapi)] public delegate IntPtr /*(OrtStatus*)*/ DOrtCreateAndRegisterAllocator(IntPtr /*(OrtEnv*)*/ env, IntPtr /*(const OrtMemoryInfo*)*/ memInfo, @@ -1890,7 +1889,7 @@ namespace Microsoft.ML.OnnxRuntime public static DOrtFillStringTensor OrtFillStringTensor; /// \param value A tensor created from OrtCreateTensor... function. - /// \param index The index of the entry in the tensor to resize. + /// \param index The index of the entry in the tensor to resize. /// \param length_in_bytes Length to resize the string to. /// \param buffer The resized buffer. [UnmanagedFunctionPointer(CallingConvention.Winapi)] diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/NativeOnnxValueHelper.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/NativeOnnxValueHelper.shared.cs index 96afb48fcc..fc14be00ee 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/NativeOnnxValueHelper.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/NativeOnnxValueHelper.shared.cs @@ -226,7 +226,7 @@ namespace Microsoft.ML.OnnxRuntime } /// - // Native allocation (UTF8-8 string length with terminating zero) + /// Native allocation (UTF8-8 string length with terminating zero) /// internal int Length { get; private set; } diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/OrtEnv.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/OrtEnv.shared.cs index 1a03338298..f4b2649f8d 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/OrtEnv.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/OrtEnv.shared.cs @@ -126,7 +126,7 @@ namespace Microsoft.ML.OnnxRuntime /// /// /// - /// + /// /// private static void LoggingFunctionThunk(IntPtr param, IntPtr severity, diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/OrtFloat16.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/OrtFloat16.shared.cs index 20be2acacf..7c22e1b213 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/OrtFloat16.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/OrtFloat16.shared.cs @@ -134,11 +134,11 @@ namespace Microsoft.ML.OnnxRuntime } /// - /// Creates float NaN with the given sign and fp16 significand shifted << 54 + /// Creates float NaN with the given sign and fp16 significand shifted << 54 /// /// true for negative /// should be shifted 54 bits left before calling the function - /// so only 8 bits of signidicand remains + /// so only 8 bits of significand remains /// internal static float CreateSingleNaN(bool sign, ulong significand) { @@ -416,12 +416,11 @@ namespace Microsoft.ML.OnnxRuntime /// /// Compares values of two Float16 - /// /// /// left hand side /// right hand side /// returns true if left is greater or equal than right according to IEEE - /// + /// public static bool operator >=(Float16 left, Float16 right) { return right <= left; @@ -492,7 +491,7 @@ namespace Microsoft.ML.OnnxRuntime /// Determines whether the specified value is negative. /// /// Float16 instance - /// true if the value is negative + /// true if the value is negative public static bool IsNegative(Float16 value) { return (short)(value.value) < 0; @@ -1115,7 +1114,7 @@ namespace Microsoft.ML.OnnxRuntime /// Determines whether the specified value is negative. /// /// BFloat16 instance - /// true if the value is negative + /// true if the value is negative public static bool IsNegative(BFloat16 value) { return (short)(value.value) < 0; diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/ProviderOptions.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/ProviderOptions.shared.cs index e2c8a44d92..6a7922357a 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/ProviderOptions.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/ProviderOptions.shared.cs @@ -318,9 +318,9 @@ namespace Microsoft.ML.OnnxRuntime } /// - /// CoreML flags for use with SessionOptions + /// CoreML flags for use with SessionOptions. + /// See https://github.com/microsoft/onnxruntime/blob/main/include/onnxruntime/core/providers/coreml/coreml_provider_factory.h /// - /// [Flags] public enum CoreMLFlags : uint { @@ -332,9 +332,9 @@ namespace Microsoft.ML.OnnxRuntime } /// - /// NNAPI flags for use with SessionOptions + /// NNAPI flags for use with SessionOptions. + /// See https://github.com/microsoft/onnxruntime/blob/main/include/onnxruntime/core/providers/nnapi/nnapi_provider_factory.h /// - /// [Flags] public enum NnapiFlags { diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/SessionOptions.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/SessionOptions.shared.cs index 6ecfee0a35..3acd84b301 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/SessionOptions.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/SessionOptions.shared.cs @@ -768,8 +768,8 @@ namespace Microsoft.ML.OnnxRuntime private int _logVerbosityLevel = 0; /// - // Sets the number of threads used to parallelize the execution within nodes - // A value of 0 means ORT will pick a default + /// Sets the number of threads used to parallelize the execution within nodes + /// A value of 0 means ORT will pick a default /// /// returns _intraOpNumThreads value public int IntraOpNumThreads @@ -787,9 +787,9 @@ namespace Microsoft.ML.OnnxRuntime private int _intraOpNumThreads = 0; // set to what is set in C++ SessionOptions by default; /// - // Sets the number of threads used to parallelize the execution of the graph (across nodes) - // If sequential execution is enabled this value is ignored - // A value of 0 means ORT will pick a default + /// Sets the number of threads used to parallelize the execution of the graph (across nodes) + /// If sequential execution is enabled this value is ignored + /// A value of 0 means ORT will pick a default /// /// returns _interOpNumThreads value public int InterOpNumThreads diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/InferenceTest.cs b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/InferenceTest.cs index 0892e17fc9..d63e1fc953 100644 --- a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/InferenceTest.cs +++ b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/InferenceTest.cs @@ -255,7 +255,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests { Assert.NotNull(session); Assert.NotNull(session.InputMetadata); - Assert.Equal(1, session.InputMetadata.Count); // 1 input node + Assert.Single(session.InputMetadata); // 1 input node Assert.True(session.InputMetadata.ContainsKey("data_0")); // input node name Assert.Equal(typeof(float), session.InputMetadata["data_0"].ElementType); Assert.True(session.InputMetadata["data_0"].IsTensor); @@ -267,7 +267,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests } Assert.NotNull(session.OutputMetadata); - Assert.Equal(1, session.OutputMetadata.Count); // 1 output node + Assert.Single(session.OutputMetadata); // 1 output node Assert.True(session.OutputMetadata.ContainsKey("softmaxout_1")); // output node name Assert.Equal(typeof(float), session.OutputMetadata["softmaxout_1"].ElementType); Assert.True(session.OutputMetadata["softmaxout_1"].IsTensor); @@ -614,7 +614,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests // validate the results foreach (var r in results) { - Assert.Equal(1, results.Count); + Assert.Single(results); Assert.Equal("softmaxout_1", r.Name); float[] expectedOutput = TestDataLoader.LoadTensorFromEmbeddedResource("bench.expected_out"); @@ -798,7 +798,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests } [Fact(DisplayName = "TestMultiThreads")] - private void TestMultiThreads() + private async Task TestMultiThreads() { var numThreads = 10; var loop = 10; @@ -824,7 +824,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests } })); }; - Task.WaitAll(tasks); + await Task.WhenAll(tasks); session.Dispose(); } @@ -838,7 +838,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests Assert.True(session.InputMetadata.ContainsKey("Label")); Assert.True(session.InputMetadata.ContainsKey("F2")); - Assert.Equal(1, session.OverridableInitializerMetadata.Count); + Assert.Single(session.OverridableInitializerMetadata); Assert.True(session.OverridableInitializerMetadata.ContainsKey("F1")); Assert.True(session.OverridableInitializerMetadata["F1"].IsTensor); Assert.Equal(typeof(float), session.OverridableInitializerMetadata["F1"].ElementType); @@ -886,7 +886,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests var outputs = session.OutputMetadata; Assert.Equal(2, inputs.Count); - Assert.Equal(1, session.OutputMetadata.Count); + Assert.Single(session.OutputMetadata); Assert.True(inputs.ContainsKey("A")); Assert.True(inputs.ContainsKey("B")); Assert.True(outputs.ContainsKey("C")); @@ -1432,6 +1432,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests { // first output is a tensor containing label var outNode0 = outputs.ElementAtOrDefault(0); + Assert.NotNull(outNode0); Assert.Equal("label", outNode0.Name); Assert.Equal(OnnxValueType.ONNX_TYPE_TENSOR, outNode0.ValueType); Assert.Equal(Tensors.TensorElementType.Int64, outNode0.ElementType); @@ -1446,6 +1447,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests // second output is a sequence> // try-cast to an sequence of NOV var outNode1 = outputs.ElementAtOrDefault(1); + Assert.NotNull(outNode1); Assert.Equal("probabilities", outNode1.Name); Assert.Equal(OnnxValueType.ONNX_TYPE_SEQUENCE, outNode1.ValueType); @@ -1525,6 +1527,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests { // first output is a tensor containing label var outNode0 = outputs.ElementAtOrDefault(0); + Assert.NotNull(outNode0); Assert.Equal("label", outNode0.Name); Assert.Equal(OnnxValueType.ONNX_TYPE_TENSOR, outNode0.ValueType); Assert.Equal(TensorElementType.String, outNode0.ElementType); @@ -1539,6 +1542,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests // second output is a sequence> // try-cast to an sequence of NOV var outNode1 = outputs.ElementAtOrDefault(1); + Assert.NotNull(outNode1); Assert.Equal("probabilities", outNode1.Name); Assert.Equal(OnnxValueType.ONNX_TYPE_SEQUENCE, outNode1.ValueType); @@ -1592,6 +1596,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests // output is a sequence // try-cast to an sequence of NOV var outNode = outputs.ElementAtOrDefault(0); + Assert.NotNull(outNode); Assert.Equal("output_sequence", outNode.Name); Assert.Equal(OnnxValueType.ONNX_TYPE_SEQUENCE, outNode.ValueType); @@ -2035,7 +2040,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests } [Fact(DisplayName = "TestModelRunAsyncTask")] - private async void TestModelRunAsyncTask() + private async Task TestModelRunAsyncTask() { Float16[] inputData = { new Float16(15360), new Float16(16384), new Float16(16896), new Float16(17408), new Float16(17664) }; long[] shape = { 1, 5 }; @@ -2070,7 +2075,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests } [Fact(DisplayName = "TestModelRunAsyncTaskFail")] - private async void TestModelRunAsyncTaskFail() + private async Task TestModelRunAsyncTaskFail() { Float16[] inputData = { new Float16(15360), new Float16(16384), new Float16(16896), new Float16(17408), new Float16(17664) }; long[] shape = { 1, 5 }; diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/Microsoft.ML.OnnxRuntime.Tests.Common.csproj b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/Microsoft.ML.OnnxRuntime.Tests.Common.csproj index a26e17b9ee..3ce19ab2f1 100644 --- a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/Microsoft.ML.OnnxRuntime.Tests.Common.csproj +++ b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/Microsoft.ML.OnnxRuntime.Tests.Common.csproj @@ -117,10 +117,10 @@ - + - + diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/OrtIoBindingAllocationTest.cs b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/OrtIoBindingAllocationTest.cs index b07bcdeeb3..de7f0690c7 100644 --- a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/OrtIoBindingAllocationTest.cs +++ b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/OrtIoBindingAllocationTest.cs @@ -33,6 +33,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests private readonly DisposableListTest _dispList = new DisposableListTest(); private bool _disposed = false; + private OrtEnv _env = OrtEnv.Instance(); public OrtIoBindingAllocationTests() { diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/Tensors/TensorTests.cs b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/Tensors/TensorTests.cs index c3a6b1059a..27cde1dbe9 100644 --- a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/Tensors/TensorTests.cs +++ b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/Tensors/TensorTests.cs @@ -2220,7 +2220,9 @@ namespace Microsoft.ML.OnnxRuntime.Tensors.Tests new[] { 0, 0, 1, 2, 3, 4, 5, 6 }; Assert.Equal(expected, actual); +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. Assert.Throws(() => tensorCollection.CopyTo(null, 0)); +#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type. Assert.Throws(() => tensorCollection.CopyTo(new int[3, 4], 0)); Assert.Throws(() => tensorCollection.CopyTo(new int[5], 0)); Assert.Throws(() => tensorCollection.CopyTo(new int[6], 1)); @@ -2311,7 +2313,9 @@ namespace Microsoft.ML.OnnxRuntime.Tensors.Tests new[] { 0, 0, 1, 2, 3, 4, 5, 6 }; Assert.Equal(expected, actual); +#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. Assert.Throws(() => tensorCollection.CopyTo(null, 0)); +#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type. Assert.Throws(() => tensorCollection.CopyTo(new int[5], 0)); Assert.Throws(() => tensorCollection.CopyTo(new int[6], 1)); diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Droid/Microsoft.ML.OnnxRuntime.Tests.Droid.csproj b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Droid/Microsoft.ML.OnnxRuntime.Tests.Droid.csproj index 7876f81815..f65031b01c 100644 --- a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Droid/Microsoft.ML.OnnxRuntime.Tests.Droid.csproj +++ b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Droid/Microsoft.ML.OnnxRuntime.Tests.Droid.csproj @@ -126,7 +126,7 @@ - 2.4.1 + 2.9.0 2.5.25 diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp/InferenceTest.netcore.cs b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp/InferenceTest.netcore.cs index 7f3d5d6624..ad127c2579 100644 --- a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp/InferenceTest.netcore.cs +++ b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp/InferenceTest.netcore.cs @@ -42,7 +42,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests { Assert.NotNull(session); Assert.NotNull(session.InputMetadata); - Assert.Equal(1, session.InputMetadata.Count); // 1 input nodeMeta + Assert.Single(session.InputMetadata); // 1 input nodeMeta Assert.True(session.InputMetadata.ContainsKey("data_0")); // input nodeMeta name Assert.Equal(typeof(float), session.InputMetadata["data_0"].ElementType); Assert.True(session.InputMetadata["data_0"].IsTensor); @@ -54,7 +54,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests } Assert.NotNull(session.OutputMetadata); - Assert.Equal(1, session.OutputMetadata.Count); // 1 output nodeMeta + Assert.Single(session.OutputMetadata); // 1 output nodeMeta Assert.True(session.OutputMetadata.ContainsKey("softmaxout_1")); // output nodeMeta name Assert.Equal(typeof(float), session.OutputMetadata["softmaxout_1"].ElementType); Assert.True(session.OutputMetadata["softmaxout_1"].IsTensor); @@ -665,7 +665,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests } break; default: - Assert.True(false, $"TestPreTrainedModels cannot handle Onnxtype: {outputValue.ValueType}"); + Assert.Fail($"TestPreTrainedModels cannot handle Onnxtype: {outputValue.ValueType}"); break; } } @@ -720,7 +720,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests } else { - Assert.True(false, $"TestPreTrainedModels cannot handle Onnxtype: {outputMeta.OnnxValueType}"); + Assert.Fail($"TestPreTrainedModels cannot handle Onnxtype: {outputMeta.OnnxValueType}"); } } } @@ -843,7 +843,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests } break; default: - Assert.True(false, "VerifySequenceResults cannot handle Onnxtype: " + resultItem.ValueType.ToString()); + Assert.Fail("VerifySequenceResults cannot handle Onnxtype: " + resultItem.ValueType.ToString()); break; } Assert.Equal(resultItem.AsTensor(), expectedItem.AsTensor(), new FloatComparer()); @@ -897,7 +897,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests Assert.Equal(expectedValue.AsTensor(), result.AsTensor(), new ExactComparer()); break; default: - Assert.True(false, "TestPreTrainedModels does not yet support output of type: " + elementType.ToString()); + Assert.Fail("TestPreTrainedModels does not yet support output of type: " + elementType.ToString()); break; } } @@ -937,7 +937,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests } break; default: - Assert.True(false, $"VerifySequenceResults cannot handle Onnxtype: {elementMeta.OnnxValueType}"); + Assert.Fail($"VerifySequenceResults cannot handle Onnxtype: {elementMeta.OnnxValueType}"); break; } } @@ -1009,7 +1009,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests new BFloat16Comparer { tolerance = 2 }); break; default: - Assert.True(false, "VerifyTensorResults cannot handle ElementType: " + expectedElementType.ToString()); + Assert.Fail("VerifyTensorResults cannot handle ElementType: " + expectedElementType.ToString()); break; } } @@ -1077,7 +1077,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests Assert.Equal(result.GetStringTensorAsArray(), expectedValue.AsTensor().ToArray(), new ExactComparer()); break; default: - Assert.True(false, $"VerifyTensorResults cannot handle ElementType: { resultTypeShape.ElementDataType}"); + Assert.Fail($"VerifyTensorResults cannot handle ElementType: { resultTypeShape.ElementDataType}"); break; } } diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp.csproj b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp.csproj index 9886f050fb..a10f93f8ea 100644 --- a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp.csproj +++ b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp.csproj @@ -53,9 +53,9 @@ - - - + + +