added item probability
This commit is contained in:
Regular → Executable
Regular → Executable
Regular → Executable
+37
@@ -125,6 +125,43 @@ public class ItemTests
|
||||
{
|
||||
Assert.Equal(5, ItemRegistry.Default.All.Select(i => i.Id).Distinct().Count());
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(0)]
|
||||
[InlineData(-1)]
|
||||
public void Spawner_with_zero_chance_never_adds_items(double chance)
|
||||
{
|
||||
var spawner = new ItemSpawner(ItemRegistry.Default, chance, new Random(1));
|
||||
|
||||
Assert.All(Enumerable.Range(0, 100), _ => Assert.False(spawner.Decorate(PieceType.T).HasItem));
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(1)]
|
||||
[InlineData(2)]
|
||||
public void Spawner_with_full_chance_puts_an_item_in_every_mino(double chance)
|
||||
{
|
||||
var spawner = new ItemSpawner(ItemRegistry.Default, chance, new Random(1));
|
||||
|
||||
var spec = spawner.Decorate(PieceType.T);
|
||||
|
||||
Assert.NotNull(spec.Items);
|
||||
Assert.Equal(4, spec.Items.Count);
|
||||
Assert.All(spec.Items, i => Assert.NotNull(i));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Spawner_rolls_each_mino_separately()
|
||||
{
|
||||
var spawner = new ItemSpawner(ItemRegistry.Default, 0.5, new Random(1));
|
||||
|
||||
var counts = Enumerable.Range(0, 1000)
|
||||
.Select(_ => spawner.Decorate(PieceType.T).Items?.Count(i => i is not null) ?? 0)
|
||||
.ToList();
|
||||
|
||||
Assert.Contains(counts, c => c >= 2);
|
||||
Assert.InRange(counts.Average(), 1.8, 2.2);
|
||||
}
|
||||
}
|
||||
|
||||
public class MatchTests
|
||||
|
||||
Regular → Executable
+6
-5
@@ -35,17 +35,18 @@ public class PlayerGameTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Item_inside_piece_is_collected_when_its_row_clears()
|
||||
public void Items_inside_piece_are_collected_when_their_row_clears()
|
||||
{
|
||||
var player = CreatePlayer(itemChance: 1, pieces: PieceType.I);
|
||||
FillRow(player.Board, Bottom(player.Board), 3, 4, 5, 6);
|
||||
player.Start();
|
||||
var itemId = player.Active!.Spec.ItemId;
|
||||
Assert.NotNull(itemId);
|
||||
var items = player.Active!.Spec.Items;
|
||||
Assert.NotNull(items);
|
||||
Assert.All(items, i => Assert.NotNull(i));
|
||||
|
||||
player.HandleInput(InputAction.HardDrop);
|
||||
|
||||
Assert.Equal([itemId!], player.Inventory);
|
||||
Assert.Equal(items.Order(), player.Inventory.Order());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -58,7 +59,7 @@ public class PlayerGameTests
|
||||
|
||||
Assert.Empty(player.Inventory);
|
||||
var bottom = Bottom(player.Board);
|
||||
Assert.Contains(Enumerable.Range(0, 10), x => player.Board[x, bottom].ItemId is not null);
|
||||
Assert.Equal(4, Enumerable.Range(0, 10).Count(x => player.Board[x, bottom].ItemId is not null));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
Regular → Executable
Reference in New Issue
Block a user