public void ShouldCastTypeWhichIsSubclassOfAnotherType()
        {
            // Arrange
            var castFlag = CastFlag.Implicit;
            var testCase = new CompilerConversionTestCase(typeof(DerivedOperators), typeof(Operators), castFlag);
            var value    = CastTestRunner.GenerateValueForType(testCase.SourceType);
            var generatedTestSuccessful = CastTestRunner.CastValueWithGeneratedCode(value, testCase.SourceType, testCase.TargetType, castFlag);

            // Act
            var castResult = TypeHelper.CastTo(value, testCase.TargetType);

            // Assert
            var isSuccessful = CastTestRunner.AreEqual(this.testOutputHelper, testCase.SourceType, testCase.TargetType, generatedTestSuccessful, castResult, castFlag);

            isSuccessful.Should().BeTrue();
        }
        public void ShouldNotCastTypeWhichImplementsAGenericInterfaceWithNoGenericTypeArgumentsDefined()
        {
            // Arrange
            var castFlag = CastFlag.Implicit;
            var testCase = new CompilerConversionTestCase(typeof(Operators), typeof(IGenericOperators <>), castFlag);
            var value    = CastTestRunner.GenerateValueForType(testCase.SourceType);
            var generatedTestSuccessful = CastTestRunner.CastValueWithGeneratedCode(value, testCase.SourceType, testCase.TargetType, castFlag);

            // Act
            var castResult = TypeHelper.CastTo(value, testCase.TargetType);

            // Assert
            var isSuccessful = CastTestRunner.AreEqual(this.testOutputHelper, testCase.SourceType, testCase.TargetType, generatedTestSuccessful, castResult, castFlag);

            isSuccessful.Should().BeTrue();
        }