aboutsummaryrefslogtreecommitdiff
path: root/internal/player/hardening_removeitem_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/player/hardening_removeitem_test.go')
-rw-r--r--internal/player/hardening_removeitem_test.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/internal/player/hardening_removeitem_test.go b/internal/player/hardening_removeitem_test.go
new file mode 100644
index 0000000..5cb1e4c
--- /dev/null
+++ b/internal/player/hardening_removeitem_test.go
@@ -0,0 +1,23 @@
+package player
+
+import "testing"
+
+// TestRemoveItemRejectsNonPositive: a non-positive quantity must never mutate
+// a stack; a negative value used to increase it.
+func TestRemoveItemRejectsNonPositive(t *testing.T) {
+ p := New("alice")
+ p.SetInvSlot(0, &InventorySlot{ItemID: "coin", Quantity: 5})
+
+ if p.RemoveItem("coin", -3) {
+ t.Fatal("negative quantity accepted")
+ }
+ if slot := p.InvSlot(0); slot == nil || slot.Quantity != 5 {
+ t.Fatalf("stack mutated by a negative removal: %+v", slot)
+ }
+ if p.RemoveItem("coin", 0) {
+ t.Fatal("zero quantity accepted")
+ }
+ if slot := p.InvSlot(0); slot == nil || slot.Quantity != 5 {
+ t.Fatalf("stack mutated by a zero removal: %+v", slot)
+ }
+}