Job terrain #12
24
src/main/java/Shared/LootTable.java
Normal file
24
src/main/java/Shared/LootTable.java
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package Shared;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class LootTable<T> {
|
||||||
|
private Random random = new Random();
|
||||||
|
private final List<T> items = new ArrayList<>();
|
||||||
|
|
||||||
|
public LootTable(Random random) {
|
||||||
|
this.random = random;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addEntry(T entry, int weight) {
|
||||||
|
items.add(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public T roll() {
|
||||||
|
return items.getFirst();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
37
src/test/java/LootTableTest.java
Normal file
37
src/test/java/LootTableTest.java
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import Shared.LootTable;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import static org.hamcrest.CoreMatchers.anyOf;
|
||||||
|
import static org.hamcrest.CoreMatchers.equalTo;
|
||||||
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
public class LootTableTest {
|
||||||
|
LootTable<String> defaultLootTable() {
|
||||||
|
LootTable<String> lootTable = new LootTable<>();
|
||||||
|
lootTable.addEntry("Stone", 90);
|
||||||
|
lootTable.addEntry("Iron", 10);
|
||||||
|
return lootTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void returns_an_item_was_added() {
|
||||||
|
LootTable<String> loot = defaultLootTable();
|
||||||
|
String result = loot.roll();
|
||||||
|
assertThat(result, anyOf(equalTo("Stone"), equalTo("Iron")));
|
||||||
|
}
|
||||||
|
|
||||||
|
void respects_weight_when_rolling() {
|
||||||
|
var mockRandom = mock(Random.class);
|
||||||
|
when(mockRandom.nextInt(anyInt())).thenReturn(94);
|
||||||
|
LootTable<String> loot = new LootTable<>(mockRandom);
|
||||||
|
loot.addEntry("Stone", 90);
|
||||||
|
loot.addEntry("Iron", 10);
|
||||||
|
String result = loot.roll();
|
||||||
|
assertThat(result, equalTo("Iron"));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user