From 61216edf3ebd20ce0e37ffdd0fc42e89068abe49 Mon Sep 17 00:00:00 2001
From: External Time <84183548+ExternalTime@users.noreply.github.com>
Date: Wed, 27 Apr 2022 00:25:33 +0200
Subject: Separated parsing action bar and drawing hud. Rewrote parsing to be
 hopefully more robust.

---
 .../skyblocker/skyblock/StatusBarTrackerTest.java  | 74 ++++++++++++++++++++++
 1 file changed, 74 insertions(+)
 create mode 100644 src/test/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTrackerTest.java

(limited to 'src/test/java/me/xmrvizzy')

diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTrackerTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTrackerTest.java
new file mode 100644
index 00000000..da919699
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTrackerTest.java
@@ -0,0 +1,74 @@
+package me.xmrvizzy.skyblocker.skyblock;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class StatusBarTrackerTest {
+    private StatusBarTracker tracker;
+
+    @BeforeEach
+    void setUp() {
+        tracker = new StatusBarTracker();
+    }
+
+    void assertStats(int hp, int maxHp, int def, int mana, int maxMana, int overflowMana) {
+        int absorption = 0;
+        if(hp > maxHp) {
+            absorption = hp - maxHp;
+            hp -= absorption;
+            if(absorption > maxHp)
+                absorption = maxHp;
+        }
+        assertEquals(new StatusBarTracker.Resource(hp, maxHp, absorption), tracker.getHealth());
+        assertEquals(new StatusBarTracker.Resource(mana, maxMana, overflowMana), tracker.getMana());
+    }
+
+    @Test
+    void normalStatusBar() {
+        String res = tracker.update("§c934/1086❤     §a159§a❈ Defense     §b562/516✎ Mana", false);
+        assertNull(res);
+        assertStats(934, 1086, 159, 562, 516, 0);
+    }
+
+    @Test
+    void overflowMana() {
+        String res = tracker.update("§61605/1305❤     §a270§a❈ Defense     §b548/548✎ §3200ʬ", false);
+        assertNull(res);
+        assertStats(1605, 1305, 270, 548, 548, 200);
+    }
+
+    @Test
+    void regeneration() {
+        String res = tracker.update("§c2484/2484❤+§c120▄     §a642§a❈ Defense     §b2557/2611✎ Mana", false);
+        assertEquals("§c❤+§c120▄", res);
+    }
+
+    @Test
+    void instantTransmission() {
+        String actionBar = "§c2259/2259❤     §b-20 Mana (§6Instant Transmission§b)     §b549/2676✎ Mana";
+        assertEquals("§b-20 Mana (§6Instant Transmission§b)", tracker.update(actionBar, false));
+        assertNull(tracker.update(actionBar, true));
+    }
+
+    @Test
+    void rapidFire() {
+        String actionBar = "§c2509/2509❤     §b-48 Mana (§6Rapid-fire§b)     §b2739/2811✎ Mana";
+        assertEquals("§b-48 Mana (§6Rapid-fire§b)", tracker.update(actionBar, false));
+        assertNull(tracker.update(actionBar, true));
+    }
+
+    @Test
+    void zombieSword() {
+        String actionBar = "§c2509/2509❤     §b-56 Mana (§6Instant Heal§b)     §b2674/2821✎ Mana    §e§lⓩⓩⓩⓩ§6§lⓄ";
+        assertEquals("§b-56 Mana (§6Instant Heal§b)     §e§lⓩⓩⓩⓩ§6§lⓄ", tracker.update(actionBar, false));
+        assertEquals("§e§lⓩⓩⓩⓩ§6§lⓄ", tracker.update(actionBar, true));
+    }
+
+    @Test
+    void campfire() {
+        String res = tracker.update("§c17070/25565❤+§c170▃   §65,625 DPS   §c1 second     §b590/626✎ §3106ʬ", false);
+        assertEquals("§c❤+§c170▃   §65,625 DPS   §c1 second", res);
+    }
+}
-- 
cgit