Skip to content

Commit

Permalink
add ut test
Browse files Browse the repository at this point in the history
  • Loading branch information
suerlych committed Nov 1, 2024
1 parent bfad3a1 commit a725801
Show file tree
Hide file tree
Showing 3 changed files with 173 additions and 16 deletions.
14 changes: 7 additions & 7 deletions contract/Forest/ForestContract_Tree.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public override Empty AddTreePoints(AddTreePointsInput input)
Assert(input.OpTime != null && input.OpTime > 0, "Invalid param OpTime");
Assert(Context.Sender == input.Address, "Param Address is not Sender");

var requestStr = string.Concat(input.Address, input.Points, input.PointsType, input.OpTime);
var requestStr = string.Concat(input.Address.ToBase58(), input.Points, input.PointsType, input.OpTime);
CheckPointsRequestHash(requestStr, input.RequestHash);

var lastAddTime = State.TreePointsAddTimeMap[input.Address];
Expand All @@ -33,7 +33,7 @@ public override Empty AddTreePoints(AddTreePointsInput input)
treePointsInfo = new TreePointsInfo()
{
Owner = input.Address,
Points = input.PointsType
Points = input.Points
};
}

Expand All @@ -57,15 +57,15 @@ public override Empty ClaimTreePoints(ClaimTreePointsInput input)
AssertContractInitialized();
Assert(input != null, "Invalid param");
Assert(!input.Address.Value.IsNullOrEmpty(), "Invalid param Address");
Assert(input.Points > 0, "Invalid param Points");
Assert(input.Points >= 0, "Invalid param Points");
Assert(!string.IsNullOrEmpty(input.ActivityId), "Invalid param ActivityId");
Assert(!string.IsNullOrEmpty(input.RequestHash), "Invalid param RequestHash");
Assert(input.OpTime != null && input.OpTime > 0, "Invalid param OpTime");
Assert(input.Reward != null && !string.IsNullOrEmpty(input.Reward.Symbol) && input.Reward.Amount > 0, "Param Address is not Sender");
Assert(input.Reward != null && !string.IsNullOrEmpty(input.Reward.Symbol) && input.Reward.Amount > 0, "Invalid param Reward");
Assert(Context.Sender == input.Address, "Param Address is not Sender");

var requestStr = string.Concat(input.Address, input.Points, input.PointsType, input.OpTime);
requestStr = string.Concat(requestStr, input.ActivityId, input.Reward.Symbol, input.Reward.Amount);
var requestStr = string.Concat(input.Address.ToBase58(), input.ActivityId,input.Points, input.OpTime);
requestStr = string.Concat(requestStr, input.Reward.Symbol, input.Reward.Amount);
CheckPointsRequestHash(requestStr, input.RequestHash);

var lastOpTime = State.TreePointsActivityClaimTimeMap[input.Address][input.ActivityId];
Expand Down Expand Up @@ -131,7 +131,7 @@ public override Empty TreeLevelUpgrade(TreeLevelUpgradeInput input)
Assert(input.UpgradeLevel > 0, $"Invalid UpgradeLevel, Should be greater than 0");
Assert(Context.Sender == input.Address, "Param Address is not Sender");

var requestStr = string.Concat(input.Address, input.Points, input.OpTime, input.UpgradeLevel);
var requestStr = string.Concat(input.Address.ToBase58(), input.Points, input.OpTime, input.UpgradeLevel);
CheckPointsRequestHash(requestStr, input.RequestHash);

var lastOpTime = State.TreePointsLevelUpgradeTimeMap[input.Address];
Expand Down
9 changes: 4 additions & 5 deletions protobuf/forest_contract.proto
Original file line number Diff line number Diff line change
Expand Up @@ -492,11 +492,10 @@ message AddTreePointsInput {
message ClaimTreePointsInput {
aelf.Address address = 1;
int64 points = 2;
int32 points_type =3;
string activity_id = 4;
int64 op_time = 5;
TreeReward reward = 6;
string request_hash = 7;
string activity_id = 3;
int64 op_time = 4;
TreeReward reward = 5;
string request_hash = 6;
}

message TreeLevelUpgradeInput {
Expand Down
166 changes: 162 additions & 4 deletions test/Forest.Tests/ForestContractTests_TreePoints.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
using System.Threading.Tasks;
using AElf.Contracts.MultiToken;
using AElf.Types;
using Google.Protobuf.WellKnownTypes;
using Shouldly;
using Xunit;

namespace Forest;
Expand All @@ -23,7 +27,7 @@ await AdminForestContractStub.Initialize.SendAsync(new InitializeInput
WhitelistContractAddress = WhitelistContractAddress
});

// await AdminForestContractStub.SetWhitelistContract.SendAsync(WhitelistContractAddress);
await AdminForestContractStub.SetWhitelistContract.SendAsync(WhitelistContractAddress);
}

private static Price Elf(long amunt)
Expand All @@ -36,12 +40,166 @@ private static Price Elf(long amunt)
}

[Fact]
//cancel offer
public async void SetAIServiceFee_Test()
public async void AddTreePoints_Test()
{
await InitializeForestContract();
await ForestContractStub.SetTreePointsHashVerifyKey.SendAsync(new StringValue(){Value = "1a2b3c"});
var points = await ForestContractStub.GetTreePoints.CallAsync(DefaultAddress);
points.Points.ShouldBe(0);
await ForestContractStub.AddTreePoints.SendAsync(new AddTreePointsInput()
{
Address = DefaultAddress,
Points = 10,
PointsType = 0,
OpTime = 1730454324136,
RequestHash = "e1320b97e10afc3a37ff3df54ef811ba97b77da39972ba383b2c351bd656e4cc"
});
points = await ForestContractStub.GetTreePoints.CallAsync(DefaultAddress);
points.Points.ShouldBe(10);
var addResult = await ForestContractStub.AddTreePoints.SendWithExceptionAsync(new AddTreePointsInput()
{
Address = DefaultAddress,
Points = 10,
PointsType = 0,
OpTime = 1730454324136,
RequestHash = "e1320b97e10afc3a37ff3df54ef811ba97b77da39972ba383b2c351bd656e4cc"
});
addResult.TransactionResult.Error.ShouldContain("Invalid param OpTime");
}
[Fact]
public async void TreeLevelUpgrade_Test()
{
await InitializeForestContract();
await ForestContractStub.SetTreePointsHashVerifyKey.SendAsync(new StringValue(){Value = "1a2b3c"});
var points = await ForestContractStub.GetTreePoints.CallAsync(DefaultAddress);
points.Points.ShouldBe(0);
var result = await ForestContractStub.TreeLevelUpgrade.SendWithExceptionAsync(new TreeLevelUpgradeInput()
{
Address = DefaultAddress,
Points = 100,
UpgradeLevel = 2,
OpTime = 1730462882565,
RequestHash = "d3a274f226217fc6a18c250df41f10ae8fadc30d5e933dcdad1a75a51e1d26b7"
});
result.TransactionResult.Error.ShouldContain("your points is zero");

await ForestContractStub.AddTreePoints.SendAsync(new AddTreePointsInput()
{
Address = DefaultAddress,
Points = 110,
PointsType = 0,
OpTime = 1730454324136,
RequestHash = "5494bedf4cb1d69920b17d89fbc1d6c5f18e46476b347ff8aa7c843d7faf7183"
});

points = await ForestContractStub.GetTreePoints.CallAsync(DefaultAddress);
points.Points.ShouldBe(110);

result = await ForestContractStub.TreeLevelUpgrade.SendAsync(new TreeLevelUpgradeInput()
{
Address = DefaultAddress,
Points = 100,
UpgradeLevel = 2,
OpTime = 1730462882565,
RequestHash = "d3a274f226217fc6a18c250df41f10ae8fadc30d5e933dcdad1a75a51e1d26b7"
});
points = await ForestContractStub.GetTreePoints.CallAsync(DefaultAddress);
points.Points.ShouldBe(10);

result = await ForestContractStub.TreeLevelUpgrade.SendWithExceptionAsync(new TreeLevelUpgradeInput()
{
Address = DefaultAddress,
Points = 100,
UpgradeLevel = 2,
OpTime = 1730462882565,
RequestHash = "d3a274f226217fc6a18c250df41f10ae8fadc30d5e933dcdad1a75a51e1d26b7"
});
result.TransactionResult.Error.ShouldContain("Invalid param OpTime");
}


[Fact]
public async void ClaimTreePoints_Test()
{
await InitializeForestContract();
await ForestContractStub.SetTreePointsHashVerifyKey.SendAsync(new StringValue(){Value = "1a2b3c"});
{
//transfer balance
await TokenContractStub.Transfer.SendAsync(new TransferInput()
{
To = ForestContractAddress,
Symbol = ElfSymbol,
Amount = 10000000000
});

var nftBalance = await UserTokenContractStub.GetBalance.CallAsync(new GetBalanceInput()
{
Symbol = ElfSymbol,
Owner = ForestContractAddress
});
nftBalance.Balance.ShouldBe(10000000000);
}



var points = await ForestContractStub.GetTreePoints.CallAsync(DefaultAddress);
points.Points.ShouldBe(0);
var result = await ForestContractStub.ClaimTreePoints.SendWithExceptionAsync(new ClaimTreePointsInput()
{
Address = DefaultAddress,
Points = 0,
ActivityId = "f9235130fda7230d9084374562248961d21e18e8445071b56e0630488623202e",
OpTime = 1730471642155,
Reward = new TreeReward()
{
Symbol = "ELF",
Amount = 1000000000
},
RequestHash = "41f1cd1ad97ea5bc7cf2513b805b899750b2d879cdf6fa9d8802b39e62f95093"
});
result.TransactionResult.Error.ShouldContain("your points is zero");

await ForestContractStub.AddTreePoints.SendAsync(new AddTreePointsInput()
{
Address = DefaultAddress,
Points = 110,
PointsType = 0,
OpTime = 1730454324136,
RequestHash = "5494bedf4cb1d69920b17d89fbc1d6c5f18e46476b347ff8aa7c843d7faf7183"
});

points = await ForestContractStub.GetTreePoints.CallAsync(DefaultAddress);
points.Points.ShouldBe(110);

result = await ForestContractStub.ClaimTreePoints.SendAsync(new ClaimTreePointsInput()
{
Address = DefaultAddress,
Points = 0,
ActivityId = "f9235130fda7230d9084374562248961d21e18e8445071b56e0630488623202e",
Reward = new TreeReward()
{
Symbol = "ELF",
Amount = 1000000000
},
OpTime = 1730471642155,
RequestHash = "41f1cd1ad97ea5bc7cf2513b805b899750b2d879cdf6fa9d8802b39e62f95093"
});
points = await ForestContractStub.GetTreePoints.CallAsync(DefaultAddress);
points.Points.ShouldBe(110);

result = await ForestContractStub.ClaimTreePoints.SendWithExceptionAsync(new ClaimTreePointsInput()
{
Address = DefaultAddress,
Points = 0,
ActivityId = "f9235130fda7230d9084374562248961d21e18e8445071b56e0630488623202e",
Reward = new TreeReward()
{
Symbol = "ELF",
Amount = 1000000000
},
OpTime = 1730471642155,
RequestHash = "41f1cd1ad97ea5bc7cf2513b805b899750b2d879cdf6fa9d8802b39e62f95093"
});
result.TransactionResult.Error.ShouldContain("Invalid param OpTime");
}

}

0 comments on commit a725801

Please sign in to comment.