public void TransferToAccountName() { var owner = KeyPair.Generate(); var simulator = new ChainSimulator(owner, 1234); var nexus = simulator.Nexus; var symbol = Nexus.FuelTokenSymbol; Func <KeyPair, string, bool> registerName = (keypair, name) => { bool result = true; try { simulator.BeginBlock(); var tx = simulator.GenerateAccountRegistration(keypair, name); var lastBlock = simulator.EndBlock().FirstOrDefault(); if (lastBlock != null) { Assert.IsTrue(tx != null); var evts = lastBlock.GetEventsForTransaction(tx.Hash); Assert.IsTrue(evts.Any(x => x.Kind == Blockchain.Contracts.EventKind.AddressRegister)); } } catch (Exception) { result = false; } return(result); }; var targetName = "hello"; var testUser = KeyPair.Generate(); var token = nexus.GetTokenInfo(symbol); var amount = UnitConversion.ToBigInteger(10, token.Decimals); simulator.BeginBlock(); simulator.GenerateTransfer(owner, testUser.Address, nexus.RootChain, symbol, amount); simulator.EndBlock(); Assert.IsTrue(registerName(testUser, targetName)); // Send from Genesis address to test user var transferAmount = 1; var initialFuelBalance = simulator.Nexus.RootChain.GetTokenBalance(symbol, testUser.Address); simulator.BeginBlock(); simulator.GenerateCustomTransaction(owner, () => ScriptUtils.BeginScript().AllowGas(owner.Address, Address.Null, 1, 9999) .CallContract("token", "TransferTokens", owner.Address, targetName, token.Symbol, transferAmount) .SpendGas(owner.Address).EndScript()); simulator.EndBlock(); var finalFuelBalance = simulator.Nexus.RootChain.GetTokenBalance(symbol, testUser.Address); Assert.IsTrue(finalFuelBalance - initialFuelBalance == transferAmount); }
public void AccountRegister() { var owner = KeyPair.Generate(); var simulator = new ChainSimulator(owner, 1234); var nexus = simulator.Nexus; var symbol = Nexus.FuelTokenSymbol; Func <KeyPair, string, bool> registerName = (keypair, name) => { bool result = true; try { simulator.BeginBlock(); var tx = simulator.GenerateAccountRegistration(keypair, name); var lastBlock = simulator.EndBlock().FirstOrDefault(); if (lastBlock != null) { Assert.IsTrue(tx != null); var evts = lastBlock.GetEventsForTransaction(tx.Hash); Assert.IsTrue(evts.Any(x => x.Kind == Blockchain.Contracts.EventKind.AddressRegister)); } } catch (Exception) { result = false; } return(result); }; var testUser = KeyPair.Generate(); var token = nexus.GetTokenInfo(symbol); var amount = UnitConversion.ToBigInteger(10, token.Decimals); // Send from Genesis address to test user simulator.BeginBlock(); simulator.GenerateTransfer(owner, testUser.Address, nexus.RootChain, symbol, amount); simulator.EndBlock(); // verify test user balance var balance = nexus.RootChain.GetTokenBalance(symbol, testUser.Address); Assert.IsTrue(balance == amount); var targetName = "hello"; Assert.IsTrue(targetName == targetName.ToLower()); Assert.IsFalse(registerName(testUser, targetName.Substring(3))); Assert.IsFalse(registerName(testUser, targetName.ToUpper())); Assert.IsFalse(registerName(testUser, targetName + "!")); Assert.IsTrue(registerName(testUser, targetName)); var currentName = nexus.LookUpAddress(testUser.Address); Assert.IsTrue(currentName == targetName); var someAddress = nexus.LookUpName(targetName); Assert.IsTrue(someAddress == testUser.Address); Assert.IsFalse(registerName(testUser, "other")); }