public void GetImmediateTypeFromObject_Throws()
        {
            object testObject = null;

            // ReSharper disable once ReturnValueOfPureMethodIsNotUsed
            // ReSharper disable once AssignNullToNotNullAttribute
            Assert.Throws <ArgumentNullException>(() => ImmediateReflectionExtensions.GetImmediateType(testObject));
        }
        public void GetImmediateTypeFromObject()
        {
            object        testObject1   = new PublicValueTypeTestClass();
            ImmediateType immediateType = ImmediateReflectionExtensions.GetImmediateType(testObject1);

            Assert.AreEqual(typeof(PublicValueTypeTestClass), immediateType.Type);

            PublicValueTypeTestClass testObject2 = new PublicValueTypeTestClass();

            immediateType = ImmediateReflectionExtensions.GetImmediateType(testObject2);
            Assert.AreEqual(typeof(PublicValueTypeTestClass), immediateType.Type);

            TestStruct testObject3 = new TestStruct();

            immediateType = ImmediateReflectionExtensions.GetImmediateType(testObject3);
            Assert.AreEqual(typeof(TestStruct), immediateType.Type);

            int testObject4 = 12;

            immediateType = ImmediateReflectionExtensions.GetImmediateType(testObject4);
            Assert.AreEqual(typeof(int), immediateType.Type);
        }