public void call_method_on_inner_default_class_pass_and_return_valuetype_as_generic_type()
        {
            //Arrange
            var getTracerParameters    = DefaultGetTracerImplementation();
            var finishTracerParameters = DefaultFinishTracerImplementation();
            var intParameter           = 33;
            var innerClass             = new OuterGenericClass <int> .InnerDefaultClass();

            //Act
            var returnedValue = innerClass.InnerClassMethodReturnsIt(intParameter);

            //Assert
            ValidateTracers(getTracerParameters, finishTracerParameters, "InnerClassMethodReturnsIt", "!0", innerClass, new object[] { intParameter }, intParameter, null, "NewRelic.Agent.Tests.ProfiledMethods.OuterGenericClass`1+InnerDefaultClass");
        }
        public void call_generic_method_on_inner_default_class_of_generic_class_and_return_string_type()
        {
            //Arrange
            var getTracerParameters    = DefaultGetTracerImplementation();
            var finishTracerParameters = DefaultFinishTracerImplementation();
            var stringParameter        = "yoAdrian!";
            var innerClass             = new OuterGenericClass <int> .InnerDefaultClass();

            //Act
            var returnedValue = innerClass.InnerGenericMethodReturnsIt <String>(stringParameter);

            //Assert
            ValidateTracers(getTracerParameters, finishTracerParameters, "InnerGenericMethodReturnsIt", "!!0", innerClass, new object[] { stringParameter }, stringParameter, null, "NewRelic.Agent.Tests.ProfiledMethods.OuterGenericClass`1+InnerDefaultClass");
        }
        public void call_method_on_inner_default_class_passing_referencetype_as_generic_type()
        {
            //Arrange
            var getTracerParameters    = DefaultGetTracerImplementation();
            var finishTracerParameters = DefaultFinishTracerImplementation();
            var referenceTypeParameter = new DefaultClass();
            var innerClass             = new OuterGenericClass <DefaultClass> .InnerDefaultClass();

            //Act
            innerClass.InnerClassMethodWithClassGenericParam(referenceTypeParameter);

            //Assert
            ValidateTracers(getTracerParameters, finishTracerParameters, "InnerClassMethodWithClassGenericParam", "!0", innerClass, new object[] { referenceTypeParameter }, null, null, "NewRelic.Agent.Tests.ProfiledMethods.OuterGenericClass`1+InnerDefaultClass");
        }
        public void call_generic_method_on_inner_default_class_of_generic_class_value_type()
        {
            //Arrange
            var getTracerParameters    = DefaultGetTracerImplementation();
            var finishTracerParameters = DefaultFinishTracerImplementation();
            var intParameter           = 33;
            var innerClass             = new OuterGenericClass <int> .InnerDefaultClass();

            //Act
            innerClass.InnerGenericMethod <int>(intParameter);

            //Assert
            ValidateTracers(getTracerParameters, finishTracerParameters, "InnerGenericMethod", "!!0", innerClass, new object[] { intParameter }, null, null, "NewRelic.Agent.Tests.ProfiledMethods.OuterGenericClass`1+InnerDefaultClass");
        }