| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492 |
- //
- // FieldInfoTest - NUnit Test Cases for the FieldInfo class
- //
- // Authors:
- // Zoltan Varga ([email protected])
- // Gert Driesen ([email protected])
- //
- // (c) 2003 Ximian, Inc. (http://www.ximian.com)
- // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
- //
- // Permission is hereby granted, free of charge, to any person obtaining
- // a copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to
- // permit persons to whom the Software is furnished to do so, subject to
- // the following conditions:
- //
- // The above copyright notice and this permission notice shall be
- // included in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- //
- using System;
- using System.Threading;
- using System.Reflection;
- #if !MONOTOUCH && !FULL_AOT_RUNTIME
- using System.Reflection.Emit;
- #endif
- using System.Runtime.InteropServices;
- using NUnit.Framework;
- namespace MonoTests.System.Reflection
- {
- [StructLayout(LayoutKind.Explicit, Pack = 4, Size = 64)]
- public class Class1
- {
- [FieldOffset (32)]
- public int i;
- }
- [StructLayout(LayoutKind.Sequential)]
- public class Class2
- {
- [MarshalAsAttribute(UnmanagedType.Bool)]
- public int f0;
- [MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPStr)]
- public string[] f1;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst=100)]
- public string f2;
- #if FEATURE_COMINTEROP
- [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof (Marshal1), MarshalCookie="5")]
- public int f3;
- [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof (Marshal1), MarshalCookie = "5")]
- public object f4;
- #endif
- [Obsolete]
- public int f5;
- }
- public class Class3 : Class2
- {
- }
- // Disable this warning, as the purpose of this struct is to poke at the internal via reflection
- #pragma warning disable 649
- class FieldInvokeMatrix
- {
- public Byte field_Byte;
- public SByte field_SByte;
- public Boolean field_Boolean;
- public Char field_Char;
- public Int16 field_Int16;
- public UInt16 field_UInt16;
- public Int32 field_Int32;
- public UInt32 field_UInt32;
- public Int64 field_Int64;
- public UInt64 field_UInt64;
- public Single field_Single;
- public Double field_Double;
- public IntPtr field_IntPtr;
- public UIntPtr field_UIntPtr;
- public Decimal field_Decimal;
- public DateTime field_DateTime;
- public String field_String;
- public ByteEnum field_ByteEnum;
- public SByteEnum field_SByteEnum;
- public Int16Enum field_Int16Enum;
- public UInt16Enum field_UInt16Enum;
- public Int32Enum field_Int32Enum;
- public UInt32Enum field_UInt32Enum;
- public Int64Enum field_Int64Enum;
- public UInt64Enum field_UInt64Enum;
- }
- #pragma warning restore 649
- public enum ByteEnum : byte
- {
- MaxValue = Byte.MaxValue
- }
- public enum SByteEnum : sbyte
- {
- MaxValue = SByte.MaxValue
- }
- public enum Int16Enum : short
- {
- MaxValue = Int16.MaxValue
- }
- public enum UInt16Enum : ushort
- {
- MaxValue = UInt16.MaxValue
- }
- public enum Int32Enum : int
- {
- MaxValue = Int32.MaxValue
- }
- public enum UInt32Enum: uint
- {
- MaxValue= UInt32.MaxValue
- }
- public enum Int64Enum : long
- {
- MaxValue = Int64.MaxValue
- }
- public enum UInt64Enum: ulong
- {
- MaxValue = UInt64.MaxValue
- }
- [TestFixture]
- public unsafe class FieldInfoTest
- {
- [NonSerialized]
- public int i;
- [Test]
- public void IsDefined_AttributeType_Null ()
- {
- Type type = typeof (FieldInfoTest);
- FieldInfo field = type.GetField ("i");
- try {
- field.IsDefined ((Type) null, false);
- Assert.Fail ("#1");
- } catch (ArgumentNullException ex) {
- Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsNotNull (ex.ParamName, "#5");
- Assert.AreEqual ("attributeType", ex.ParamName, "#6");
- }
- }
- [Test]
- public void FieldInfoModule ()
- {
- Type type = typeof (FieldInfoTest);
- FieldInfo field = type.GetField ("i");
- Assert.AreEqual (type.Module, field.Module);
- }
- [Test]
- public void GetCustomAttributes ()
- {
- object [] attrs;
- FieldInfo fi;
- fi = typeof (Class2).GetField ("f5");
- attrs = fi.GetCustomAttributes (false);
- Assert.AreEqual (1, attrs.Length, "#B1");
- Assert.AreEqual (typeof (ObsoleteAttribute), attrs [0].GetType (), "#B2");
- attrs = fi.GetCustomAttributes (true);
- Assert.AreEqual (1, attrs.Length, "#B3");
- Assert.AreEqual (typeof (ObsoleteAttribute), attrs [0].GetType (), "#B4");
- attrs = fi.GetCustomAttributes (typeof (MarshalAsAttribute), false);
- Assert.AreEqual (0, attrs.Length, "#B5");
- attrs = fi.GetCustomAttributes (typeof (MarshalAsAttribute), true);
- Assert.AreEqual (0, attrs.Length, "#B6");
- attrs = fi.GetCustomAttributes (typeof (ObsoleteAttribute), false);
- Assert.AreEqual (1, attrs.Length, "#B7");
- Assert.AreEqual (typeof (ObsoleteAttribute), attrs [0].GetType (), "#B8");
- attrs = fi.GetCustomAttributes (typeof (ObsoleteAttribute), true);
- Assert.AreEqual (1, attrs.Length, "#B9");
- Assert.AreEqual (typeof (ObsoleteAttribute), attrs [0].GetType (), "#B10");
- fi = typeof (Class3).GetField ("f5");
- attrs = fi.GetCustomAttributes (false);
- Assert.AreEqual (1, attrs.Length, "#D1");
- Assert.AreEqual (typeof (ObsoleteAttribute), attrs [0].GetType (), "#D2");
- attrs = fi.GetCustomAttributes (true);
- Assert.AreEqual (1, attrs.Length, "#D3");
- Assert.AreEqual (typeof (ObsoleteAttribute), attrs [0].GetType (), "#D4");
- attrs = fi.GetCustomAttributes (typeof (MarshalAsAttribute), false);
- Assert.AreEqual (0, attrs.Length, "#D5");
- attrs = fi.GetCustomAttributes (typeof (MarshalAsAttribute), true);
- Assert.AreEqual (0, attrs.Length, "#D6");
- attrs = fi.GetCustomAttributes (typeof (ObsoleteAttribute), false);
- Assert.AreEqual (1, attrs.Length, "#D7");
- Assert.AreEqual (typeof (ObsoleteAttribute), attrs [0].GetType (), "#D8");
- attrs = fi.GetCustomAttributes (typeof (ObsoleteAttribute), true);
- Assert.AreEqual (1, attrs.Length, "#D9");
- Assert.AreEqual (typeof (ObsoleteAttribute), attrs [0].GetType (), "#D10");
- }
- [Test]
- public void MetadataToken ()
- {
- Type type = typeof (FieldInfoTest);
- FieldInfo field = type.GetField ("i");
- Assert.IsTrue ((int)field.MetadataToken > 0);
- }
- [Test] // GetFieldFromHandle (RuntimeFieldHandle)
- public void GetFieldFromHandle1_Handle_Zero ()
- {
- RuntimeFieldHandle fh = new RuntimeFieldHandle ();
- try {
- FieldInfo.GetFieldFromHandle (fh);
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- // Handle is not initialized
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsNull (ex.ParamName, "#5");
- }
- }
- [Test] // GetFieldFromHandle (RuntimeFieldHandle, RuntimeTypeHandle)
- public void GetFieldFromHandle2_DeclaringType_Zero ()
- {
- RuntimeTypeHandle th = new RuntimeTypeHandle ();
- FieldInfo fi1 = typeof (Class2).GetField ("f5");
- RuntimeFieldHandle fh = fi1.FieldHandle;
- FieldInfo fi2 = FieldInfo.GetFieldFromHandle (fh, th);
- Assert.IsNotNull (fi2, "#1");
- Assert.AreSame (fi1.DeclaringType, fi2.DeclaringType, "#2");
- Assert.AreEqual (fi1.FieldType, fi2.FieldType, "#3");
- Assert.AreEqual (fi1.Name, fi2.Name, "#4");
- }
- [Test] // GetFieldFromHandle (RuntimeFieldHandle, RuntimeTypeHandle)
- public void GetFieldFromHandle2_Handle_Generic ()
- {
- FieldInfoTest<string> instance = new FieldInfoTest<string> ();
- Type t = instance.GetType ();
- FieldInfo fi1 = t.GetField ("TestField");
- RuntimeFieldHandle fh = fi1.FieldHandle;
- RuntimeTypeHandle th = t.TypeHandle;
- FieldInfo fi2 = FieldInfo.GetFieldFromHandle (fh, th);
- Assert.IsNotNull (fi2, "#1");
- Assert.AreSame (t, fi2.DeclaringType, "#2");
- Assert.AreEqual (typeof (string), fi2.FieldType, "#3");
- Assert.AreEqual ("TestField", fi2.Name, "#4");
- }
- [Test] // GetFieldFromHandle (RuntimeFieldHandle, RuntimeTypeHandle)
- [Category ("NotWorking")]
- [Category ("NotDotNet")] // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=343449
- public void GetFieldFromHandle2_Handle_GenericDefinition ()
- {
- Type t1 = typeof (FieldInfoTest<>);
- FieldInfo fi1 = t1.GetField ("TestField");
- RuntimeFieldHandle fh = fi1.FieldHandle;
- FieldInfoTest<string> instance = new FieldInfoTest<string> ();
- Type t2 = instance.GetType ();
- RuntimeTypeHandle th = t2.TypeHandle;
- FieldInfo fi2 = FieldInfo.GetFieldFromHandle (fh, th);
- Assert.IsNotNull (fi2, "#1");
- Assert.AreSame (t2, fi2.DeclaringType, "#2");
- Assert.AreEqual (typeof (string), fi2.FieldType, "#3");
- Assert.AreEqual ("TestField", fi2.Name, "#4");
- }
- [Test] // GetFieldFromHandle (RuntimeFieldHandle, RuntimeTypeHandle)
- public void GetFieldFromHandle2_Handle_Zero ()
- {
- object instance = new Class2 ();
- RuntimeTypeHandle th = Type.GetTypeHandle (instance);
- RuntimeFieldHandle fh = new RuntimeFieldHandle ();
- try {
- FieldInfo.GetFieldFromHandle (fh, th);
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- // Handle is not initialized
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsNull (ex.ParamName, "#5");
- }
- }
- [Test]
- [ExpectedException (typeof (ArgumentException))]
- public void GetFieldFromHandle2_Incompatible ()
- {
- RuntimeFieldHandle fh = typeof (FieldInfoTest<int>).GetField ("TestField").FieldHandle;
- FieldInfoTest<string> instance = new FieldInfoTest<string> ();
- Type t2 = instance.GetType ();
- RuntimeTypeHandle th = t2.TypeHandle;
- FieldInfo fi2 = FieldInfo.GetFieldFromHandle (fh, th);
- }
- [Test]
- public void PseudoCustomAttributes ()
- {
- object [] attrs;
- Type t = typeof (FieldInfoTest);
- Assert.AreEqual (1, t.GetField ("i").GetCustomAttributes (typeof (NonSerializedAttribute), true).Length);
- attrs = typeof (Class1).GetField ("i").GetCustomAttributes (true);
- Assert.AreEqual (1, attrs.Length, "#B1");
- FieldOffsetAttribute field_attr = (FieldOffsetAttribute) attrs [0];
- Assert.AreEqual (32, field_attr.Value, "#B2");
- MarshalAsAttribute attr;
- attrs = typeof (Class2).GetField ("f0").GetCustomAttributes (true);
- Assert.AreEqual (1, attrs.Length, "#C1");
- attr = (MarshalAsAttribute) attrs [0];
- Assert.AreEqual (UnmanagedType.Bool, attr.Value, "#C2");
- attrs = typeof (Class2).GetField ("f1").GetCustomAttributes (true);
- Assert.AreEqual (1, attrs.Length, "#D1");
- attr = (MarshalAsAttribute) attrs [0];
- Assert.AreEqual (UnmanagedType.LPArray, attr.Value, "#D2");
- Assert.AreEqual (UnmanagedType.LPStr, attr.ArraySubType, "#D3");
- attrs = typeof (Class2).GetField ("f2").GetCustomAttributes (true);
- Assert.AreEqual (1, attrs.Length, "#E1");
- attr = (MarshalAsAttribute) attrs [0];
- Assert.AreEqual (UnmanagedType.ByValTStr, attr.Value, "#E2");
- Assert.AreEqual (100, attr.SizeConst, "#E3");
- #if FEATURE_COMINTEROP
- attrs = typeof (Class2).GetField ("f3").GetCustomAttributes (true);
- Assert.AreEqual (1, attrs.Length, "#F1");
- attr = (MarshalAsAttribute) attrs [0];
- Assert.AreEqual (UnmanagedType.CustomMarshaler, attr.Value, "#F2");
- Assert.AreEqual ("5", attr.MarshalCookie, "#F3");
- Assert.AreEqual (typeof (Marshal1), Type.GetType (attr.MarshalType), "#F4");
- attrs = typeof (Class3).GetField ("f3").GetCustomAttributes (false);
- Assert.AreEqual (1, attrs.Length, "#G1");
- attr = (MarshalAsAttribute) attrs [0];
- Assert.AreEqual (UnmanagedType.CustomMarshaler, attr.Value, "#G2");
- Assert.AreEqual ("5", attr.MarshalCookie, "#G3");
- Assert.AreEqual (typeof (Marshal1), Type.GetType (attr.MarshalType), "#G4");
- attrs = typeof (Class3).GetField ("f3").GetCustomAttributes (true);
- Assert.AreEqual (1, attrs.Length, "#H1");
- attr = (MarshalAsAttribute) attrs [0];
- Assert.AreEqual (UnmanagedType.CustomMarshaler, attr.Value, "#H2");
- Assert.AreEqual ("5", attr.MarshalCookie, "#H3");
- Assert.AreEqual (typeof (Marshal1), Type.GetType (attr.MarshalType), "#H4");
- // bug #82465
- attrs = typeof (Class2).GetField ("f3").GetCustomAttributes (true);
- Assert.AreEqual (1, attrs.Length, "#I1");
- attr = (MarshalAsAttribute) attrs [0];
- Assert.AreEqual (UnmanagedType.CustomMarshaler, attr.Value, "#I2");
- Assert.AreEqual ("5", attr.MarshalCookie, "#I3");
- Assert.AreEqual (typeof (Marshal1), Type.GetType (attr.MarshalType), "#I4");
- #endif
- }
- // Disable "field not used warning", this is intended.
- #pragma warning disable 649
- class Foo {
- public static int static_field;
- public int field;
- }
- #pragma warning restore 649
- [ExpectedException (typeof (ArgumentException))]
- public void GetValueWrongObject ()
- {
- Foo f = new Foo ();
- typeof (Foo).GetField ("field").GetValue (typeof (int));
- }
- public void GetValueWrongObjectStatic ()
- {
- Foo f = new Foo ();
- // This is allowed in MS.NET
- typeof (Foo).GetField ("static_field").GetValue (typeof (int));
- }
- [Test]
- [ExpectedException (typeof (InvalidOperationException))]
- public void GetValueOnRefOnlyAssembly ()
- {
- Assembly assembly = Assembly.ReflectionOnlyLoad (typeof (FieldInfoTest).Assembly.FullName);
- Type t = assembly.GetType (typeof (RefOnlyFieldClass).FullName);
- FieldInfo f = t.GetField ("RefOnlyField", BindingFlags.Static | BindingFlags.NonPublic);
- f.GetValue (null);
- }
-
- [Test]
- [ExpectedException (typeof (InvalidOperationException))]
- public void SetValueOnRefOnlyAssembly ()
- {
- Assembly assembly = Assembly.ReflectionOnlyLoad (typeof (FieldInfoTest).Assembly.FullName);
- Type t = assembly.GetType (typeof (RefOnlyFieldClass).FullName);
- FieldInfo f = t.GetField ("RefOnlyField", BindingFlags.Static | BindingFlags.NonPublic);
- f.SetValue (null, 8);
- }
- const int literal = 42;
- [Test]
- [ExpectedException (typeof (FieldAccessException))]
- public void SetValueOnLiteralField ()
- {
- FieldInfo f = typeof (FieldInfoTest).GetField ("literal", BindingFlags.Static | BindingFlags.NonPublic);
- f.SetValue (null, 0);
- }
- public int? nullable_field;
- public static int? static_nullable_field;
- [Test]
- public void NullableTests ()
- {
- FieldInfoTest t = new FieldInfoTest ();
- FieldInfo fi = typeof (FieldInfoTest).GetField ("nullable_field");
- fi.SetValue (t, 101);
- Assert.AreEqual (101, fi.GetValue (t));
- fi.SetValue (t, null);
- Assert.AreEqual (null, fi.GetValue (t));
- FieldInfo fi2 = typeof (FieldInfoTest).GetField ("static_nullable_field");
- fi2.SetValue (t, 101);
- Assert.AreEqual (101, fi2.GetValue (t));
- fi2.SetValue (t, null);
- Assert.AreEqual (null, fi2.GetValue (t));
- }
-
- [Test]
- public void NonPublicTests ()
- {
- Assembly assembly = Assembly.ReflectionOnlyLoad (typeof (FieldInfoTest).Assembly.FullName);
-
- Type t = assembly.GetType (typeof (NonPublicFieldClass).FullName);
- // try to get non-public field
- FieldInfo fi = t.GetField ("protectedField");
- Assert.IsNull (fi);
- // get it for real
- fi = t.GetField ("protectedField", BindingFlags.NonPublic | BindingFlags.Instance);
- Assert.IsNotNull (fi);
- }
- [Test]
- public void GetRawDefaultValue ()
- {
- Assert.AreEqual (5, typeof (FieldInfoTest).GetField ("int_field").GetRawConstantValue ());
- Assert.AreEqual (Int64.MaxValue, typeof (FieldInfoTest).GetField ("long_field").GetRawConstantValue ());
- Assert.AreEqual (2, typeof (FieldInfoTest).GetField ("int_enum_field").GetRawConstantValue ());
- Assert.AreEqual (typeof (int), typeof (FieldInfoTest).GetField ("int_enum_field").GetRawConstantValue ().GetType ());
- Assert.AreEqual (2, typeof (FieldInfoTest).GetField ("long_enum_field").GetRawConstantValue ());
- Assert.AreEqual (typeof (long), typeof (FieldInfoTest).GetField ("long_enum_field").GetRawConstantValue ().GetType ());
- Assert.AreEqual ("Hello", typeof (FieldInfoTest).GetField ("string_field").GetRawConstantValue ());
- Assert.AreEqual (null, typeof (FieldInfoTest).GetField ("object_field").GetRawConstantValue ());
- }
- [Test]
- [ExpectedException (typeof (InvalidOperationException))]
- public void GetRawDefaultValueNoDefault ()
- {
- typeof (FieldInfoTest).GetField ("non_const_field").GetRawConstantValue ();
- }
- [Test]
- [ExpectedException (typeof (InvalidOperationException))]
- public void GetValueOpenGeneric ()
- {
- typeof(Foo<>).GetField ("field").GetValue (null);
- }
- [Test]
- [ExpectedException (typeof (InvalidOperationException))]
- public void SetValueOpenGeneric ()
- {
- typeof(Foo<>).GetField ("field").SetValue (null, 0);
- }
- [Test]
- public void GetValueOnConstantOfOpenGeneric ()
- {
- Assert.AreEqual (10, typeof(Foo<>).GetField ("constant").GetValue (null), "#1");
- Assert.AreEqual ("waa", typeof(Foo<>).GetField ("sconstant").GetValue (null), "#2");
- Assert.AreEqual (IntEnum.Third, typeof(Foo<>).GetField ("econstant").GetValue (null), "#3");
- }
- public static unsafe void* ip;
- [Test]
- public unsafe void GetSetValuePointers ()
- {
- Pointer p0 = (Pointer)typeof (FieldInfoTest).GetField ("ip").GetValue (null);
- int *p0i = (int*)Pointer.Unbox (p0);
- Assert.AreEqual (IntPtr.Zero, new IntPtr (p0i));
- int i = 5;
- void *p = &i;
- typeof (FieldInfoTest).GetField ("ip").SetValue (null, (IntPtr)p);
- Pointer p2 = (Pointer)typeof (FieldInfoTest).GetField ("ip").GetValue (null);
- int *pi = (int*)Pointer.Unbox (p2);
- Assert.AreEqual (5, *pi);
- typeof (FieldInfoTest).GetField ("ip").SetValue (null, (UIntPtr)p);
- p2 = (Pointer)typeof (FieldInfoTest).GetField ("ip").GetValue (null);
- pi = (int*)Pointer.Unbox (p2);
- Assert.AreEqual (5, *pi);
- }
- [Test]
- public void SetValuePrimitiveConversions ()
- {
- FieldInfo field;
- var instance = new FieldInvokeMatrix ();
- var fh = typeof (FieldInvokeMatrix);
- field = fh.GetField ("field_Byte");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Byte);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- Throws (field, instance, Char.MaxValue);
- Throws (field, instance, Int16.MaxValue);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Byte);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_SByte");
- Throws (field, instance, Byte.MaxValue);
- field.SetValue (instance, SByte.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_SByte);
- Throws (field, instance, true);
- Throws (field, instance, Char.MaxValue);
- Throws (field, instance, Int16.MaxValue);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- Throws (field, instance, ByteEnum.MaxValue);
- field.SetValue (instance, SByteEnum.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_SByte);
- Throws (field, instance, Int16Enum.MaxValue);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_Boolean");
- Throws (field, instance, Byte.MaxValue);
- Throws (field, instance, SByte.MaxValue);
- field.SetValue (instance, true);
- Assert.AreEqual (true, instance.field_Boolean);
- Throws (field, instance, Char.MaxValue);
- Throws (field, instance, Int16.MaxValue);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- Throws (field, instance, ByteEnum.MaxValue);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_Char");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Char);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, instance.field_Char);
- Throws (field, instance, Int16.MaxValue);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_Char);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Char);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_Char);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_Int16");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Int16);
- field.SetValue (instance, SByte.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_Int16);
- Throws (field, instance, true);
- Throws (field, instance, Char.MaxValue);
- field.SetValue (instance, Int16.MaxValue);
- Assert.AreEqual (Int16.MaxValue, instance.field_Int16);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Int16);
- field.SetValue (instance, SByteEnum.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_Int16);
- field.SetValue (instance, Int16Enum.MaxValue);
- Assert.AreEqual (Int16.MaxValue, instance.field_Int16);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_UInt16");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_UInt16);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, instance.field_UInt16);
- Throws (field, instance, Int16.MaxValue);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_UInt16);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_UInt16);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_UInt16);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_Int32");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Int32);
- field.SetValue (instance, SByte.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_Int32);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, instance.field_Int32);
- field.SetValue (instance, Int16.MaxValue);
- Assert.AreEqual (Int16.MaxValue, instance.field_Int32);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_Int32);
- field.SetValue (instance, Int32.MaxValue);
- Assert.AreEqual (Int32.MaxValue, instance.field_Int32);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Int32);
- field.SetValue (instance, SByteEnum.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_Int32);
- field.SetValue (instance, Int16Enum.MaxValue);
- Assert.AreEqual (Int16.MaxValue, instance.field_Int32);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_Int32);
- field.SetValue (instance, Int32Enum.MaxValue);
- Assert.AreEqual (Int32.MaxValue, instance.field_Int32);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_UInt32");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_UInt32);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, instance.field_UInt32);
- Throws (field, instance, Int16.MaxValue);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_UInt32);
- Throws (field, instance, Int32.MaxValue);
- field.SetValue (instance, UInt32.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, instance.field_UInt32);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_UInt32);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_UInt32);
- Throws (field, instance, Int32Enum.MaxValue);
- field.SetValue (instance, UInt32Enum.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, instance.field_UInt32);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_Int64");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Int64);
- field.SetValue (instance, SByte.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_Int64);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, instance.field_Int64);
- field.SetValue (instance, Int16.MaxValue);
- Assert.AreEqual (Int16.MaxValue, instance.field_Int64);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_Int64);
- field.SetValue (instance, Int32.MaxValue);
- Assert.AreEqual (Int32.MaxValue, instance.field_Int64);
- field.SetValue (instance, UInt32.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, instance.field_Int64);
- field.SetValue (instance, Int64.MaxValue);
- Assert.AreEqual (Int64.MaxValue, instance.field_Int64);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Int64);
- field.SetValue (instance, SByteEnum.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_Int64);
- field.SetValue (instance, Int16Enum.MaxValue);
- Assert.AreEqual (Int16.MaxValue, instance.field_Int64);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_Int64);
- field.SetValue (instance, Int32Enum.MaxValue);
- Assert.AreEqual (Int32.MaxValue, instance.field_Int64);
- field.SetValue (instance, UInt32Enum.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, instance.field_Int64);
- field.SetValue (instance, Int64Enum.MaxValue);
- Assert.AreEqual (Int64.MaxValue, instance.field_Int64);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_UInt64");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_UInt64);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, instance.field_UInt64);
- Throws (field, instance, Int16.MaxValue);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_UInt64);
- Throws (field, instance, Int32.MaxValue);
- field.SetValue (instance, UInt32.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, instance.field_UInt64);
- Throws (field, instance, Int64.MaxValue);
- field.SetValue (instance, UInt64.MaxValue);
- Assert.AreEqual (UInt64.MaxValue, instance.field_UInt64);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_UInt64);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_UInt64);
- Throws (field, instance, Int32Enum.MaxValue);
- field.SetValue (instance, UInt32Enum.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, instance.field_UInt64);
- Throws (field, instance, Int64Enum.MaxValue);
- field.SetValue (instance, UInt64Enum.MaxValue);
- Assert.AreEqual (UInt64.MaxValue, instance.field_UInt64);
- field = fh.GetField ("field_Single");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Single);
- field.SetValue (instance, SByte.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_Single);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual ((Single) Char.MaxValue, instance.field_Single);
- field.SetValue (instance, Int16.MaxValue);
- Assert.AreEqual (Int16.MaxValue, instance.field_Single);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_Single);
- field.SetValue (instance, Int32.MaxValue);
- Assert.AreEqual ((Single)Int32.MaxValue, instance.field_Single);
- field.SetValue (instance, UInt32.MaxValue);
- Assert.AreEqual ((Single) UInt32.MaxValue, instance.field_Single);
- field.SetValue (instance, Int64.MaxValue);
- Assert.AreEqual (Int64.MaxValue, instance.field_Single);
- field.SetValue (instance, UInt64.MaxValue);
- Assert.AreEqual (UInt64.MaxValue, instance.field_Single);
- field.SetValue (instance, Single.MaxValue);
- Assert.AreEqual (Single.MaxValue, instance.field_Single);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Single);
- field.SetValue (instance, SByteEnum.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_Single);
- field.SetValue (instance, Int16Enum.MaxValue);
- Assert.AreEqual (Int16.MaxValue, instance.field_Single);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_Single);
- field.SetValue (instance, Int32Enum.MaxValue);
- Assert.AreEqual ((Single) Int32.MaxValue, instance.field_Single);
- field.SetValue (instance, UInt32Enum.MaxValue);
- Assert.AreEqual ((Single) UInt32.MaxValue, instance.field_Single);
- field.SetValue (instance, Int64Enum.MaxValue);
- Assert.AreEqual (Int64.MaxValue, instance.field_Single);
- field.SetValue (instance, UInt64Enum.MaxValue);
- Assert.AreEqual (UInt64.MaxValue, instance.field_Single);
- field = fh.GetField ("field_Double");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Double);
- field.SetValue (instance, SByte.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_Double);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual ((Double) Char.MaxValue, instance.field_Double);
- field.SetValue (instance, Int16.MaxValue);
- Assert.AreEqual (Int16.MaxValue, instance.field_Double);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_Double);
- field.SetValue (instance, Int32.MaxValue);
- Assert.AreEqual (Int32.MaxValue, instance.field_Double);
- field.SetValue (instance, UInt32.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, instance.field_Double);
- field.SetValue (instance, Int64.MaxValue);
- Assert.AreEqual (Int64.MaxValue, instance.field_Double);
- field.SetValue (instance, UInt64.MaxValue);
- Assert.AreEqual (UInt64.MaxValue, instance.field_Double);
- field.SetValue (instance, Single.MaxValue);
- Assert.AreEqual (Single.MaxValue, instance.field_Double);
- field.SetValue (instance, Double.MaxValue);
- Assert.AreEqual (Double.MaxValue, instance.field_Double);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (Byte.MaxValue, instance.field_Double);
- field.SetValue (instance, SByteEnum.MaxValue);
- Assert.AreEqual (SByte.MaxValue, instance.field_Double);
- field.SetValue (instance, Int16Enum.MaxValue);
- Assert.AreEqual (Int16.MaxValue, instance.field_Double);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, instance.field_Double);
- field.SetValue (instance, Int32Enum.MaxValue);
- Assert.AreEqual (Int32.MaxValue, instance.field_Double);
- field.SetValue (instance, UInt32Enum.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, instance.field_Double);
- field.SetValue (instance, Int64Enum.MaxValue);
- Assert.AreEqual (Int64.MaxValue, instance.field_Double);
- field.SetValue (instance, UInt64Enum.MaxValue);
- Assert.AreEqual (UInt64.MaxValue, instance.field_Double);
- field = fh.GetField ("field_IntPtr");
- Throws (field, instance, Byte.MaxValue);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- Throws (field, instance, Char.MaxValue);
- Throws (field, instance, Int16.MaxValue);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- field.SetValue (instance, IntPtr.Zero);
- Assert.AreEqual (IntPtr.Zero, instance.field_IntPtr);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- Throws (field, instance, ByteEnum.MaxValue);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_UIntPtr");
- Throws (field, instance, Byte.MaxValue);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- Throws (field, instance, Char.MaxValue);
- Throws (field, instance, Int16.MaxValue);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- field.SetValue (instance, UIntPtr.Zero);
- Assert.AreEqual (UIntPtr.Zero, instance.field_UIntPtr);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- Throws (field, instance, ByteEnum.MaxValue);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_Decimal");
- Throws (field, instance, Byte.MaxValue);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- Throws (field, instance, Char.MaxValue);
- Throws (field, instance, Int16.MaxValue);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- field.SetValue (instance, Decimal.MaxValue);
- Assert.AreEqual (Decimal.MaxValue, instance.field_Decimal);
- Throws (field, instance, DateTime.MaxValue);
- Throws (field, instance, ByteEnum.MaxValue);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_DateTime");
- Throws (field, instance, Byte.MaxValue);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- Throws (field, instance, Char.MaxValue);
- Throws (field, instance, Int16.MaxValue);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- field.SetValue (instance, DateTime.MaxValue);
- Assert.AreEqual (DateTime.MaxValue, instance.field_DateTime);
- Throws (field, instance, ByteEnum.MaxValue);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_ByteEnum");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (ByteEnum.MaxValue, instance.field_ByteEnum);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- Throws (field, instance, Char.MaxValue);
- Throws (field, instance, Int16.MaxValue);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (ByteEnum.MaxValue, instance.field_ByteEnum);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_SByteEnum");
- Throws (field, instance, Byte.MaxValue);
- field.SetValue (instance, SByte.MaxValue);
- Assert.AreEqual (SByteEnum.MaxValue, instance.field_SByteEnum);
- Throws (field, instance, true);
- Throws (field, instance, Char.MaxValue);
- Throws (field, instance, Int16.MaxValue);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- Throws (field, instance, ByteEnum.MaxValue);
- field.SetValue (instance, SByteEnum.MaxValue);
- Assert.AreEqual (SByteEnum.MaxValue, instance.field_SByteEnum);
- Throws (field, instance, Int16Enum.MaxValue);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_Int16Enum");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, (byte) instance.field_Int16Enum);
- field.SetValue (instance, SByte.MaxValue);
- Assert.AreEqual (SByte.MaxValue, (sbyte) instance.field_Int16Enum);
- Throws (field, instance, true);
- Throws (field, instance, Char.MaxValue);
- field.SetValue (instance, Int16.MaxValue);
- Assert.AreEqual (Int16Enum.MaxValue, instance.field_Int16Enum);
- Throws (field, instance, UInt16.MaxValue);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (ByteEnum.MaxValue, (ByteEnum) instance.field_Int16Enum);
- field.SetValue (instance, SByteEnum.MaxValue);
- Assert.AreEqual (SByteEnum.MaxValue, (SByteEnum) instance.field_Int16Enum);
- field.SetValue (instance, Int16Enum.MaxValue);
- Assert.AreEqual (Int16Enum.MaxValue, instance.field_Int16Enum);
- Throws (field, instance, UInt16Enum.MaxValue);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_UInt16Enum");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, (byte) instance.field_UInt16Enum);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, (char) instance.field_UInt16Enum);
- Throws (field, instance, Int16.MaxValue);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, (UInt16) instance.field_UInt16Enum);
- Throws (field, instance, Int32.MaxValue);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (ByteEnum.MaxValue, (ByteEnum) instance.field_UInt16Enum);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16Enum.MaxValue, instance.field_UInt16Enum);
- Throws (field, instance, Int32Enum.MaxValue);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_Int32Enum");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, (byte) instance.field_Int32Enum);
- field.SetValue (instance, SByte.MaxValue);
- Assert.AreEqual (SByte.MaxValue, (sbyte) instance.field_Int32Enum);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, (char) instance.field_Int32Enum);
- field.SetValue (instance, Int16.MaxValue);
- Assert.AreEqual (Int16.MaxValue, (Int16) instance.field_Int32Enum);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, (UInt16) instance.field_Int32Enum);
- field.SetValue (instance, Int32.MaxValue);
- Assert.AreEqual (Int32.MaxValue, (Int32) instance.field_Int32Enum);
- Throws (field, instance, UInt32.MaxValue);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (ByteEnum.MaxValue, (ByteEnum) instance.field_Int32Enum);
- field.SetValue (instance, SByteEnum.MaxValue);
- Assert.AreEqual (SByteEnum.MaxValue, (SByteEnum) instance.field_Int32Enum);
- field.SetValue (instance, Int16Enum.MaxValue);
- Assert.AreEqual (Int16Enum.MaxValue, (Int16Enum) instance.field_Int32Enum);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16Enum.MaxValue, (UInt16Enum) instance.field_Int32Enum);
- field.SetValue (instance, Int32Enum.MaxValue);
- Assert.AreEqual (Int32Enum.MaxValue, instance.field_Int32Enum);
- Throws (field, instance, UInt32Enum.MaxValue);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_UInt32Enum");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, (byte) instance.field_UInt32Enum);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, (char) instance.field_UInt32Enum);
- Throws (field, instance, Int16.MaxValue);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, (UInt16) instance.field_UInt32Enum);
- Throws (field, instance, Int32.MaxValue);
- field.SetValue (instance, UInt32.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, (UInt32) instance.field_UInt32Enum);
- Throws (field, instance, Int64.MaxValue);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (ByteEnum.MaxValue, (ByteEnum) instance.field_UInt32Enum);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16Enum.MaxValue, (UInt16Enum) instance.field_UInt32Enum);
- Throws (field, instance, Int32Enum.MaxValue);
- field.SetValue (instance, UInt32Enum.MaxValue);
- Assert.AreEqual (UInt32Enum.MaxValue, instance.field_UInt32Enum);
- Throws (field, instance, Int64Enum.MaxValue);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_Int64Enum");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, (byte) instance.field_Int64Enum);
- field.SetValue (instance, SByte.MaxValue);
- Assert.AreEqual (SByte.MaxValue, (sbyte) instance.field_Int64Enum);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, (char) instance.field_Int64Enum);
- field.SetValue (instance, Int16.MaxValue);
- Assert.AreEqual (Int16.MaxValue, (Int16) instance.field_Int64Enum);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, (UInt16) instance.field_Int64Enum);
- field.SetValue (instance, Int32.MaxValue);
- Assert.AreEqual (Int32.MaxValue, (Int32) instance.field_Int64Enum);
- field.SetValue (instance, UInt32.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, (UInt32) instance.field_Int64Enum);
- field.SetValue (instance, Int64.MaxValue);
- Assert.AreEqual (Int64.MaxValue, (Int64) instance.field_Int64Enum);
- Throws (field, instance, UInt64.MaxValue);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (ByteEnum.MaxValue, (ByteEnum) instance.field_Int64Enum);
- field.SetValue (instance, SByteEnum.MaxValue);
- Assert.AreEqual (SByteEnum.MaxValue, (SByteEnum) instance.field_Int64Enum);
- field.SetValue (instance, Int16Enum.MaxValue);
- Assert.AreEqual (Int16Enum.MaxValue, (Int16Enum) instance.field_Int64Enum);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16Enum.MaxValue, (UInt16Enum) instance.field_Int64Enum);
- field.SetValue (instance, Int32Enum.MaxValue);
- Assert.AreEqual (Int32Enum.MaxValue, (Int32Enum) instance.field_Int64Enum);
- field.SetValue (instance, UInt32Enum.MaxValue);
- Assert.AreEqual (UInt32Enum.MaxValue, (UInt32Enum) instance.field_Int64Enum);
- field.SetValue (instance, Int64Enum.MaxValue);
- Assert.AreEqual (Int64Enum.MaxValue, instance.field_Int64Enum);
- Throws (field, instance, UInt64Enum.MaxValue);
- field = fh.GetField ("field_UInt64Enum");
- field.SetValue (instance, Byte.MaxValue);
- Assert.AreEqual (Byte.MaxValue, (byte) instance.field_UInt64Enum);
- Throws (field, instance, SByte.MaxValue);
- Throws (field, instance, true);
- field.SetValue (instance, Char.MaxValue);
- Assert.AreEqual (Char.MaxValue, (char) instance.field_UInt64Enum);
- Throws (field, instance, Int16.MaxValue);
- field.SetValue (instance, UInt16.MaxValue);
- Assert.AreEqual (UInt16.MaxValue, (UInt16) instance.field_UInt64Enum);
- Throws (field, instance, Int32.MaxValue);
- field.SetValue (instance, UInt32.MaxValue);
- Assert.AreEqual (UInt32.MaxValue, (UInt32) instance.field_UInt64Enum);
- Throws (field, instance, Int64.MaxValue);
- field.SetValue (instance, UInt64.MaxValue);
- Assert.AreEqual (UInt64.MaxValue, (UInt64) instance.field_UInt64Enum);
- Throws (field, instance, Single.MaxValue);
- Throws (field, instance, Double.MaxValue);
- Throws (field, instance, IntPtr.Zero);
- Throws (field, instance, UIntPtr.Zero);
- Throws (field, instance, Decimal.MaxValue);
- Throws (field, instance, DateTime.MaxValue);
- field.SetValue (instance, ByteEnum.MaxValue);
- Assert.AreEqual (ByteEnum.MaxValue, (ByteEnum) instance.field_UInt64Enum);
- Throws (field, instance, SByteEnum.MaxValue);
- Throws (field, instance, Int16Enum.MaxValue);
- field.SetValue (instance, UInt16Enum.MaxValue);
- Assert.AreEqual (UInt16Enum.MaxValue, (UInt16Enum) instance.field_UInt64Enum);
- Throws (field, instance, Int32Enum.MaxValue);
- field.SetValue (instance, UInt32Enum.MaxValue);
- Assert.AreEqual (UInt32Enum.MaxValue, (UInt32Enum) instance.field_UInt64Enum);
- Throws (field, instance, Int64Enum.MaxValue);
- field.SetValue (instance, UInt64Enum.MaxValue);
- Assert.AreEqual (UInt64Enum.MaxValue, instance.field_UInt64Enum);
- }
- static void Throws (FieldInfo field, object instance, object value)
- {
- try {
- field.SetValue (instance, value);
- Assert.Fail ("ArgumentException expected");
- } catch (ArgumentException ex) {
- }
- }
- public object[] ObjectArrayField;
- [Test]
- public void TestSetValueArray ()
- {
- var field = typeof (FieldInfoTest).GetField ("ObjectArrayField");
- var instance = new FieldInfoTest ();
- field.SetValue (instance, new string[] { "3" });
- field.SetValue (instance, null);
- Throws (field, instance, new int[] { 3 });
- }
- struct TestFields {
- public int MaxValue;
- public string str;
- }
- [Test]
- public void SetValueDirect ()
- {
- TestFields fields = new TestFields { MaxValue = 1234, str = "A" };
- FieldInfo info = fields.GetType ().GetField ("MaxValue");
- TypedReference reference = __makeref(fields);
- info.SetValueDirect (reference, 4096);
- Assert.AreEqual (4096, fields.MaxValue);
- info = fields.GetType ().GetField ("str");
- reference = __makeref(fields);
- info.SetValueDirect (reference, "B");
- Assert.AreEqual ("B", fields.str);
- }
- [Test]
- public void GetValueContextBoundObject ()
- {
- var instance = new CBOTest ();
- var field1 = typeof (CBOTest).GetField ("d1");
- var d1 = field1.GetValue (instance);
- Assert.AreEqual ((double)d1, 14.0, "d1");
- var field2 = typeof (CBOTest).GetField ("d2");
- var d2 = field2.GetValue (instance);
- Assert.AreEqual ((double)d2, -20, "d2");
- var field3 = typeof (CBOTest).GetField ("s1");
- var s1 = field3.GetValue (instance);
- Assert.AreEqual (s1, "abcd", "s1");
- var field4 = typeof (CBOTest).GetField ("s2");
- var s2 = field4.GetValue (instance);
- Assert.AreEqual (s2, "hijkl", "s2");
- }
- [Test]
- public void SetValueContextBoundObject ()
- {
- var instance = new CBOTest ();
- var field1 = typeof (CBOTest).GetField ("d1");
- field1.SetValue (instance, 90.3);
- var d1 = field1.GetValue (instance);
- Assert.AreEqual ((double)d1, 90.3, "d1");
- var field2 = typeof (CBOTest).GetField ("d2");
- field2.SetValue (instance, 1);
- var d2 = field2.GetValue (instance);
- Assert.AreEqual ((double)d2, 1, "d2");
- var field3 = typeof (CBOTest).GetField ("s1");
- field3.SetValue (instance, "//////");
- var s1 = field3.GetValue (instance);
- Assert.AreEqual (s1, "//////", "s1");
- var field4 = typeof (CBOTest).GetField ("s2");
- field4.SetValue (instance, "This is a string");
- var s2 = field4.GetValue (instance);
- Assert.AreEqual (s2, "This is a string", "s2");
- }
- class CBOTest : ContextBoundObject {
- public double d1 = 14.0;
- public double d2 = -20.0;
- public string s1 = "abcd";
- public string s2 = "hijkl";
- }
- public IntEnum PPP;
- public class Foo<T>
- {
- /*
- The whole point of this field is to make sure we don't create the vtable layout
- when loading the value of constants for Foo<>. See bug #594942.
- */
- public T dummy;
- public static int field;
- public const int constant = 10;
- public const string sconstant = "waa";
- public const IntEnum econstant = IntEnum.Third;
- }
- public enum IntEnum {
- First = 1,
- Second = 2,
- Third = 3
- }
- public enum LongEnum : long {
- First = 1,
- Second = 2,
- Third = 3
- }
- public const int int_field = 5;
- public const long long_field = Int64.MaxValue;
- public const IntEnum int_enum_field = IntEnum.Second;
- public const LongEnum long_enum_field = LongEnum.Second;
- public const string string_field = "Hello";
- public const FieldInfoTest object_field = null;
- public int non_const_field;
- }
- // We do not refernece the field, that is expected
- #pragma warning disable 169
- // Helper classes
- class RefOnlyFieldClass
- {
- // Helper property
- static int RefOnlyField;
- }
- #pragma warning restore 169
-
- class NonPublicFieldClass
- {
- protected int protectedField;
- public void Dummy ()
- {
- protectedField = 1;
- }
- }
- public class FieldInfoTest<T>
- {
- public T TestField;
- }
- }
|