@Test
public void testBuildFunctionConstantMultipleValueReturn() throws Exception {

    AbiDefinition functionDefinition = new AbiDefinition(
            true,
            Arrays.asList(
                    new AbiDefinition.NamedType("param1", "uint8"),
                    new AbiDefinition.NamedType("param2", "uint32")),
            "functionName",
            Arrays.asList(
                    new AbiDefinition.NamedType("result1", "int8"),
                    new AbiDefinition.NamedType("result2", "int32")),
            "type",
            false);
    MethodSpec methodSpec = solidityFunctionWrapper.buildFunction(functionDefinition);
    //CHECKSTYLE:OFF
    String expected = "public org.web3j.protocol.core.RemoteCall<org.web3j.tuples.generated.Tuple2<java.math.BigInteger, java.math.BigInteger>> functionName(java.math.BigInteger param1, java.math.BigInteger param2) {\n"
            + "  final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(\"functionName\", \n"
            + "      java.util.Arrays.<org.web3j.abi.datatypes.Type>asList(new org.web3j.abi.datatypes.generated.Uint8(param1), \n"
            + "      new org.web3j.abi.datatypes.generated.Uint32(param2)), \n"
            + "      java.util.Arrays.<org.web3j.abi.TypeReference<?>>asList(new org.web3j.abi.TypeReference<org.web3j.abi.datatypes.generated.Int8>() {}, new org.web3j.abi.TypeReference<org.web3j.abi.datatypes.generated.Int32>() {}));\n"
            + "  return new org.web3j.protocol.core.RemoteCall<org.web3j.tuples.generated.Tuple2<java.math.BigInteger, java.math.BigInteger>>(\n"
            + "      new java.util.concurrent.Callable<org.web3j.tuples.generated.Tuple2<java.math.BigInteger, java.math.BigInteger>>() {\n"
            + "        @java.lang.Override\n"
            + "        public org.web3j.tuples.generated.Tuple2<java.math.BigInteger, java.math.BigInteger> call() throws java.lang.Exception {\n"
            + "          java.util.List<org.web3j.abi.datatypes.Type> results = executeCallMultipleValueReturn(function);\n"
            + "          return new org.web3j.tuples.generated.Tuple2<java.math.BigInteger, java.math.BigInteger>(\n"
            + "              (java.math.BigInteger) results.get(0).getValue(), \n"
            + "              (java.math.BigInteger) results.get(1).getValue());\n"
            + "        }\n"
            + "      });\n"
            + "}\n";
    //CHECKSTYLE:ON
    assertThat(methodSpec.toString(), is(expected));
}