Package com.strobel.expressions

Source Code of com.strobel.expressions.ConvertTests$AncestorClass

/*
* ConvertTests.java
*
* Copyright (c) 2012 Mike Strobel
*
* This source code is subject to terms and conditions of the Apache License, Version 2.0.
* A copy of the license can be found in the License.html file at the root of this distribution.
* By using this source code in any fashion, you are agreeing to be bound by the terms of the
* Apache License, Version 2.0.
*
* You must not remove this notice, or any other, from this software.
*/

package com.strobel.expressions;

import com.strobel.reflection.Type;
import com.strobel.reflection.TypeList;
import com.strobel.reflection.emit.TypeBuilder;
import org.junit.Test;

import java.lang.invoke.MethodHandle;

import static com.strobel.expressions.Expression.*;
import static org.junit.Assert.*;

/**
* @author strobelm
*/
public class ConvertTests extends AbstractExpressionTest {
    @Test
    public void testTypeBuilderConversion() throws Throwable {
        final TypeBuilder<?> derivedClass = new TypeBuilder<>(
            BaseClass.class.getPackage().getName() + ".ConvertTestDerivedClass",
            BaseClass.class.getModifiers(),
            Type.of(BaseClass.class),
            TypeList.empty()
        );

        final LambdaExpression lambda = lambda(
            convert(
                makeNew(derivedClass.defineDefaultConstructor()),
                Type.of(AncestorClass.class)
            )
        );

        final MethodHandle handle = lambda.compileHandle();

        assertEquals(AncestorClass.class, handle.type().returnType());
        assertSame(derivedClass.createType(), Type.of(((AncestorClass)handle.invokeExact()).getClass()));
    }

    static class AncestorClass {}
    static class BaseClass extends AncestorClass {}
}
TOP

Related Classes of com.strobel.expressions.ConvertTests$AncestorClass

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.