package org.web3j.console;

import java.io.File;

import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.web3j.TempFileProvider;
import org.web3j.utils.Strings;

/**
 * Test Java wrapper source code generator for Solidity ABI format.
 * 
 * @author lhdeng
 *
 */
public class RunnerTest extends TempFileProvider {
	private Logger logger = LoggerFactory.getLogger(RunnerTest.class);
	private String bin = "contract/HumanStandardToken.bin";
	private String abi = "contract/HumanStandardToken.abi";

	@Test
	public void generateJavaCode() {
		String binPath = RunnerTest.class.getClassLoader().getResource(bin).getPath();
		String abiPath = RunnerTest.class.getClassLoader().getResource(abi).getPath();

		String outputPath = tempDirPath;
		// String outputPath = System.getProperty("user.dir").replace("console", "core") + "/src/test/java/";
		String packageName = "com.platon.sdk.contracts";

		String[] params = { "solidity", "generate", binPath, abiPath, "-o", outputPath, "-p", packageName };
		try {
			Runner.main(params);
		} catch (Exception e) {
			logger.error("Failed to generate Java code: " + e.getMessage(), e);
		}

		String sourceFile = tempDirPath + File.separator + packageName.replace('.', File.separatorChar) + File.separator
				+ Strings.capitaliseFirstLetter("HumanStandardToken") + ".java";

		boolean condition = new File(sourceFile).exists();

		Assert.assertTrue("Java wrapper source code generator for Solidity ABI format error.", condition);
	}

}