protected static PropValue InitQ(TestAccessLayer layer, PropertyInfo prop)
 {
     return(new PropValue()
     {
         Value = prop.PropertyType.IsValueType ? Activator.CreateInstance(prop.PropertyType) : null
     });
 }
        public void HandlerTest()
        {
            ITestLayer      layer = TestAccessLayer.Create <ITestLayer>();
            TestAccessLayer tal   = layer as TestAccessLayer;

            Assert.IsNotNull(tal);

            // A tests
            layer.A();
            layer.A(42);
            layer.A("A", "B", "C");

            // B tests
            Assert.AreEqual(42, layer.B(42));
            Assert.AreEqual(DayOfWeek.Wednesday.ToString(), layer.B(DayOfWeek.Wednesday));
            Assert.AreEqual(Guid.Empty.ToString(), layer.B(Guid.Empty));
            Assert.AreEqual("B", layer.B("B"));

            // C tests
            Assert.AreEqual(0, layer.C());
            Assert.AreEqual(4, layer.C(1, 2));
            Assert.AreEqual(4, layer.C(1));

            // P tests
            Assert.AreEqual(0, layer.P1);
            layer.P1 = 42;
            Assert.AreEqual(42, layer.P1);
            Assert.IsNull(layer.P2);
            layer.P2 = "42";
            Assert.AreEqual("42", layer.P2);
            Assert.IsNull(layer.P3);
            layer.P3 = Guid.Empty;
            Assert.AreEqual(Guid.Empty, layer.P3);

            // Q tests
            Assert.AreEqual(0, layer.Q);
            layer.Q = 21;
            Assert.AreEqual(21, layer.Q);

            // Backing field tests with get inspector
            Assert.IsNull(tal.LastGetProperty);
            Assert.IsNull(layer.R);
            Assert.IsNotNull(tal.LastGetProperty);
            Assert.AreEqual("R", tal.LastGetProperty.Item1.Name);

            layer.R = Guid.Empty;
            Assert.AreEqual(Guid.Empty, layer.R);
            Assert.AreEqual(0, layer.R2);
            layer.R3 = 42;
            Assert.IsNull(layer.R4);
            layer.R4 = "42";
            Assert.AreEqual("42", layer.R4);
            Assert.AreEqual("R4", tal.LastGetProperty.Item1.Name);
            Assert.AreEqual("42", tal.LastGetProperty.Item2);

            Assert.IsFalse(layer.IsDisposed);
            layer.Dispose();
            Assert.IsTrue(layer.IsDisposed);
        }
        protected static object ExecB(TestAccessLayer layer, MethodInfo state, object[] parameters)
        {
            if (state.ReturnType == typeof(string))
            {
                return(parameters[0].ToString());
            }

            return(parameters[0]);
        }
 protected static T GetQ <T>(TestAccessLayer layer, PropValue state)
 {
     return((T)state.Value);
 }
 protected static void SetQ <T>(TestAccessLayer layer, PropValue state, T value)
 {
     state.Value = value;
 }
 protected static object GetP(TestAccessLayer layer, PropValue state)
 {
     return(state.Value);
 }
 protected static void SetP(TestAccessLayer layer, PropValue state, object value)
 {
     state.Value = value;
 }
 protected static MethodInfo InitB(TestAccessLayer layer, MethodInfo m)
 {
     return(m);
 }
 protected static object ExecA(TestAccessLayer layer, object state, object[] parameters)
 {
     return(null);
 }
 protected static object InitA(TestAccessLayer layer, MethodInfo m)
 {
     return(null);
 }
 protected static void GenericGetInspector <T>(TestAccessLayer layer, PropertyInfo property, T value)
 {
     Assert.AreEqual(typeof(T), property.PropertyType);
 }
 public static void GetInspector(TestAccessLayer layer, PropertyInfo property, object value)
 {
     layer.LastGetProperty = Tuple.Create(property, value);
 }