SmartContract { public TransactionBuilder invokeFunction(String function, ContractParameter... contractParameters) { if (Strings.isEmpty(function)) { throw new IllegalArgumentException( "The invocation function must not be null or empty."); } ScriptBuilder b = new ScriptBuilder() .contractCall(scriptHash, function, Arrays.asList(contractParameters)); return new TransactionBuilder(neow).script(b.toArray()); } SmartContract(ScriptHash scriptHash, Neow3j neow);  SmartContract(File nef, File manifestFile, Neow3j neow);  SmartContract(NefFile nefFile, ContractManifest manifest, Neow3j neow); TransactionBuilder invokeFunction(String function,
            ContractParameter... contractParameters); String callFuncReturningString(String function, ContractParameter... params); BigInteger callFuncReturningInt(String function, ContractParameter... params); NeoInvokeFunction callInvokeFunction(String function, Signer... signers); NeoInvokeFunction callInvokeFunction(String function, List<ContractParameter> params,
            Signer... signers); ScriptHash getScriptHash(); NefFile getNefFile(); ContractManifest getManifest(); TransactionBuilder deploy();  }
@Test public void invokeWithNullString() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage(new StringContains("null")); new SmartContract(NEO_SCRIPT_HASH, this.neow).invokeFunction(null); }
@Test public void invokeWithEmptyString() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage(new StringContains("empty")); new SmartContract(NEO_SCRIPT_HASH, this.neow).invokeFunction(""); }