Skip to content
Merged

Main #3248

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
f027932
Update lib9c version
ipdae Nov 4, 2025
8ee33ff
Refactor InfiniteTowerBattleCondition to support multiple required el…
ipdae Nov 5, 2025
140b175
Add validation test cases
ipdae Nov 5, 2025
ed27443
Fix season reset
ipdae Nov 6, 2025
2fb8f8a
Fix claim gift parse
ipdae Nov 6, 2025
aed2c7e
Support multiple target type
ipdae Nov 7, 2025
10d9900
[PLD-731] Add new ids
ipdae Nov 7, 2025
93ec96a
Merge pull request #3238 from planetarium/PLD-736
ipdae Nov 7, 2025
57a8e49
Fix infinite tower bug
ipdae Nov 7, 2025
2ec9dbe
Merge pull request #3239 from planetarium/PLD-736
ipdae Nov 7, 2025
6097398
Refactor validate infinite tower conditions
ipdae Nov 11, 2025
dc365bb
Merge pull request #3240 from planetarium/PLD-743
ipdae Nov 11, 2025
928d30b
Update InfiniteTowerModule to derive account addresses based on infin…
ipdae Nov 13, 2025
9f55a7b
Merge pull request #3241 from planetarium/PLD-743
ipdae Nov 13, 2025
214f64b
Fix infinite tower address derive
ipdae Nov 13, 2025
69152a4
Merge pull request #3242 from planetarium/bugfix/infinite-tower-addre…
ipdae Nov 13, 2025
2541a81
Validate equipment elemental type
ipdae Nov 14, 2025
49d7f2f
Merge pull request #3243 from planetarium/PLD-784
ipdae Nov 14, 2025
ae8fe2b
Use infinitetower rune slot
ipdae Nov 17, 2025
6eb4757
Merge pull request #3244 from planetarium/PLD-803
ipdae Nov 17, 2025
1057568
Avoid state override
ipdae Nov 17, 2025
9591634
[PLD-804] Fix simulator turn increase
ipdae Nov 17, 2025
eb4f4f2
Update InfiniteTowerSimulator default args
ipdae Nov 17, 2025
38ae303
Fix event logic
ipdae Nov 17, 2025
f219cfb
Fix reward event
ipdae Nov 17, 2025
80d8533
Merge pull request #3245 from planetarium/PLD-807
ipdae Nov 18, 2025
1965cbf
Add enemy initial stat modifiers to Infinite Tower simulation
ipdae Nov 18, 2025
70ce944
Merge pull request #3246 from planetarium/PLD-812
ipdae Nov 18, 2025
e242478
Add migration of unlocked rune slots from Adventure to Infinite Tower
ipdae Nov 19, 2025
856c927
Merge pull request #3247 from planetarium/PLD-805
ipdae Nov 19, 2025
f3e0142
Fix InvalidStateRootHash in InfiniteTowerBattle
ipdae Nov 21, 2025
1b12ce8
Disable log event in action
ipdae Nov 21, 2025
91e18e5
Merge pull request #3237 from planetarium/release/1.32.0
ipdae Nov 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 33 additions & 8 deletions .Lib9c.Tests/Action/InfiniteTowerBattleConditionTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,29 +106,49 @@ public void ForbiddenRuneTypes_Constructor_WithNull_ShouldCreateEmptyList()
public void RequiredElementalType_Constructor_ShouldCreateCorrectCondition()
{
// Arrange
var requiredType = ElementalType.Fire;
var requiredTypes = new List<ElementalType> { ElementalType.Fire };

// Act
var condition = new InfiniteTowerBattleCondition(requiredType, true);
var condition = new InfiniteTowerBattleCondition(requiredTypes, true);

// Assert
Assert.Equal(BattleConditionType.RequiredElementalType, condition.Type);
Assert.Equal(requiredType, condition.RequiredElementalType);
Assert.Single(condition.RequiredElementalTypes);
Assert.Contains(ElementalType.Fire, condition.RequiredElementalTypes);
Assert.True(condition.HasRestrictions());
}

[Fact]
public void RequiredElementalType_Constructor_WithNull_ShouldCreateConditionWithoutRestrictions()
{
// Act
var condition = new InfiniteTowerBattleCondition((ElementalType?)null, true);
var condition = new InfiniteTowerBattleCondition(new List<ElementalType>(), true);

// Assert
Assert.Equal(BattleConditionType.RequiredElementalType, condition.Type);
Assert.Null(condition.RequiredElementalType);
Assert.NotNull(condition.RequiredElementalTypes);
Assert.Empty(condition.RequiredElementalTypes);
Assert.False(condition.HasRestrictions());
}

[Fact]
public void RequiredElementalType_Constructor_WithMultipleTypes_ShouldCreateCorrectCondition()
{
// Arrange
var requiredTypes = new List<ElementalType> { ElementalType.Fire, ElementalType.Water, ElementalType.Land };

// Act
var condition = new InfiniteTowerBattleCondition(requiredTypes, true);

// Assert
Assert.Equal(BattleConditionType.RequiredElementalType, condition.Type);
Assert.Equal(3, condition.RequiredElementalTypes.Count);
Assert.Contains(ElementalType.Fire, condition.RequiredElementalTypes);
Assert.Contains(ElementalType.Water, condition.RequiredElementalTypes);
Assert.Contains(ElementalType.Land, condition.RequiredElementalTypes);
Assert.True(condition.HasRestrictions());
}

[Fact]
public void ForbiddenItemSubTypes_Constructor_ShouldCreateCorrectCondition()
{
Expand Down Expand Up @@ -171,7 +191,10 @@ public void ForbiddenItemSubTypes_Constructor_WithFalseFlag_ShouldThrowException
public void RequiredElementalType_Constructor_WithFalseFlag_ShouldThrowException()
{
// Arrange
ElementalType? requiredType = ElementalType.Fire;
List<ElementalType> requiredType = new List<ElementalType>
{
ElementalType.Fire,
};

// Act & Assert
Assert.Throws<ArgumentException>(() => new InfiniteTowerBattleCondition(requiredType, false));
Expand All @@ -192,15 +215,17 @@ public void ToString_ShouldReturnCorrectDescription()
var itemGradeCondition = new InfiniteTowerBattleCondition(3, 7, true);
var itemLevelCondition = new InfiniteTowerBattleCondition(5, 10);
var runeTypesCondition = new InfiniteTowerBattleCondition(new List<RuneType> { RuneType.Stat });
var elementalCondition = new InfiniteTowerBattleCondition(ElementalType.Fire, true);
var elementalCondition = new InfiniteTowerBattleCondition(new List<ElementalType> { ElementalType.Fire }, true);
var elementalConditionMultiple = new InfiniteTowerBattleCondition(new List<ElementalType> { ElementalType.Fire, ElementalType.Water }, true);
var itemSubTypesCondition = new InfiniteTowerBattleCondition(new List<ItemSubType> { ItemSubType.Armor }, true);

// Act & Assert
Assert.Equal("CP: Required=1000, Max=5000", cpCondition.ToString());
Assert.Equal("ItemGrade: Min=3, Max=7", itemGradeCondition.ToString());
Assert.Equal("ItemLevel: Min=5, Max=10", itemLevelCondition.ToString());
Assert.Equal("ForbiddenRuneTypes: Stat", runeTypesCondition.ToString());
Assert.Equal("RequiredElementalType: Fire", elementalCondition.ToString());
Assert.Equal("RequiredElementalTypes: [Fire]", elementalCondition.ToString());
Assert.Equal("RequiredElementalTypes: [Fire, Water]", elementalConditionMultiple.ToString());
Assert.Equal("ForbiddenItemSubTypes: Armor", itemSubTypesCondition.ToString());
}
}
Expand Down
Loading
Loading