@@ -204,6 +204,91 @@ public void VariantFromEnumArray()
204204 // Variant variant6 = new Variant(daysdays);
205205 }
206206
207+ /// <summary>
208+ /// Initialize Variant from uint with StatusCode TypeInfo.
209+ /// Tests that a Variant created from uint with StatusCode TypeInfo
210+ /// can be properly cast to StatusCode.
211+ /// </summary>
212+ [ Test ]
213+ public void VariantFromUIntWithStatusCodeTypeInfo( )
214+ {
215+ // Test scalar StatusCode creation from uint
216+ uint statusCodeValue = StatusCodes. Good ;
217+ var variant = new Variant ( statusCodeValue , TypeInfo . Scalars . StatusCode ) ;
218+
219+ Assert. AreEqual ( BuiltInType . StatusCode , variant . TypeInfo . BuiltInType ) ;
220+ Assert. NotNull ( variant . Value ) ;
221+
222+ // Cast the Value to StatusCode
223+ StatusCode statusCode = ( StatusCode ) variant. Value ;
224+ Assert. AreEqual ( StatusCodes . Good , statusCode . Code ) ;
225+
226+ // Test with different status code values
227+ uint badNodeIdValue = StatusCodes. BadNodeIdInvalid ;
228+ var variant2 = new Variant ( badNodeIdValue , TypeInfo . Scalars . StatusCode ) ;
229+
230+ Assert. AreEqual ( BuiltInType . StatusCode , variant2 . TypeInfo . BuiltInType ) ;
231+ StatusCode statusCode2 = ( StatusCode ) variant2 . Value ;
232+ Assert. AreEqual ( StatusCodes . BadNodeIdInvalid , statusCode2 . Code ) ;
233+
234+ // Test with custom status code value
235+ uint customValue = 0x80AB0000 ;
236+ var variant3 = new Variant ( customValue , TypeInfo . Scalars . StatusCode ) ;
237+
238+ Assert . AreEqual ( BuiltInType . StatusCode , variant3 . TypeInfo . BuiltInType ) ;
239+ StatusCode statusCode3 = ( StatusCode ) variant3. Value ;
240+ Assert. AreEqual ( customValue , statusCode3 . Code ) ;
241+ }
242+
243+ /// <summary>
244+ /// Initialize Variant from uint array with StatusCode TypeInfo.
245+ /// Tests that a Variant created from uint[] with StatusCode TypeInfo
246+ /// can be properly cast to StatusCode[].
247+ /// </summary>
248+ [ Test ]
249+ public void VariantFromUIntArrayWithStatusCodeTypeInfo( )
250+ {
251+ // Test array StatusCode creation from uint[]
252+ uint [ ] statusCodeValues = [
253+ StatusCodes . Good ,
254+ StatusCodes . BadNodeIdInvalid ,
255+ StatusCodes . BadUnexpectedError ,
256+ StatusCodes . BadInternalError
257+ ] ;
258+
259+ var variant = new Variant ( statusCodeValues , TypeInfo . Arrays . StatusCode ) ;
260+
261+ Assert. AreEqual ( BuiltInType . StatusCode , variant . TypeInfo . BuiltInType ) ;
262+ Assert. NotNull ( variant . Value ) ;
263+ Assert. IsTrue ( variant . Value is StatusCode [ ] ) ;
264+
265+ // Cast the Value to StatusCode array
266+ StatusCode [ ] statusCodes = ( StatusCode [ ] ) variant . Value ;
267+ Assert. AreEqual ( statusCodeValues . Length , statusCodes . Length ) ;
268+
269+ for ( int i = 0 ; i < statusCodeValues . Length ; i++ )
270+ {
271+ Assert. AreEqual( statusCodeValues[ i] , statusCodes [ i ] . Code ) ;
272+ }
273+
274+ // Test empty array
275+ uint [ ] emptyArray = [ ] ;
276+ var variant2 = new Variant ( emptyArray , TypeInfo . Arrays . StatusCode ) ;
277+
278+ Assert . AreEqual ( BuiltInType . StatusCode , variant2 . TypeInfo . BuiltInType ) ;
279+ StatusCode [ ] emptyStatusCodes = ( StatusCode [ ] ) variant2 . Value ;
280+ Assert. AreEqual ( 0 , emptyStatusCodes . Length ) ;
281+
282+ // Test single element array
283+ uint [ ] singleElement = [ StatusCodes . BadTimeout ] ;
284+ var variant3 = new Variant ( singleElement , TypeInfo . Arrays . StatusCode ) ;
285+
286+ Assert . AreEqual ( BuiltInType . StatusCode , variant3 . TypeInfo . BuiltInType ) ;
287+ StatusCode [ ] singleStatusCode = ( StatusCode [ ] ) variant3 . Value ;
288+ Assert . AreEqual ( 1 , singleStatusCode . Length ) ;
289+ Assert . AreEqual ( StatusCodes . BadTimeout, singleStatusCode [ 0 ] . Code) ;
290+ }
291+
207292 /// <summary>
208293 /// Validate ExtensionObject special cases and constructors.
209294 /// </summary>
0 commit comments