public void ExecuteThrowWeeklyArenaStateAlreadyEndedException() { var previousWeeklyArenaState = _initialState.GetWeeklyArenaState(_weeklyArenaAddress); previousWeeklyArenaState.Ended = true; var previousState = _initialState.SetState( _weeklyArenaAddress, previousWeeklyArenaState.Serialize()); var action = new RankingBattle0 { AvatarAddress = _avatar1Address, EnemyAddress = _avatar2Address, WeeklyArenaAddress = _weeklyArenaAddress, costumeIds = new List <int>(), equipmentIds = new List <Guid>(), consumableIds = new List <Guid>(), }; Assert.Throws <WeeklyArenaStateAlreadyEndedException>(() => { action.Execute(new ActionContext() { PreviousStates = previousState, Signer = _agent1Address, Random = new TestRandom(), Rehearsal = false, }); }); }
public void ExecuteThrowNotEnoughClearedStageLevelException() { var previousAvatar1State = _initialState.GetAvatarState(_avatar1Address); previousAvatar1State.worldInformation = new WorldInformation( 0, _tableSheets.WorldSheet, false ); var previousState = _initialState.SetState( _avatar1Address, previousAvatar1State.Serialize()); var action = new RankingBattle0 { AvatarAddress = _avatar1Address, EnemyAddress = _avatar2Address, WeeklyArenaAddress = _weeklyArenaAddress, costumeIds = new List <int>(), equipmentIds = new List <Guid>(), consumableIds = new List <Guid>(), }; Assert.Throws <NotEnoughClearedStageLevelException>(() => { action.Execute(new ActionContext() { PreviousStates = previousState, Signer = _agent1Address, Random = new TestRandom(), Rehearsal = false, }); }); }
public void Execute() { var previousWeeklyState = _initialState.GetWeeklyArenaState(0); var previousAvatar1State = _initialState.GetAvatarState(_avatar1Address); previousAvatar1State.level = 10; var previousState = _initialState.SetState( _avatar1Address, previousAvatar1State.Serialize()); var itemIds = _tableSheets.WeeklyArenaRewardSheet.Values .Select(r => r.Reward.ItemId) .ToList(); Assert.All(itemIds, id => Assert.False(previousAvatar1State.inventory.HasItem(id))); var action = new RankingBattle0 { AvatarAddress = _avatar1Address, EnemyAddress = _avatar2Address, WeeklyArenaAddress = _weeklyArenaAddress, costumeIds = new List <int>(), equipmentIds = new List <Guid>(), consumableIds = new List <Guid>(), }; Assert.Null(action.Result); var nextState = action.Execute(new ActionContext() { PreviousStates = previousState, Signer = _agent1Address, Random = new TestRandom(), Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarState(_avatar1Address); var nextWeeklyState = nextState.GetWeeklyArenaState(0); Assert.Contains(nextAvatar1State.inventory.Materials, i => itemIds.Contains(i.Id)); Assert.NotNull(action.Result); Assert.Contains(typeof(GetReward), action.Result.Select(e => e.GetType())); Assert.Equal(BattleLog.Result.Win, action.Result.result); Assert.True(nextWeeklyState[_avatar1Address].Score > previousWeeklyState[_avatar1Address].Score); }
public void ExecuteThrowNotEnoughFungibleAssetValueException() { var previousWeeklyArenaState = _initialState.GetWeeklyArenaState(_weeklyArenaAddress); var arenaInfo = previousWeeklyArenaState.GetArenaInfo(_avatar1Address); previousWeeklyArenaState.Update(new ArenaInfo(arenaInfo)); var previousState = _initialState.SetState( _weeklyArenaAddress, previousWeeklyArenaState.Serialize()); var goldCurrency = new Currency("NCG", 2, Addresses.GoldCurrency); var previousAgentGoldState = _initialState.GetBalance( _agent1Address, goldCurrency); if (previousAgentGoldState.Sign > 0) { previousState = _initialState.TransferAsset( _agent1Address, Addresses.GoldCurrency, previousAgentGoldState); } var action = new RankingBattle0 { AvatarAddress = _avatar1Address, EnemyAddress = _avatar2Address, WeeklyArenaAddress = _weeklyArenaAddress, costumeIds = new List <int>(), equipmentIds = new List <Guid>(), consumableIds = new List <Guid>(), }; Assert.Throws <NotEnoughFungibleAssetValueException>(() => { action.Execute(new ActionContext() { PreviousStates = previousState, Signer = _agent1Address, Random = new TestRandom(), Rehearsal = false, }); }); }
public void ExecuteThrowWeeklyArenaStateNotContainsAvatarAddressException( int caseIndex) { Address targetAddress; switch (caseIndex) { case 0: targetAddress = _avatar1Address; break; case 1: targetAddress = _avatar2Address; break; } var previousWeeklyArenaState = _initialState.GetWeeklyArenaState(_weeklyArenaAddress); previousWeeklyArenaState.Remove(targetAddress); var previousState = _initialState.SetState( _weeklyArenaAddress, previousWeeklyArenaState.Serialize()); var action = new RankingBattle0 { AvatarAddress = _avatar1Address, EnemyAddress = _avatar2Address, WeeklyArenaAddress = _weeklyArenaAddress, costumeIds = new List <int>(), equipmentIds = new List <Guid>(), consumableIds = new List <Guid>(), }; Assert.Throws <WeeklyArenaStateNotContainsAvatarAddressException>(() => { action.Execute(new ActionContext() { PreviousStates = previousState, Signer = _agent1Address, Random = new TestRandom(), Rehearsal = false, }); }); }
public void ExecuteThrowFailedLoadStateException(int caseIndex) { Address signer; Address avatarAddress; Address enemyAddress; switch (caseIndex) { case 0: signer = new PrivateKey().ToAddress(); avatarAddress = _avatar1Address; enemyAddress = _avatar2Address; break; case 1: signer = _agent1Address; avatarAddress = _avatar1Address; enemyAddress = new PrivateKey().ToAddress(); break; } var action = new RankingBattle0 { AvatarAddress = avatarAddress, EnemyAddress = enemyAddress, WeeklyArenaAddress = _weeklyArenaAddress, costumeIds = new List <int>(), equipmentIds = new List <Guid>(), consumableIds = new List <Guid>(), }; Assert.Throws <FailedLoadStateException>(() => { action.Execute(new ActionContext() { PreviousStates = _initialState, Signer = signer, Random = new TestRandom(), Rehearsal = false, }); }); }
public void ExecuteThrowNotEnoughWeeklyArenaChallengeCountException() { var previousAvatarState = _initialState.GetAvatarState(_avatar1Address); var previousWeeklyArenaState = _initialState.GetWeeklyArenaState(_weeklyArenaAddress); while (true) { var arenaInfo = previousWeeklyArenaState.GetArenaInfo(_avatar1Address); arenaInfo.UpdateV3(previousAvatarState, arenaInfo, BattleLog.Result.Lose); if (arenaInfo.DailyChallengeCount == 0) { break; } } var previousState = _initialState.SetState( _weeklyArenaAddress, previousWeeklyArenaState.Serialize()); var action = new RankingBattle0 { AvatarAddress = _avatar1Address, EnemyAddress = _avatar2Address, WeeklyArenaAddress = _weeklyArenaAddress, costumeIds = new List <int>(), equipmentIds = new List <Guid>(), consumableIds = new List <Guid>(), }; Assert.Throws <NotEnoughWeeklyArenaChallengeCountException>(() => { action.Execute(new ActionContext() { PreviousStates = previousState, Signer = _agent1Address, Random = new TestRandom(), Rehearsal = false, }); }); }
public void ExecuteThrowInvalidAddressException() { var action = new RankingBattle0 { AvatarAddress = _avatar1Address, EnemyAddress = _avatar1Address, WeeklyArenaAddress = _weeklyArenaAddress, costumeIds = new List <int>(), equipmentIds = new List <Guid>(), consumableIds = new List <Guid>(), }; Assert.Throws <InvalidAddressException>(() => { action.Execute(new ActionContext() { PreviousStates = _initialState, Signer = _agent1Address, Random = new TestRandom(), Rehearsal = false, }); }); }