diff options
Diffstat (limited to 'tests/src/JIT/Directed/nullabletypes/castclassvaluetype.cs')
-rw-r--r-- | tests/src/JIT/Directed/nullabletypes/castclassvaluetype.cs | 4754 |
1 files changed, 4754 insertions, 0 deletions
diff --git a/tests/src/JIT/Directed/nullabletypes/castclassvaluetype.cs b/tests/src/JIT/Directed/nullabletypes/castclassvaluetype.cs new file mode 100644 index 0000000000..1b2020bf27 --- /dev/null +++ b/tests/src/JIT/Directed/nullabletypes/castclassvaluetype.cs @@ -0,0 +1,4754 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Runtime.InteropServices; +using System; + + +internal class NullableTest1 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((char)(ValueType)o, Helper.Create(default(char))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((char?)(ValueType)o, Helper.Create(default(char))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((char)(object)o, Helper.Create(default(char))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((char?)(object)o, Helper.Create(default(char))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((char)(ValueType)(object)o, Helper.Create(default(char))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((char?)(ValueType)(object)o, Helper.Create(default(char))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((char)(ValueType)(object)o, Helper.Create(default(char))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((char?)(ValueType)(object)o, Helper.Create(default(char))); + } + + public static void Run() + { + char? s = Helper.Create(default(char)); + + Console.WriteLine("--- char? s = Helper.Create(default(char)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- char? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- char u = Helper.Create(default(char)) ---"); + char u = Helper.Create(default(char)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<char>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<char>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest2 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((bool)(ValueType)o, Helper.Create(default(bool))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((bool?)(ValueType)o, Helper.Create(default(bool))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((bool)(object)o, Helper.Create(default(bool))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((bool?)(object)o, Helper.Create(default(bool))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((bool)(ValueType)(object)o, Helper.Create(default(bool))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((bool?)(ValueType)(object)o, Helper.Create(default(bool))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((bool)(ValueType)(object)o, Helper.Create(default(bool))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((bool?)(ValueType)(object)o, Helper.Create(default(bool))); + } + + public static void Run() + { + bool? s = Helper.Create(default(bool)); + + Console.WriteLine("--- bool? s = Helper.Create(default(bool)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- bool? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- bool u = Helper.Create(default(bool)) ---"); + bool u = Helper.Create(default(bool)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<bool>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<bool>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest3 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((byte)(ValueType)o, Helper.Create(default(byte))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((byte?)(ValueType)o, Helper.Create(default(byte))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((byte)(object)o, Helper.Create(default(byte))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((byte?)(object)o, Helper.Create(default(byte))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((byte)(ValueType)(object)o, Helper.Create(default(byte))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((byte?)(ValueType)(object)o, Helper.Create(default(byte))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((byte)(ValueType)(object)o, Helper.Create(default(byte))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((byte?)(ValueType)(object)o, Helper.Create(default(byte))); + } + + public static void Run() + { + byte? s = Helper.Create(default(byte)); + + Console.WriteLine("--- byte? s = Helper.Create(default(byte)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- byte? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- byte u = Helper.Create(default(byte)) ---"); + byte u = Helper.Create(default(byte)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<byte>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<byte>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest4 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((sbyte)(ValueType)o, Helper.Create(default(sbyte))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((sbyte?)(ValueType)o, Helper.Create(default(sbyte))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((sbyte)(object)o, Helper.Create(default(sbyte))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((sbyte?)(object)o, Helper.Create(default(sbyte))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((sbyte)(ValueType)(object)o, Helper.Create(default(sbyte))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((sbyte?)(ValueType)(object)o, Helper.Create(default(sbyte))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((sbyte)(ValueType)(object)o, Helper.Create(default(sbyte))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((sbyte?)(ValueType)(object)o, Helper.Create(default(sbyte))); + } + + public static void Run() + { + sbyte? s = Helper.Create(default(sbyte)); + + Console.WriteLine("--- sbyte? s = Helper.Create(default(sbyte)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- sbyte? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- sbyte u = Helper.Create(default(sbyte)) ---"); + sbyte u = Helper.Create(default(sbyte)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<sbyte>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<sbyte>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest5 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((short)(ValueType)o, Helper.Create(default(short))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((short?)(ValueType)o, Helper.Create(default(short))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((short)(object)o, Helper.Create(default(short))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((short?)(object)o, Helper.Create(default(short))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((short)(ValueType)(object)o, Helper.Create(default(short))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((short?)(ValueType)(object)o, Helper.Create(default(short))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((short)(ValueType)(object)o, Helper.Create(default(short))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((short?)(ValueType)(object)o, Helper.Create(default(short))); + } + + public static void Run() + { + short? s = Helper.Create(default(short)); + + Console.WriteLine("--- short? s = Helper.Create(default(short)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- short? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- short u = Helper.Create(default(short)) ---"); + short u = Helper.Create(default(short)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<short>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<short>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest6 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((ushort)(ValueType)o, Helper.Create(default(ushort))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((ushort?)(ValueType)o, Helper.Create(default(ushort))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((ushort)(object)o, Helper.Create(default(ushort))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((ushort?)(object)o, Helper.Create(default(ushort))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((ushort)(ValueType)(object)o, Helper.Create(default(ushort))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((ushort?)(ValueType)(object)o, Helper.Create(default(ushort))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((ushort)(ValueType)(object)o, Helper.Create(default(ushort))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((ushort?)(ValueType)(object)o, Helper.Create(default(ushort))); + } + + public static void Run() + { + ushort? s = Helper.Create(default(ushort)); + + Console.WriteLine("--- ushort? s = Helper.Create(default(ushort)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ushort? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ushort u = Helper.Create(default(ushort)) ---"); + ushort u = Helper.Create(default(ushort)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<ushort>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<ushort>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest7 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((int)(ValueType)o, Helper.Create(default(int))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((int?)(ValueType)o, Helper.Create(default(int))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((int)(object)o, Helper.Create(default(int))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((int?)(object)o, Helper.Create(default(int))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((int)(ValueType)(object)o, Helper.Create(default(int))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((int?)(ValueType)(object)o, Helper.Create(default(int))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((int)(ValueType)(object)o, Helper.Create(default(int))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((int?)(ValueType)(object)o, Helper.Create(default(int))); + } + + public static void Run() + { + int? s = Helper.Create(default(int)); + + Console.WriteLine("--- int? s = Helper.Create(default(int)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- int? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- int u = Helper.Create(default(int)) ---"); + int u = Helper.Create(default(int)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<int>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<int>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest8 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((uint)(ValueType)o, Helper.Create(default(uint))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((uint?)(ValueType)o, Helper.Create(default(uint))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((uint)(object)o, Helper.Create(default(uint))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((uint?)(object)o, Helper.Create(default(uint))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((uint)(ValueType)(object)o, Helper.Create(default(uint))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((uint?)(ValueType)(object)o, Helper.Create(default(uint))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((uint)(ValueType)(object)o, Helper.Create(default(uint))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((uint?)(ValueType)(object)o, Helper.Create(default(uint))); + } + + public static void Run() + { + uint? s = Helper.Create(default(uint)); + + Console.WriteLine("--- uint? s = Helper.Create(default(uint)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- uint? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- uint u = Helper.Create(default(uint)) ---"); + uint u = Helper.Create(default(uint)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<uint>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<uint>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest9 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((long)(ValueType)o, Helper.Create(default(long))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((long?)(ValueType)o, Helper.Create(default(long))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((long)(object)o, Helper.Create(default(long))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((long?)(object)o, Helper.Create(default(long))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((long)(ValueType)(object)o, Helper.Create(default(long))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((long?)(ValueType)(object)o, Helper.Create(default(long))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((long)(ValueType)(object)o, Helper.Create(default(long))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((long?)(ValueType)(object)o, Helper.Create(default(long))); + } + + public static void Run() + { + long? s = Helper.Create(default(long)); + + Console.WriteLine("--- long? s = Helper.Create(default(long)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- long? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- long u = Helper.Create(default(long)) ---"); + long u = Helper.Create(default(long)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<long>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<long>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest10 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((ulong)(ValueType)o, Helper.Create(default(ulong))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((ulong?)(ValueType)o, Helper.Create(default(ulong))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((ulong)(object)o, Helper.Create(default(ulong))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((ulong?)(object)o, Helper.Create(default(ulong))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((ulong)(ValueType)(object)o, Helper.Create(default(ulong))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((ulong?)(ValueType)(object)o, Helper.Create(default(ulong))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((ulong)(ValueType)(object)o, Helper.Create(default(ulong))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((ulong?)(ValueType)(object)o, Helper.Create(default(ulong))); + } + + public static void Run() + { + ulong? s = Helper.Create(default(ulong)); + + Console.WriteLine("--- ulong? s = Helper.Create(default(ulong)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ulong? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ulong u = Helper.Create(default(ulong)) ---"); + ulong u = Helper.Create(default(ulong)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<ulong>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<ulong>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest11 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((float)(ValueType)o, Helper.Create(default(float))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((float?)(ValueType)o, Helper.Create(default(float))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((float)(object)o, Helper.Create(default(float))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((float?)(object)o, Helper.Create(default(float))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((float)(ValueType)(object)o, Helper.Create(default(float))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((float?)(ValueType)(object)o, Helper.Create(default(float))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((float)(ValueType)(object)o, Helper.Create(default(float))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((float?)(ValueType)(object)o, Helper.Create(default(float))); + } + + public static void Run() + { + float? s = Helper.Create(default(float)); + + Console.WriteLine("--- float? s = Helper.Create(default(float)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- float? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- float u = Helper.Create(default(float)) ---"); + float u = Helper.Create(default(float)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<float>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<float>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest12 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((double)(ValueType)o, Helper.Create(default(double))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((double?)(ValueType)o, Helper.Create(default(double))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((double)(object)o, Helper.Create(default(double))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((double?)(object)o, Helper.Create(default(double))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((double)(ValueType)(object)o, Helper.Create(default(double))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((double?)(ValueType)(object)o, Helper.Create(default(double))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((double)(ValueType)(object)o, Helper.Create(default(double))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((double?)(ValueType)(object)o, Helper.Create(default(double))); + } + + public static void Run() + { + double? s = Helper.Create(default(double)); + + Console.WriteLine("--- double? s = Helper.Create(default(double)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- double? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- double u = Helper.Create(default(double)) ---"); + double u = Helper.Create(default(double)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<double>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<double>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest13 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((decimal)(ValueType)o, Helper.Create(default(decimal))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((decimal?)(ValueType)o, Helper.Create(default(decimal))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((decimal)(object)o, Helper.Create(default(decimal))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((decimal?)(object)o, Helper.Create(default(decimal))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((decimal)(ValueType)(object)o, Helper.Create(default(decimal))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((decimal?)(ValueType)(object)o, Helper.Create(default(decimal))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((decimal)(ValueType)(object)o, Helper.Create(default(decimal))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((decimal?)(ValueType)(object)o, Helper.Create(default(decimal))); + } + + public static void Run() + { + decimal? s = Helper.Create(default(decimal)); + + Console.WriteLine("--- decimal? s = Helper.Create(default(decimal)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- decimal? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- decimal u = Helper.Create(default(decimal)) ---"); + decimal u = Helper.Create(default(decimal)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<decimal>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<decimal>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest14 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((IntPtr)(ValueType)o, Helper.Create(default(IntPtr))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((IntPtr?)(ValueType)o, Helper.Create(default(IntPtr))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((IntPtr)(object)o, Helper.Create(default(IntPtr))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((IntPtr?)(object)o, Helper.Create(default(IntPtr))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((IntPtr)(ValueType)(object)o, Helper.Create(default(IntPtr))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((IntPtr?)(ValueType)(object)o, Helper.Create(default(IntPtr))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((IntPtr)(ValueType)(object)o, Helper.Create(default(IntPtr))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((IntPtr?)(ValueType)(object)o, Helper.Create(default(IntPtr))); + } + + public static void Run() + { + IntPtr? s = Helper.Create(default(IntPtr)); + + Console.WriteLine("--- IntPtr? s = Helper.Create(default(IntPtr)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- IntPtr? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- IntPtr u = Helper.Create(default(IntPtr)) ---"); + IntPtr u = Helper.Create(default(IntPtr)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<IntPtr>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<IntPtr>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest15 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((UIntPtr)(ValueType)o, Helper.Create(default(UIntPtr))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((UIntPtr?)(ValueType)o, Helper.Create(default(UIntPtr))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((UIntPtr)(object)o, Helper.Create(default(UIntPtr))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((UIntPtr?)(object)o, Helper.Create(default(UIntPtr))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((UIntPtr)(ValueType)(object)o, Helper.Create(default(UIntPtr))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((UIntPtr?)(ValueType)(object)o, Helper.Create(default(UIntPtr))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((UIntPtr)(ValueType)(object)o, Helper.Create(default(UIntPtr))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((UIntPtr?)(ValueType)(object)o, Helper.Create(default(UIntPtr))); + } + + public static void Run() + { + UIntPtr? s = Helper.Create(default(UIntPtr)); + + Console.WriteLine("--- UIntPtr? s = Helper.Create(default(UIntPtr)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- UIntPtr? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- UIntPtr u = Helper.Create(default(UIntPtr)) ---"); + UIntPtr u = Helper.Create(default(UIntPtr)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<UIntPtr>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<UIntPtr>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest16 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((Guid)(ValueType)o, Helper.Create(default(Guid))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((Guid?)(ValueType)o, Helper.Create(default(Guid))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((Guid)(object)o, Helper.Create(default(Guid))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((Guid?)(object)o, Helper.Create(default(Guid))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((Guid)(ValueType)(object)o, Helper.Create(default(Guid))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((Guid?)(ValueType)(object)o, Helper.Create(default(Guid))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((Guid)(ValueType)(object)o, Helper.Create(default(Guid))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((Guid?)(ValueType)(object)o, Helper.Create(default(Guid))); + } + + public static void Run() + { + Guid? s = Helper.Create(default(Guid)); + + Console.WriteLine("--- Guid? s = Helper.Create(default(Guid)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- Guid? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- Guid u = Helper.Create(default(Guid)) ---"); + Guid u = Helper.Create(default(Guid)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<Guid>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<Guid>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest17 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((GCHandle)(ValueType)o, Helper.Create(default(GCHandle))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((GCHandle?)(ValueType)o, Helper.Create(default(GCHandle))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((GCHandle)(object)o, Helper.Create(default(GCHandle))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((GCHandle?)(object)o, Helper.Create(default(GCHandle))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((GCHandle)(ValueType)(object)o, Helper.Create(default(GCHandle))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((GCHandle?)(ValueType)(object)o, Helper.Create(default(GCHandle))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((GCHandle)(ValueType)(object)o, Helper.Create(default(GCHandle))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((GCHandle?)(ValueType)(object)o, Helper.Create(default(GCHandle))); + } + + public static void Run() + { + GCHandle? s = Helper.Create(default(GCHandle)); + + Console.WriteLine("--- GCHandle? s = Helper.Create(default(GCHandle)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- GCHandle? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- GCHandle u = Helper.Create(default(GCHandle)) ---"); + GCHandle u = Helper.Create(default(GCHandle)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<GCHandle>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<GCHandle>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest18 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((ByteE)(ValueType)o, Helper.Create(default(ByteE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((ByteE?)(ValueType)o, Helper.Create(default(ByteE))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((ByteE)(object)o, Helper.Create(default(ByteE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((ByteE?)(object)o, Helper.Create(default(ByteE))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((ByteE)(ValueType)(object)o, Helper.Create(default(ByteE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((ByteE?)(ValueType)(object)o, Helper.Create(default(ByteE))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((ByteE)(ValueType)(object)o, Helper.Create(default(ByteE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((ByteE?)(ValueType)(object)o, Helper.Create(default(ByteE))); + } + + public static void Run() + { + ByteE? s = Helper.Create(default(ByteE)); + + Console.WriteLine("--- ByteE? s = Helper.Create(default(ByteE)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ByteE? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ByteE u = Helper.Create(default(ByteE)) ---"); + ByteE u = Helper.Create(default(ByteE)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<ByteE>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<ByteE>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest19 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((IntE)(ValueType)o, Helper.Create(default(IntE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((IntE?)(ValueType)o, Helper.Create(default(IntE))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((IntE)(object)o, Helper.Create(default(IntE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((IntE?)(object)o, Helper.Create(default(IntE))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((IntE)(ValueType)(object)o, Helper.Create(default(IntE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((IntE?)(ValueType)(object)o, Helper.Create(default(IntE))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((IntE)(ValueType)(object)o, Helper.Create(default(IntE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((IntE?)(ValueType)(object)o, Helper.Create(default(IntE))); + } + + public static void Run() + { + IntE? s = Helper.Create(default(IntE)); + + Console.WriteLine("--- IntE? s = Helper.Create(default(IntE)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- IntE? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- IntE u = Helper.Create(default(IntE)) ---"); + IntE u = Helper.Create(default(IntE)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<IntE>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<IntE>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest20 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((LongE)(ValueType)o, Helper.Create(default(LongE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((LongE?)(ValueType)o, Helper.Create(default(LongE))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((LongE)(object)o, Helper.Create(default(LongE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((LongE?)(object)o, Helper.Create(default(LongE))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((LongE)(ValueType)(object)o, Helper.Create(default(LongE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((LongE?)(ValueType)(object)o, Helper.Create(default(LongE))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((LongE)(ValueType)(object)o, Helper.Create(default(LongE))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((LongE?)(ValueType)(object)o, Helper.Create(default(LongE))); + } + + public static void Run() + { + LongE? s = Helper.Create(default(LongE)); + + Console.WriteLine("--- LongE? s = Helper.Create(default(LongE)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- LongE? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- LongE u = Helper.Create(default(LongE)) ---"); + LongE u = Helper.Create(default(LongE)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<LongE>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<LongE>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest21 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((EmptyStruct)(ValueType)o, Helper.Create(default(EmptyStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((EmptyStruct?)(ValueType)o, Helper.Create(default(EmptyStruct))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((EmptyStruct)(object)o, Helper.Create(default(EmptyStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((EmptyStruct?)(object)o, Helper.Create(default(EmptyStruct))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((EmptyStruct)(ValueType)(object)o, Helper.Create(default(EmptyStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((EmptyStruct?)(ValueType)(object)o, Helper.Create(default(EmptyStruct))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((EmptyStruct)(ValueType)(object)o, Helper.Create(default(EmptyStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((EmptyStruct?)(ValueType)(object)o, Helper.Create(default(EmptyStruct))); + } + + public static void Run() + { + EmptyStruct? s = Helper.Create(default(EmptyStruct)); + + Console.WriteLine("--- EmptyStruct? s = Helper.Create(default(EmptyStruct)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- EmptyStruct? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- EmptyStruct u = Helper.Create(default(EmptyStruct)) ---"); + EmptyStruct u = Helper.Create(default(EmptyStruct)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<EmptyStruct>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<EmptyStruct>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest22 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NotEmptyStruct)(ValueType)o, Helper.Create(default(NotEmptyStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NotEmptyStruct?)(ValueType)o, Helper.Create(default(NotEmptyStruct))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NotEmptyStruct)(object)o, Helper.Create(default(NotEmptyStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NotEmptyStruct?)(object)o, Helper.Create(default(NotEmptyStruct))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NotEmptyStruct)(ValueType)(object)o, Helper.Create(default(NotEmptyStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NotEmptyStruct?)(ValueType)(object)o, Helper.Create(default(NotEmptyStruct))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NotEmptyStruct)(ValueType)(object)o, Helper.Create(default(NotEmptyStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NotEmptyStruct?)(ValueType)(object)o, Helper.Create(default(NotEmptyStruct))); + } + + public static void Run() + { + NotEmptyStruct? s = Helper.Create(default(NotEmptyStruct)); + + Console.WriteLine("--- NotEmptyStruct? s = Helper.Create(default(NotEmptyStruct)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStruct? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStruct u = Helper.Create(default(NotEmptyStruct)) ---"); + NotEmptyStruct u = Helper.Create(default(NotEmptyStruct)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NotEmptyStruct>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NotEmptyStruct>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest23 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NotEmptyStructQ)(ValueType)o, Helper.Create(default(NotEmptyStructQ))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NotEmptyStructQ?)(ValueType)o, Helper.Create(default(NotEmptyStructQ))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NotEmptyStructQ)(object)o, Helper.Create(default(NotEmptyStructQ))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NotEmptyStructQ?)(object)o, Helper.Create(default(NotEmptyStructQ))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NotEmptyStructQ)(ValueType)(object)o, Helper.Create(default(NotEmptyStructQ))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NotEmptyStructQ?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructQ))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NotEmptyStructQ)(ValueType)(object)o, Helper.Create(default(NotEmptyStructQ))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NotEmptyStructQ?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructQ))); + } + + public static void Run() + { + NotEmptyStructQ? s = Helper.Create(default(NotEmptyStructQ)); + + Console.WriteLine("--- NotEmptyStructQ? s = Helper.Create(default(NotEmptyStructQ)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructQ? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructQ u = Helper.Create(default(NotEmptyStructQ)) ---"); + NotEmptyStructQ u = Helper.Create(default(NotEmptyStructQ)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NotEmptyStructQ>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NotEmptyStructQ>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest24 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NotEmptyStructA)(ValueType)o, Helper.Create(default(NotEmptyStructA))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NotEmptyStructA?)(ValueType)o, Helper.Create(default(NotEmptyStructA))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NotEmptyStructA)(object)o, Helper.Create(default(NotEmptyStructA))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NotEmptyStructA?)(object)o, Helper.Create(default(NotEmptyStructA))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NotEmptyStructA)(ValueType)(object)o, Helper.Create(default(NotEmptyStructA))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NotEmptyStructA?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructA))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NotEmptyStructA)(ValueType)(object)o, Helper.Create(default(NotEmptyStructA))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NotEmptyStructA?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructA))); + } + + public static void Run() + { + NotEmptyStructA? s = Helper.Create(default(NotEmptyStructA)); + + Console.WriteLine("--- NotEmptyStructA? s = Helper.Create(default(NotEmptyStructA)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructA? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructA u = Helper.Create(default(NotEmptyStructA)) ---"); + NotEmptyStructA u = Helper.Create(default(NotEmptyStructA)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NotEmptyStructA>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NotEmptyStructA>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest25 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NotEmptyStructQA)(ValueType)o, Helper.Create(default(NotEmptyStructQA))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NotEmptyStructQA?)(ValueType)o, Helper.Create(default(NotEmptyStructQA))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NotEmptyStructQA)(object)o, Helper.Create(default(NotEmptyStructQA))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NotEmptyStructQA?)(object)o, Helper.Create(default(NotEmptyStructQA))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NotEmptyStructQA)(ValueType)(object)o, Helper.Create(default(NotEmptyStructQA))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NotEmptyStructQA?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructQA))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NotEmptyStructQA)(ValueType)(object)o, Helper.Create(default(NotEmptyStructQA))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NotEmptyStructQA?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructQA))); + } + + public static void Run() + { + NotEmptyStructQA? s = Helper.Create(default(NotEmptyStructQA)); + + Console.WriteLine("--- NotEmptyStructQA? s = Helper.Create(default(NotEmptyStructQA)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructQA? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructQA u = Helper.Create(default(NotEmptyStructQA)) ---"); + NotEmptyStructQA u = Helper.Create(default(NotEmptyStructQA)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NotEmptyStructQA>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NotEmptyStructQA>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest26 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((EmptyStructGen<int>)(ValueType)o, Helper.Create(default(EmptyStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((EmptyStructGen<int>?)(ValueType)o, Helper.Create(default(EmptyStructGen<int>))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((EmptyStructGen<int>)(object)o, Helper.Create(default(EmptyStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((EmptyStructGen<int>?)(object)o, Helper.Create(default(EmptyStructGen<int>))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((EmptyStructGen<int>)(ValueType)(object)o, Helper.Create(default(EmptyStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((EmptyStructGen<int>?)(ValueType)(object)o, Helper.Create(default(EmptyStructGen<int>))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((EmptyStructGen<int>)(ValueType)(object)o, Helper.Create(default(EmptyStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((EmptyStructGen<int>?)(ValueType)(object)o, Helper.Create(default(EmptyStructGen<int>))); + } + + public static void Run() + { + EmptyStructGen<int>? s = Helper.Create(default(EmptyStructGen<int>)); + + Console.WriteLine("--- EmptyStructGen<int>? s = Helper.Create(default(EmptyStructGen<int>)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- EmptyStructGen<int>? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- EmptyStructGen<int> u = Helper.Create(default(EmptyStructGen<int>)) ---"); + EmptyStructGen<int> u = Helper.Create(default(EmptyStructGen<int>)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<EmptyStructGen<int>>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<EmptyStructGen<int>>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest27 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NotEmptyStructGen<int>)(ValueType)o, Helper.Create(default(NotEmptyStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NotEmptyStructGen<int>?)(ValueType)o, Helper.Create(default(NotEmptyStructGen<int>))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NotEmptyStructGen<int>)(object)o, Helper.Create(default(NotEmptyStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NotEmptyStructGen<int>?)(object)o, Helper.Create(default(NotEmptyStructGen<int>))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NotEmptyStructGen<int>)(ValueType)(object)o, Helper.Create(default(NotEmptyStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NotEmptyStructGen<int>?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructGen<int>))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NotEmptyStructGen<int>)(ValueType)(object)o, Helper.Create(default(NotEmptyStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NotEmptyStructGen<int>?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructGen<int>))); + } + + public static void Run() + { + NotEmptyStructGen<int>? s = Helper.Create(default(NotEmptyStructGen<int>)); + + Console.WriteLine("--- NotEmptyStructGen<int>? s = Helper.Create(default(NotEmptyStructGen<int>)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructGen<int>? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructGen<int> u = Helper.Create(default(NotEmptyStructGen<int>)) ---"); + NotEmptyStructGen<int> u = Helper.Create(default(NotEmptyStructGen<int>)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NotEmptyStructGen<int>>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NotEmptyStructGen<int>>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest28 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGen<int>)(ValueType)o, Helper.Create(default(NotEmptyStructConstrainedGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NotEmptyStructConstrainedGen<int>?)(ValueType)o, Helper.Create(default(NotEmptyStructConstrainedGen<int>))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGen<int>)(object)o, Helper.Create(default(NotEmptyStructConstrainedGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NotEmptyStructConstrainedGen<int>?)(object)o, Helper.Create(default(NotEmptyStructConstrainedGen<int>))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGen<int>)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NotEmptyStructConstrainedGen<int>?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGen<int>))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGen<int>)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NotEmptyStructConstrainedGen<int>?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGen<int>))); + } + + public static void Run() + { + NotEmptyStructConstrainedGen<int>? s = Helper.Create(default(NotEmptyStructConstrainedGen<int>)); + + Console.WriteLine("--- NotEmptyStructConstrainedGen<int>? s = Helper.Create(default(NotEmptyStructConstrainedGen<int>)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructConstrainedGen<int>? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructConstrainedGen<int> u = Helper.Create(default(NotEmptyStructConstrainedGen<int>)) ---"); + NotEmptyStructConstrainedGen<int> u = Helper.Create(default(NotEmptyStructConstrainedGen<int>)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NotEmptyStructConstrainedGen<int>>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NotEmptyStructConstrainedGen<int>>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest29 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenA<int>)(ValueType)o, Helper.Create(default(NotEmptyStructConstrainedGenA<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NotEmptyStructConstrainedGenA<int>?)(ValueType)o, Helper.Create(default(NotEmptyStructConstrainedGenA<int>))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenA<int>)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenA<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NotEmptyStructConstrainedGenA<int>?)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenA<int>))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenA<int>)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenA<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NotEmptyStructConstrainedGenA<int>?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenA<int>))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenA<int>)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenA<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NotEmptyStructConstrainedGenA<int>?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenA<int>))); + } + + public static void Run() + { + NotEmptyStructConstrainedGenA<int>? s = Helper.Create(default(NotEmptyStructConstrainedGenA<int>)); + + Console.WriteLine("--- NotEmptyStructConstrainedGenA<int>? s = Helper.Create(default(NotEmptyStructConstrainedGenA<int>)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructConstrainedGenA<int>? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructConstrainedGenA<int> u = Helper.Create(default(NotEmptyStructConstrainedGenA<int>)) ---"); + NotEmptyStructConstrainedGenA<int> u = Helper.Create(default(NotEmptyStructConstrainedGenA<int>)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NotEmptyStructConstrainedGenA<int>>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NotEmptyStructConstrainedGenA<int>>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest30 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenQ<int>)(ValueType)o, Helper.Create(default(NotEmptyStructConstrainedGenQ<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NotEmptyStructConstrainedGenQ<int>?)(ValueType)o, Helper.Create(default(NotEmptyStructConstrainedGenQ<int>))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenQ<int>)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQ<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NotEmptyStructConstrainedGenQ<int>?)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQ<int>))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenQ<int>)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQ<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NotEmptyStructConstrainedGenQ<int>?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQ<int>))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenQ<int>)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQ<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NotEmptyStructConstrainedGenQ<int>?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQ<int>))); + } + + public static void Run() + { + NotEmptyStructConstrainedGenQ<int>? s = Helper.Create(default(NotEmptyStructConstrainedGenQ<int>)); + + Console.WriteLine("--- NotEmptyStructConstrainedGenQ<int>? s = Helper.Create(default(NotEmptyStructConstrainedGenQ<int>)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructConstrainedGenQ<int>? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructConstrainedGenQ<int> u = Helper.Create(default(NotEmptyStructConstrainedGenQ<int>)) ---"); + NotEmptyStructConstrainedGenQ<int> u = Helper.Create(default(NotEmptyStructConstrainedGenQ<int>)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NotEmptyStructConstrainedGenQ<int>>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NotEmptyStructConstrainedGenQ<int>>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest31 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenQA<int>)(ValueType)o, Helper.Create(default(NotEmptyStructConstrainedGenQA<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NotEmptyStructConstrainedGenQA<int>?)(ValueType)o, Helper.Create(default(NotEmptyStructConstrainedGenQA<int>))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenQA<int>)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQA<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NotEmptyStructConstrainedGenQA<int>?)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQA<int>))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenQA<int>)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQA<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NotEmptyStructConstrainedGenQA<int>?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQA<int>))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NotEmptyStructConstrainedGenQA<int>)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQA<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NotEmptyStructConstrainedGenQA<int>?)(ValueType)(object)o, Helper.Create(default(NotEmptyStructConstrainedGenQA<int>))); + } + + public static void Run() + { + NotEmptyStructConstrainedGenQA<int>? s = Helper.Create(default(NotEmptyStructConstrainedGenQA<int>)); + + Console.WriteLine("--- NotEmptyStructConstrainedGenQA<int>? s = Helper.Create(default(NotEmptyStructConstrainedGenQA<int>)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructConstrainedGenQA<int>? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NotEmptyStructConstrainedGenQA<int> u = Helper.Create(default(NotEmptyStructConstrainedGenQA<int>)) ---"); + NotEmptyStructConstrainedGenQA<int> u = Helper.Create(default(NotEmptyStructConstrainedGenQA<int>)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NotEmptyStructConstrainedGenQA<int>>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NotEmptyStructConstrainedGenQA<int>>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest32 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NestedStruct)(ValueType)o, Helper.Create(default(NestedStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NestedStruct?)(ValueType)o, Helper.Create(default(NestedStruct))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NestedStruct)(object)o, Helper.Create(default(NestedStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NestedStruct?)(object)o, Helper.Create(default(NestedStruct))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NestedStruct)(ValueType)(object)o, Helper.Create(default(NestedStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NestedStruct?)(ValueType)(object)o, Helper.Create(default(NestedStruct))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NestedStruct)(ValueType)(object)o, Helper.Create(default(NestedStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NestedStruct?)(ValueType)(object)o, Helper.Create(default(NestedStruct))); + } + + public static void Run() + { + NestedStruct? s = Helper.Create(default(NestedStruct)); + + Console.WriteLine("--- NestedStruct? s = Helper.Create(default(NestedStruct)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NestedStruct? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NestedStruct u = Helper.Create(default(NestedStruct)) ---"); + NestedStruct u = Helper.Create(default(NestedStruct)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NestedStruct>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NestedStruct>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest33 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((NestedStructGen<int>)(ValueType)o, Helper.Create(default(NestedStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((NestedStructGen<int>?)(ValueType)o, Helper.Create(default(NestedStructGen<int>))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((NestedStructGen<int>)(object)o, Helper.Create(default(NestedStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((NestedStructGen<int>?)(object)o, Helper.Create(default(NestedStructGen<int>))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((NestedStructGen<int>)(ValueType)(object)o, Helper.Create(default(NestedStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((NestedStructGen<int>?)(ValueType)(object)o, Helper.Create(default(NestedStructGen<int>))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((NestedStructGen<int>)(ValueType)(object)o, Helper.Create(default(NestedStructGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((NestedStructGen<int>?)(ValueType)(object)o, Helper.Create(default(NestedStructGen<int>))); + } + + public static void Run() + { + NestedStructGen<int>? s = Helper.Create(default(NestedStructGen<int>)); + + Console.WriteLine("--- NestedStructGen<int>? s = Helper.Create(default(NestedStructGen<int>)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NestedStructGen<int>? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- NestedStructGen<int> u = Helper.Create(default(NestedStructGen<int>)) ---"); + NestedStructGen<int> u = Helper.Create(default(NestedStructGen<int>)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<NestedStructGen<int>>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<NestedStructGen<int>>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest34 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((ExplicitFieldOffsetStruct)(ValueType)o, Helper.Create(default(ExplicitFieldOffsetStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((ExplicitFieldOffsetStruct?)(ValueType)o, Helper.Create(default(ExplicitFieldOffsetStruct))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((ExplicitFieldOffsetStruct)(object)o, Helper.Create(default(ExplicitFieldOffsetStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((ExplicitFieldOffsetStruct?)(object)o, Helper.Create(default(ExplicitFieldOffsetStruct))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((ExplicitFieldOffsetStruct)(ValueType)(object)o, Helper.Create(default(ExplicitFieldOffsetStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((ExplicitFieldOffsetStruct?)(ValueType)(object)o, Helper.Create(default(ExplicitFieldOffsetStruct))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((ExplicitFieldOffsetStruct)(ValueType)(object)o, Helper.Create(default(ExplicitFieldOffsetStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((ExplicitFieldOffsetStruct?)(ValueType)(object)o, Helper.Create(default(ExplicitFieldOffsetStruct))); + } + + public static void Run() + { + ExplicitFieldOffsetStruct? s = Helper.Create(default(ExplicitFieldOffsetStruct)); + + Console.WriteLine("--- ExplicitFieldOffsetStruct? s = Helper.Create(default(ExplicitFieldOffsetStruct)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ExplicitFieldOffsetStruct? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ExplicitFieldOffsetStruct u = Helper.Create(default(ExplicitFieldOffsetStruct)) ---"); + ExplicitFieldOffsetStruct u = Helper.Create(default(ExplicitFieldOffsetStruct)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<ExplicitFieldOffsetStruct>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<ExplicitFieldOffsetStruct>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest37 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((MarshalAsStruct)(ValueType)o, Helper.Create(default(MarshalAsStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((MarshalAsStruct?)(ValueType)o, Helper.Create(default(MarshalAsStruct))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((MarshalAsStruct)(object)o, Helper.Create(default(MarshalAsStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((MarshalAsStruct?)(object)o, Helper.Create(default(MarshalAsStruct))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((MarshalAsStruct)(ValueType)(object)o, Helper.Create(default(MarshalAsStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((MarshalAsStruct?)(ValueType)(object)o, Helper.Create(default(MarshalAsStruct))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((MarshalAsStruct)(ValueType)(object)o, Helper.Create(default(MarshalAsStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((MarshalAsStruct?)(ValueType)(object)o, Helper.Create(default(MarshalAsStruct))); + } + + public static void Run() + { + MarshalAsStruct? s = Helper.Create(default(MarshalAsStruct)); + + Console.WriteLine("--- MarshalAsStruct? s = Helper.Create(default(MarshalAsStruct)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- MarshalAsStruct? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- MarshalAsStruct u = Helper.Create(default(MarshalAsStruct)) ---"); + MarshalAsStruct u = Helper.Create(default(MarshalAsStruct)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<MarshalAsStruct>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<MarshalAsStruct>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest38 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((ImplementOneInterface)(ValueType)o, Helper.Create(default(ImplementOneInterface))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((ImplementOneInterface?)(ValueType)o, Helper.Create(default(ImplementOneInterface))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((ImplementOneInterface)(object)o, Helper.Create(default(ImplementOneInterface))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((ImplementOneInterface?)(object)o, Helper.Create(default(ImplementOneInterface))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((ImplementOneInterface)(ValueType)(object)o, Helper.Create(default(ImplementOneInterface))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((ImplementOneInterface?)(ValueType)(object)o, Helper.Create(default(ImplementOneInterface))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((ImplementOneInterface)(ValueType)(object)o, Helper.Create(default(ImplementOneInterface))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((ImplementOneInterface?)(ValueType)(object)o, Helper.Create(default(ImplementOneInterface))); + } + + public static void Run() + { + ImplementOneInterface? s = Helper.Create(default(ImplementOneInterface)); + + Console.WriteLine("--- ImplementOneInterface? s = Helper.Create(default(ImplementOneInterface)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ImplementOneInterface? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ImplementOneInterface u = Helper.Create(default(ImplementOneInterface)) ---"); + ImplementOneInterface u = Helper.Create(default(ImplementOneInterface)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<ImplementOneInterface>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<ImplementOneInterface>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest39 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((ImplementTwoInterface)(ValueType)o, Helper.Create(default(ImplementTwoInterface))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((ImplementTwoInterface?)(ValueType)o, Helper.Create(default(ImplementTwoInterface))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((ImplementTwoInterface)(object)o, Helper.Create(default(ImplementTwoInterface))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((ImplementTwoInterface?)(object)o, Helper.Create(default(ImplementTwoInterface))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((ImplementTwoInterface)(ValueType)(object)o, Helper.Create(default(ImplementTwoInterface))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((ImplementTwoInterface?)(ValueType)(object)o, Helper.Create(default(ImplementTwoInterface))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((ImplementTwoInterface)(ValueType)(object)o, Helper.Create(default(ImplementTwoInterface))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((ImplementTwoInterface?)(ValueType)(object)o, Helper.Create(default(ImplementTwoInterface))); + } + + public static void Run() + { + ImplementTwoInterface? s = Helper.Create(default(ImplementTwoInterface)); + + Console.WriteLine("--- ImplementTwoInterface? s = Helper.Create(default(ImplementTwoInterface)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ImplementTwoInterface? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ImplementTwoInterface u = Helper.Create(default(ImplementTwoInterface)) ---"); + ImplementTwoInterface u = Helper.Create(default(ImplementTwoInterface)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<ImplementTwoInterface>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<ImplementTwoInterface>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest40 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((ImplementOneInterfaceGen<int>)(ValueType)o, Helper.Create(default(ImplementOneInterfaceGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((ImplementOneInterfaceGen<int>?)(ValueType)o, Helper.Create(default(ImplementOneInterfaceGen<int>))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((ImplementOneInterfaceGen<int>)(object)o, Helper.Create(default(ImplementOneInterfaceGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((ImplementOneInterfaceGen<int>?)(object)o, Helper.Create(default(ImplementOneInterfaceGen<int>))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((ImplementOneInterfaceGen<int>)(ValueType)(object)o, Helper.Create(default(ImplementOneInterfaceGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((ImplementOneInterfaceGen<int>?)(ValueType)(object)o, Helper.Create(default(ImplementOneInterfaceGen<int>))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((ImplementOneInterfaceGen<int>)(ValueType)(object)o, Helper.Create(default(ImplementOneInterfaceGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((ImplementOneInterfaceGen<int>?)(ValueType)(object)o, Helper.Create(default(ImplementOneInterfaceGen<int>))); + } + + public static void Run() + { + ImplementOneInterfaceGen<int>? s = Helper.Create(default(ImplementOneInterfaceGen<int>)); + + Console.WriteLine("--- ImplementOneInterfaceGen<int>? s = Helper.Create(default(ImplementOneInterfaceGen<int>)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ImplementOneInterfaceGen<int>? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ImplementOneInterfaceGen<int> u = Helper.Create(default(ImplementOneInterfaceGen<int>)) ---"); + ImplementOneInterfaceGen<int> u = Helper.Create(default(ImplementOneInterfaceGen<int>)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<ImplementOneInterfaceGen<int>>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<ImplementOneInterfaceGen<int>>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest41 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((ImplementTwoInterfaceGen<int>)(ValueType)o, Helper.Create(default(ImplementTwoInterfaceGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((ImplementTwoInterfaceGen<int>?)(ValueType)o, Helper.Create(default(ImplementTwoInterfaceGen<int>))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((ImplementTwoInterfaceGen<int>)(object)o, Helper.Create(default(ImplementTwoInterfaceGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((ImplementTwoInterfaceGen<int>?)(object)o, Helper.Create(default(ImplementTwoInterfaceGen<int>))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((ImplementTwoInterfaceGen<int>)(ValueType)(object)o, Helper.Create(default(ImplementTwoInterfaceGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((ImplementTwoInterfaceGen<int>?)(ValueType)(object)o, Helper.Create(default(ImplementTwoInterfaceGen<int>))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((ImplementTwoInterfaceGen<int>)(ValueType)(object)o, Helper.Create(default(ImplementTwoInterfaceGen<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((ImplementTwoInterfaceGen<int>?)(ValueType)(object)o, Helper.Create(default(ImplementTwoInterfaceGen<int>))); + } + + public static void Run() + { + ImplementTwoInterfaceGen<int>? s = Helper.Create(default(ImplementTwoInterfaceGen<int>)); + + Console.WriteLine("--- ImplementTwoInterfaceGen<int>? s = Helper.Create(default(ImplementTwoInterfaceGen<int>)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ImplementTwoInterfaceGen<int>? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ImplementTwoInterfaceGen<int> u = Helper.Create(default(ImplementTwoInterfaceGen<int>)) ---"); + ImplementTwoInterfaceGen<int> u = Helper.Create(default(ImplementTwoInterfaceGen<int>)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<ImplementTwoInterfaceGen<int>>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<ImplementTwoInterfaceGen<int>>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest42 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((ImplementAllInterface<int>)(ValueType)o, Helper.Create(default(ImplementAllInterface<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((ImplementAllInterface<int>?)(ValueType)o, Helper.Create(default(ImplementAllInterface<int>))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((ImplementAllInterface<int>)(object)o, Helper.Create(default(ImplementAllInterface<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((ImplementAllInterface<int>?)(object)o, Helper.Create(default(ImplementAllInterface<int>))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((ImplementAllInterface<int>)(ValueType)(object)o, Helper.Create(default(ImplementAllInterface<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((ImplementAllInterface<int>?)(ValueType)(object)o, Helper.Create(default(ImplementAllInterface<int>))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((ImplementAllInterface<int>)(ValueType)(object)o, Helper.Create(default(ImplementAllInterface<int>))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((ImplementAllInterface<int>?)(ValueType)(object)o, Helper.Create(default(ImplementAllInterface<int>))); + } + + public static void Run() + { + ImplementAllInterface<int>? s = Helper.Create(default(ImplementAllInterface<int>)); + + Console.WriteLine("--- ImplementAllInterface<int>? s = Helper.Create(default(ImplementAllInterface<int>)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ImplementAllInterface<int>? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- ImplementAllInterface<int> u = Helper.Create(default(ImplementAllInterface<int>)) ---"); + ImplementAllInterface<int> u = Helper.Create(default(ImplementAllInterface<int>)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<ImplementAllInterface<int>>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<ImplementAllInterface<int>>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest43 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((WithMultipleGCHandleStruct)(ValueType)o, Helper.Create(default(WithMultipleGCHandleStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((WithMultipleGCHandleStruct?)(ValueType)o, Helper.Create(default(WithMultipleGCHandleStruct))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((WithMultipleGCHandleStruct)(object)o, Helper.Create(default(WithMultipleGCHandleStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((WithMultipleGCHandleStruct?)(object)o, Helper.Create(default(WithMultipleGCHandleStruct))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((WithMultipleGCHandleStruct)(ValueType)(object)o, Helper.Create(default(WithMultipleGCHandleStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((WithMultipleGCHandleStruct?)(ValueType)(object)o, Helper.Create(default(WithMultipleGCHandleStruct))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((WithMultipleGCHandleStruct)(ValueType)(object)o, Helper.Create(default(WithMultipleGCHandleStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((WithMultipleGCHandleStruct?)(ValueType)(object)o, Helper.Create(default(WithMultipleGCHandleStruct))); + } + + public static void Run() + { + WithMultipleGCHandleStruct? s = Helper.Create(default(WithMultipleGCHandleStruct)); + + Console.WriteLine("--- WithMultipleGCHandleStruct? s = Helper.Create(default(WithMultipleGCHandleStruct)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- WithMultipleGCHandleStruct? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- WithMultipleGCHandleStruct u = Helper.Create(default(WithMultipleGCHandleStruct)) ---"); + WithMultipleGCHandleStruct u = Helper.Create(default(WithMultipleGCHandleStruct)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<WithMultipleGCHandleStruct>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<WithMultipleGCHandleStruct>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest44 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((WithOnlyFXTypeStruct)(ValueType)o, Helper.Create(default(WithOnlyFXTypeStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((WithOnlyFXTypeStruct?)(ValueType)o, Helper.Create(default(WithOnlyFXTypeStruct))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((WithOnlyFXTypeStruct)(object)o, Helper.Create(default(WithOnlyFXTypeStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((WithOnlyFXTypeStruct?)(object)o, Helper.Create(default(WithOnlyFXTypeStruct))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((WithOnlyFXTypeStruct)(ValueType)(object)o, Helper.Create(default(WithOnlyFXTypeStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((WithOnlyFXTypeStruct?)(ValueType)(object)o, Helper.Create(default(WithOnlyFXTypeStruct))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((WithOnlyFXTypeStruct)(ValueType)(object)o, Helper.Create(default(WithOnlyFXTypeStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((WithOnlyFXTypeStruct?)(ValueType)(object)o, Helper.Create(default(WithOnlyFXTypeStruct))); + } + + public static void Run() + { + WithOnlyFXTypeStruct? s = Helper.Create(default(WithOnlyFXTypeStruct)); + + Console.WriteLine("--- WithOnlyFXTypeStruct? s = Helper.Create(default(WithOnlyFXTypeStruct)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- WithOnlyFXTypeStruct? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- WithOnlyFXTypeStruct u = Helper.Create(default(WithOnlyFXTypeStruct)) ---"); + WithOnlyFXTypeStruct u = Helper.Create(default(WithOnlyFXTypeStruct)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<WithOnlyFXTypeStruct>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<WithOnlyFXTypeStruct>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class NullableTest45 +{ + private static bool BoxUnboxToNQ(object o) + { + try + { + return Helper.Compare((MixedAllStruct)(ValueType)o, Helper.Create(default(MixedAllStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQ(object o) + { + return Helper.Compare((MixedAllStruct?)(ValueType)o, Helper.Create(default(MixedAllStruct))); + } + + private static bool BoxUnboxToNQV(ValueType o) + { + try + { + return Helper.Compare((MixedAllStruct)(object)o, Helper.Create(default(MixedAllStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQV(ValueType o) + { + return Helper.Compare((MixedAllStruct?)(object)o, Helper.Create(default(MixedAllStruct))); + } + + private static bool BoxUnboxToNQGen<T>(T o) + { + try + { + return Helper.Compare((MixedAllStruct)(ValueType)(object)o, Helper.Create(default(MixedAllStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGen<T>(T o) + { + return Helper.Compare((MixedAllStruct?)(ValueType)(object)o, Helper.Create(default(MixedAllStruct))); + } + + private static bool BoxUnboxToNQGenC<T>(T? o) where T : struct + { + try + { + return Helper.Compare((MixedAllStruct)(ValueType)(object)o, Helper.Create(default(MixedAllStruct))); + } + catch (NullReferenceException) + { + return o == null; + } + } + + private static bool BoxUnboxToQGenC<T>(T? o) where T : struct + { + return Helper.Compare((MixedAllStruct?)(ValueType)(object)o, Helper.Create(default(MixedAllStruct))); + } + + public static void Run() + { + MixedAllStruct? s = Helper.Create(default(MixedAllStruct)); + + Console.WriteLine("--- MixedAllStruct? s = Helper.Create(default(MixedAllStruct)) ---"); + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), true, "BoxUnboxToQGenC"); + + Console.WriteLine("--- MixedAllStruct? s = null ---"); + s = null; + Assert.AreEqual(BoxUnboxToNQ(s), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(s), false, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(s), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(s), false, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(s), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(s), false, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC(s), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC(s), false, "BoxUnboxToQGenC"); + + Console.WriteLine("--- MixedAllStruct u = Helper.Create(default(MixedAllStruct)) ---"); + MixedAllStruct u = Helper.Create(default(MixedAllStruct)); + Assert.AreEqual(BoxUnboxToNQ(u), true, "BoxUnboxToNQ"); + Assert.AreEqual(BoxUnboxToQ(u), true, "BoxUnboxToQ"); + Assert.AreEqual(BoxUnboxToNQV(u), true, "BoxUnboxToNQV"); + Assert.AreEqual(BoxUnboxToQV(u), true, "BoxUnboxToQV"); + Assert.AreEqual(BoxUnboxToNQGen(u), true, "BoxUnboxToNQGen"); + Assert.AreEqual(BoxUnboxToQGen(u), true, "BoxUnboxToQGen"); + Assert.AreEqual(BoxUnboxToNQGenC<MixedAllStruct>(u), true, "BoxUnboxToNQGenC"); + Assert.AreEqual(BoxUnboxToQGenC<MixedAllStruct>(u), true, "BoxUnboxToQGenC"); + } +} + + +internal class Test +{ + private static int Main() + { + try + { + NullableTest1.Run(); + NullableTest2.Run(); + NullableTest3.Run(); + NullableTest4.Run(); + NullableTest5.Run(); + NullableTest6.Run(); + NullableTest7.Run(); + NullableTest8.Run(); + NullableTest9.Run(); + NullableTest10.Run(); + NullableTest11.Run(); + NullableTest12.Run(); + NullableTest13.Run(); + NullableTest14.Run(); + NullableTest15.Run(); + NullableTest16.Run(); + NullableTest17.Run(); + NullableTest18.Run(); + NullableTest19.Run(); + NullableTest20.Run(); + NullableTest21.Run(); + NullableTest22.Run(); + NullableTest23.Run(); + NullableTest24.Run(); + NullableTest25.Run(); + NullableTest26.Run(); + NullableTest27.Run(); + NullableTest28.Run(); + NullableTest29.Run(); + NullableTest30.Run(); + NullableTest31.Run(); + NullableTest32.Run(); + NullableTest33.Run(); + NullableTest34.Run(); + NullableTest37.Run(); + NullableTest38.Run(); + NullableTest39.Run(); + NullableTest40.Run(); + NullableTest41.Run(); + NullableTest42.Run(); + NullableTest43.Run(); + NullableTest44.Run(); + NullableTest45.Run(); + } + catch (Exception ex) + { + Console.WriteLine("Test FAILED"); + Console.WriteLine(ex); + return 666; + } + return 100; + } +} + |