Skip to content

Commit

Permalink
Merge pull request #2025 from planetarium/release/0.3.0
Browse files Browse the repository at this point in the history
Release 0.3.0 (for APV v200040)
  • Loading branch information
sonohoshi authored Jul 19, 2023
2 parents 627e12b + f76932c commit 7f72ea1
Show file tree
Hide file tree
Showing 669 changed files with 10,054 additions and 4,885 deletions.
12 changes: 5 additions & 7 deletions .Lib9c.Benchmarks/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -163,11 +163,10 @@ bool buildStateReferences
)
{
IImmutableSet<Address> stateUpdatedAddresses = actionEvaluations
.SelectMany(a => a.OutputStates.StateUpdatedAddresses)
.SelectMany(a => a.OutputState.Delta.StateUpdatedAddresses)
.ToImmutableHashSet();
IImmutableSet<(Address, Currency)> updatedFungibleAssets = actionEvaluations
.SelectMany(a => a.OutputStates.UpdatedFungibleAssets
.SelectMany(kv => kv.Value.Select(c => (kv.Key, c))))
.SelectMany(a => a.OutputState.Delta.UpdatedFungibleAssets)
.ToImmutableHashSet();

if (!stateStore.ContainsStateRoot(block.StateRootHash))
Expand All @@ -185,15 +184,14 @@ private static ImmutableDictionary<string, IValue> GetTotalDelta(
Func<(Address, Currency), string> toFungibleAssetKey)
{
IImmutableSet<Address> stateUpdatedAddresses = actionEvaluations
.SelectMany(a => a.OutputStates.StateUpdatedAddresses)
.SelectMany(a => a.OutputState.Delta.StateUpdatedAddresses)
.ToImmutableHashSet();
IImmutableSet<(Address, Currency)> updatedFungibleAssets = actionEvaluations
.SelectMany(a => a.OutputStates.UpdatedFungibleAssets
.SelectMany(kv => kv.Value.Select(c => (kv.Key, c))))
.SelectMany(a => a.OutputState.Delta.UpdatedFungibleAssets)
.ToImmutableHashSet();

IAccountStateDelta lastStates = actionEvaluations.Count > 0
? actionEvaluations[actionEvaluations.Count - 1].OutputStates
? actionEvaluations[actionEvaluations.Count - 1].OutputState
: null;
ImmutableDictionary<string, IValue> totalDelta =
stateUpdatedAddresses.ToImmutableDictionary(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public void StageUnlockTest(string typeIdentifier, int expectedStage)

var state = action.Execute(new ActionContext
{
PreviousStates = _initialStateV2,
PreviousState = _initialStateV2,
Signer = _agentAddress,
BlockIndex = 0L
});
Expand Down
4 changes: 2 additions & 2 deletions .Lib9c.DevExtensions.Tests/Action/Craft/UnlockRecipeTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public void UnlockRecipeTest_Equipment(ItemSubType targetType)

var stateV2 = action.Execute(new ActionContext
{
PreviousStates = _initialStateV2,
PreviousState = _initialStateV2,
Signer = _agentAddress,
BlockIndex = 0L,
});
Expand Down Expand Up @@ -91,7 +91,7 @@ public void UnlockRecipeTest_Consumable(ItemSubType targetType)

var stateV2 = action.Execute(new ActionContext
{
PreviousStates = _initialStateV2,
PreviousState = _initialStateV2,
Signer = _agentAddress,
BlockIndex = 0L,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class CreateOrReplaceAvatarTest

public CreateOrReplaceAvatarTest()
{
_initialStates = new Lib9c.Tests.Action.State();
_initialStates = new Lib9c.Tests.Action.MockStateDelta();

#pragma warning disable CS0618
var ncgCurrency = Currency.Legacy("NCG", 2, null);
Expand Down Expand Up @@ -443,7 +443,7 @@ private static void Execute(
crystalRandomBuff);
var nextStates = action.Execute(new ActionContext
{
PreviousStates = previousStates,
PreviousState = previousStates,
Signer = agentAddr,
Random = new TestRandom(),
Rehearsal = false,
Expand Down
9 changes: 4 additions & 5 deletions .Lib9c.DevExtensions.Tests/Action/FaucetCurrencyTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,9 @@ public FaucetCurrencyTest(ITestOutputHelper outputHelper)
_crystal = Currency.Legacy("CRYSTAL", 18, null);
#pragma warning restore CS0618

var balance =
ImmutableDictionary<(Address Address, Currency Currency), FungibleAssetValue>.Empty
.Add((GoldCurrencyState.Address, _ncg), _ncg * int.MaxValue);
_initialState = new Lib9c.Tests.Action.State(balance: balance);
_initialState = new MockStateDelta(
MockState.Empty
.AddBalance(GoldCurrencyState.Address, _ncg * int.MaxValue));

var goldCurrencyState = new GoldCurrencyState(_ncg);
_agentAddress = new PrivateKey().ToAddress();
Expand Down Expand Up @@ -67,7 +66,7 @@ int expectedCrystal
FaucetNcg = faucetNcg,
FaucetCrystal = faucetCrystal,
};
var state = action.Execute(new ActionContext { PreviousStates = _initialState });
var state = action.Execute(new ActionContext { PreviousState = _initialState });
AgentState agentState = state.GetAgentState(_agentAddress);
FungibleAssetValue expectedNcgAsset =
new FungibleAssetValue(_ncg, expectedNcg, 0);
Expand Down
4 changes: 2 additions & 2 deletions .Lib9c.DevExtensions.Tests/Action/FaucetRuneTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public FaucetRuneTest(ITestOutputHelper outputHelper)
.WriteTo.TestOutput(outputHelper)
.CreateLogger();

_initialState = new Lib9c.Tests.Action.State();
_initialState = new Lib9c.Tests.Action.MockStateDelta();
var sheets = TableSheetsImporter.ImportSheets();
foreach (var (key, value) in sheets)
{
Expand Down Expand Up @@ -86,7 +86,7 @@ public void Execute_FaucetRune(List<FaucetRuneInfo> faucetRuneInfos)
AvatarAddress = _avatarAddress,
FaucetRuneInfos = faucetRuneInfos,
};
var states = action.Execute(new ActionContext { PreviousStates = _initialState });
var states = action.Execute(new ActionContext { PreviousState = _initialState });
foreach (var rune in faucetRuneInfos)
{
var expectedRune = RuneHelper.ToCurrency(
Expand Down
2 changes: 1 addition & 1 deletion .Lib9c.DevExtensions.Tests/Action/ManipulateStateTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ private IAccountStateDelta Manipulate(

return action.Execute(new ActionContext
{
PreviousStates = state,
PreviousState = state,
Signer = _agentAddress,
BlockIndex = int.MaxValue / 2
});
Expand Down
2 changes: 1 addition & 1 deletion .Lib9c.DevExtensions.Tests/Action/Stage/ClearStageTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public void ClearStage()

var state = action.Execute(new ActionContext
{
PreviousStates = _initialStateV2,
PreviousState = _initialStateV2,
Signer = _agentAddress,
BlockIndex = 0L,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public void LoadPlainValue(IValue plainValue)
public IAccountStateDelta Execute(IActionContext context)
{
context.UseGas(1);
return context.PreviousStates;
return context.PreviousState;
}
}

Expand Down
17 changes: 10 additions & 7 deletions .Lib9c.Tests/Action/AccountStateDeltaExtensionsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ public AccountStateDeltaExtensionsTest()
[InlineData(2, 2, 200, null)]
public void SetWorldBossKillReward(int level, int expectedRune, int expectedCrystal, Type exc)
{
IAccountStateDelta states = new State();
var context = new ActionContext();
IAccountStateDelta states = new MockStateDelta();
var rewardInfoAddress = new PrivateKey().ToAddress();
var rewardRecord = new WorldBossKillRewardRecord();
for (int i = 0; i < level; i++)
Expand Down Expand Up @@ -76,7 +77,7 @@ public void SetWorldBossKillReward(int level, int expectedRune, int expectedCrys

if (exc is null)
{
var nextState = states.SetWorldBossKillReward(rewardInfoAddress, rewardRecord, 0, bossState, runeWeightSheet, killRewardSheet, runeSheet, random, avatarAddress, _agentAddress);
var nextState = states.SetWorldBossKillReward(context, rewardInfoAddress, rewardRecord, 0, bossState, runeWeightSheet, killRewardSheet, runeSheet, random, avatarAddress, _agentAddress);
Assert.Equal(expectedRune * runeCurrency, nextState.GetBalance(avatarAddress, runeCurrency));
Assert.Equal(expectedCrystal * CrystalCalculator.CRYSTAL, nextState.GetBalance(_agentAddress, CrystalCalculator.CRYSTAL));
var nextRewardInfo = new WorldBossKillRewardRecord((List)nextState.GetState(rewardInfoAddress));
Expand All @@ -87,6 +88,7 @@ public void SetWorldBossKillReward(int level, int expectedRune, int expectedCrys
Assert.Throws(
exc,
() => states.SetWorldBossKillReward(
context,
rewardInfoAddress,
rewardRecord,
0,
Expand All @@ -104,7 +106,7 @@ public void SetWorldBossKillReward(int level, int expectedRune, int expectedCrys
[Fact]
public void SetCouponWallet()
{
IAccountStateDelta states = new State();
IAccountStateDelta states = new MockStateDelta();
var guid1 = new Guid("6856AE42-A820-4041-92B0-5D7BAA52F2AA");
var guid2 = new Guid("701BA698-CCB9-4FC7-B88F-7CB8C707D135");
var guid3 = new Guid("910296E7-34E4-45D7-9B4E-778ED61F278B");
Expand Down Expand Up @@ -166,18 +168,19 @@ public void Mead(int agentBalance)
var agentContractAddress = _agentAddress.GetPledgeAddress();
var mead = Currencies.Mead;
var price = RequestPledge.DefaultRefillMead * mead;
IAccountStateDelta states = new State()
ActionContext context = new ActionContext();
IAccountStateDelta states = new MockStateDelta()
.SetState(
agentContractAddress,
List.Empty.Add(patron.Serialize()).Add(true.Serialize()))
.MintAsset(patron, price);
.MintAsset(context, patron, price);

if (agentBalance > 0)
{
states = states.MintAsset(_agentAddress, agentBalance * mead);
states = states.MintAsset(context, _agentAddress, agentBalance * mead);
}

states = states.Mead(_agentAddress, 4);
states = states.Mead(context, _agentAddress, 4);
Assert.Equal(agentBalance * mead, states.GetBalance(patron, mead));
Assert.Equal(price, states.GetBalance(_agentAddress, mead));
}
Expand Down
46 changes: 23 additions & 23 deletions .Lib9c.Tests/Action/AccountStateViewExtensionsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ public AccountStateViewExtensionsTest()
[Fact]
public void TryGetAvatarState()
{
var states = new State();
states = (State)states.SetState(_avatarAddress, _avatarState.Serialize());
var states = new MockStateDelta();
states = (MockStateDelta)states.SetState(_avatarAddress, _avatarState.Serialize());

Assert.True(states.TryGetAvatarState(_agentAddress, _avatarAddress, out var avatarState2));
Assert.Equal(_avatarAddress, avatarState2.address);
Expand All @@ -60,23 +60,23 @@ public void TryGetAvatarState()
[Fact]
public void TryGetAvatarStateEmptyAddress()
{
var states = new State();
var states = new MockStateDelta();

Assert.False(states.TryGetAvatarState(default, default, out _));
}

[Fact]
public void TryGetAvatarStateAddressKeyNotFoundException()
{
var states = new State().SetState(default, Dictionary.Empty);
var states = new MockStateDelta().SetState(default, Dictionary.Empty);

Assert.False(states.TryGetAvatarState(default, default, out _));
}

[Fact]
public void TryGetAvatarStateKeyNotFoundException()
{
var states = new State()
var states = new MockStateDelta()
.SetState(
default,
Dictionary.Empty
Expand All @@ -89,24 +89,24 @@ public void TryGetAvatarStateKeyNotFoundException()
[Fact]
public void TryGetAvatarStateInvalidCastException()
{
var states = new State().SetState(default, default(Text));
var states = new MockStateDelta().SetState(default, default(Text));

Assert.False(states.TryGetAvatarState(default, default, out _));
}

[Fact]
public void TryGetAvatarStateInvalidAddress()
{
var states = new State().SetState(default, _avatarState.Serialize());
var states = new MockStateDelta().SetState(default, _avatarState.Serialize());

Assert.False(states.TryGetAvatarState(Addresses.GameConfig, _avatarAddress, out _));
}

[Fact]
public void GetAvatarStateV2()
{
var states = new State();
states = (State)states
var states = new MockStateDelta();
states = (MockStateDelta)states
.SetState(_avatarAddress, _avatarState.SerializeV2())
.SetState(_avatarAddress.Derive(LegacyInventoryKey), _avatarState.inventory.Serialize())
.SetState(_avatarAddress.Derive(LegacyWorldInformationKey), _avatarState.worldInformation.Serialize())
Expand All @@ -124,13 +124,13 @@ public void GetAvatarStateV2()
[InlineData(LegacyQuestListKey)]
public void GetAvatarStateV2_Throw_FailedLoadStateException(string key)
{
var states = new State();
states = (State)states
var states = new MockStateDelta();
states = (MockStateDelta)states
.SetState(_avatarAddress, _avatarState.SerializeV2())
.SetState(_avatarAddress.Derive(LegacyInventoryKey), _avatarState.inventory.Serialize())
.SetState(_avatarAddress.Derive(LegacyWorldInformationKey), _avatarState.worldInformation.Serialize())
.SetState(_avatarAddress.Derive(LegacyQuestListKey), _avatarState.questList.Serialize());
states = (State)states.SetState(_avatarAddress.Derive(key), null);
states = (MockStateDelta)states.SetState(_avatarAddress.Derive(key), null);
var exc = Assert.Throws<FailedLoadStateException>(() => states.GetAvatarStateV2(_avatarAddress));
Assert.Contains(key, exc.Message);
}
Expand All @@ -140,15 +140,15 @@ public void GetAvatarStateV2_Throw_FailedLoadStateException(string key)
[InlineData(false)]
public void TryGetAvatarStateV2(bool backward)
{
var states = new State();
var states = new MockStateDelta();
if (backward)
{
states = (State)states
states = (MockStateDelta)states
.SetState(_avatarAddress, _avatarState.Serialize());
}
else
{
states = (State)states
states = (MockStateDelta)states
.SetState(_avatarAddress, _avatarState.SerializeV2())
.SetState(_avatarAddress.Derive(LegacyInventoryKey), _avatarState.inventory.Serialize())
.SetState(_avatarAddress.Derive(LegacyWorldInformationKey), _avatarState.worldInformation.Serialize())
Expand All @@ -164,16 +164,16 @@ public void TryGetAvatarStateV2(bool backward)
[InlineData(false)]
public void TryGetAgentAvatarStatesV2(bool backward)
{
var states = new State().SetState(_agentAddress, _agentState.Serialize());
var states = new MockStateDelta().SetState(_agentAddress, _agentState.Serialize());

if (backward)
{
states = (State)states
states = (MockStateDelta)states
.SetState(_avatarAddress, _avatarState.Serialize());
}
else
{
states = (State)states
states = (MockStateDelta)states
.SetState(_avatarAddress, _avatarState.SerializeV2())
.SetState(_avatarAddress.Derive(LegacyInventoryKey), _avatarState.inventory.Serialize())
.SetState(_avatarAddress.Derive(LegacyWorldInformationKey), _avatarState.worldInformation.Serialize())
Expand All @@ -187,7 +187,7 @@ public void TryGetAgentAvatarStatesV2(bool backward)
[Fact]
public void GetStatesAsDict()
{
IAccountStateDelta states = new State();
IAccountStateDelta states = new MockStateDelta();
var dict = new Dictionary<Address, IValue>
{
{ new PrivateKey().ToAddress(), Null.Value },
Expand All @@ -214,7 +214,7 @@ public void GetStatesAsDict()
[Fact]
public void GetSheets()
{
IAccountStateDelta states = new State();
IAccountStateDelta states = new MockStateDelta();
SheetsExtensionsTest.InitSheets(
states,
out _,
Expand All @@ -241,7 +241,7 @@ public void GetSheets()
[InlineData(true)]
public void GetCrystalCostState(bool exist)
{
IAccountStateDelta state = new State();
IAccountStateDelta state = new MockStateDelta();
int expectedCount = exist ? 1 : 0;
FungibleAssetValue expectedCrystal = exist
? 100 * CrystalCalculator.CRYSTAL
Expand Down Expand Up @@ -274,7 +274,7 @@ public void GetCrystalCostStates(long blockIndex, bool previousWeeklyExist)
Address previousCostAddress = Addresses.GetWeeklyCrystalCostAddress(weeklyIndex - 1);
Address beforePreviousCostAddress = Addresses.GetWeeklyCrystalCostAddress(weeklyIndex - 2);
var crystalCostState = new CrystalCostState(default, 100 * CrystalCalculator.CRYSTAL);
IAccountStateDelta state = new State()
IAccountStateDelta state = new MockStateDelta()
.SetState(dailyCostAddress, crystalCostState.Serialize())
.SetState(weeklyCostAddress, crystalCostState.Serialize())
.SetState(previousCostAddress, crystalCostState.Serialize())
Expand Down Expand Up @@ -304,7 +304,7 @@ public void GetCrystalCostStates(long blockIndex, bool previousWeeklyExist)
[Fact]
public void GetCouponWallet()
{
IAccountStateDelta states = new State();
IAccountStateDelta states = new MockStateDelta();
var guid1 = new Guid("6856AE42-A820-4041-92B0-5D7BAA52F2AA");
var guid2 = new Guid("701BA698-CCB9-4FC7-B88F-7CB8C707D135");
var guid3 = new Guid("910296E7-34E4-45D7-9B4E-778ED61F278B");
Expand Down
7 changes: 5 additions & 2 deletions .Lib9c.Tests/Action/ActionContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ public class ActionContext : IActionContext

public long BlockIndex { get; set; }

public int BlockProtocolVersion { get; set; }

public bool Rehearsal { get; set; }

public IAccountStateDelta PreviousStates { get; set; }
public IAccountStateDelta PreviousState { get; set; }

public IRandom Random { get; set; }

Expand All @@ -51,8 +53,9 @@ public IActionContext GetUnconsumedContext()
Miner = Miner,
BlockHash = BlockHash,
BlockIndex = BlockIndex,
BlockProtocolVersion = BlockProtocolVersion,
Rehearsal = Rehearsal,
PreviousStates = PreviousStates,
PreviousState = PreviousState,
Random = Random,
PreviousStateRootHash = PreviousStateRootHash,
};
Expand Down
Loading

0 comments on commit 7f72ea1

Please sign in to comment.