A 2D tile-based sandbox game.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ItemStack.t.cc 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "ItemStack.h"
  2. #include "lib/test.h"
  3. // Most of these tests need two ItemStacks.
  4. // ItemStack requires an Item pointer, and only ever looks at the pointer.
  5. // Therefore, we'll just give the ItemStacks pointers to ints.
  6. static int itint1, itint2;
  7. static Swan::Item *item1 = (Swan::Item *)&itint1;
  8. static Swan::Item *item2 = (Swan::Item *)&itint2;
  9. test("Basic insert") {
  10. Swan::ItemStack s1(item1, 0);
  11. Swan::ItemStack s2(item1, 10);
  12. s2 = s1.insert(s2);
  13. expecteq(s1.count(), 10);
  14. expecteq(s2.count(), 0);
  15. }
  16. test("Insert rejects different items") {
  17. Swan::ItemStack s1(item1, 5);
  18. Swan::ItemStack s2(item2, 10);
  19. Swan::ItemStack ret = s1.insert(s2);
  20. expecteq(s1.count(), 5);
  21. expecteq(ret.count(), 10);
  22. expecteq(ret.count(), s2.count());
  23. expecteq(ret.item(), s2.item());
  24. }
  25. test("Insert never overflows") {
  26. Swan::ItemStack s1(item1, 40);
  27. Swan::ItemStack s2(item1, 40);
  28. s2 = s1.insert(s2);
  29. expecteq(s1.count(), Swan::ItemStack::MAX_COUNT);
  30. expecteq(s2.count(), 80 - Swan::ItemStack::MAX_COUNT);
  31. }
  32. test("When insert empties an ItemStack, it should have its item nulled out") {
  33. Swan::ItemStack s1(item1, 10);
  34. Swan::ItemStack s2(item1, 10);
  35. s2 = s1.insert(s2);
  36. expecteq(s1.count(), 20);
  37. expecteq(s2.count(), 0);
  38. expecteq(s2.item(), nullptr);
  39. expect(s2.empty());
  40. }
  41. test("Insert on an empty item stack") {
  42. Swan::ItemStack s1(nullptr, 0);
  43. Swan::ItemStack s2(item1, 10);
  44. s2 = s1.insert(s2);
  45. expecteq(s1.count(), 10);
  46. expecteq(s1.item(), item1);
  47. expecteq(s2.count(), 0);
  48. expect(s2.empty());
  49. }