diff --git a/cmix/polltracker_test.go b/cmix/polltracker_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..a544d567f7e643a3810742e617753017c55a5af9
--- /dev/null
+++ b/cmix/polltracker_test.go
@@ -0,0 +1,75 @@
+package cmix
+
+import (
+	xxid "gitlab.com/xx_network/primitives/id"
+	"gitlab.com/xx_network/primitives/id/ephemeral"
+	"strings"
+	"testing"
+	"time"
+)
+
+func TestPollTracker(t *testing.T) {
+	// Create poll tracker
+	pt := newPollTracker()
+
+	// Init ID and first EID
+	id := xxid.NewIdFromString("zezima", xxid.User, t)
+	eid, _, _, err := ephemeral.GetId(id, 16, time.Now().UnixNano())
+	if err != nil {
+		t.Errorf("Failed to create eid for ID %s", id.String())
+	}
+	eid2, _, _, err := ephemeral.GetId(id, 16, time.Now().Add(time.Hour*24).UnixNano())
+	if err != nil {
+		t.Errorf("Failed to create second eid for ID %s", id.String())
+	}
+
+	// Track untracked id & eid
+	pt.Track(eid, id)
+	if i, ok := (*pt)[*id]; ok {
+		if j, ok2 := i[eid.Int64()]; ok2 {
+			if j != 1 {
+				t.Errorf("EID entry value not 1")
+			}
+		} else {
+			t.Errorf("No entry made for EID")
+		}
+	} else {
+		t.Errorf("No entry made for ID")
+	}
+
+	// track untracked eid on tracked id
+	pt.Track(eid2, id)
+	if i, ok := (*pt)[*id]; ok {
+		if j, ok2 := i[eid2.Int64()]; ok2 {
+			if j != 1 {
+				t.Errorf("EID entry value not 1")
+			}
+		} else {
+			t.Errorf("No entry made for EID")
+		}
+	} else {
+		t.Errorf("No entry made for ID")
+	}
+
+	// re-add tracked eid & id
+	pt.Track(eid2, id)
+	if i, ok := (*pt)[*id]; ok {
+		if j, ok2 := i[eid2.Int64()]; ok2 {
+			if j != 2 {
+				t.Errorf("EID entry value not 1")
+			}
+		} else {
+			t.Errorf("No entry made for EID")
+		}
+	} else {
+		t.Errorf("No entry made for ID")
+	}
+
+	// Check report output
+	s := strings.TrimSpace(pt.Report())
+
+	expectedReport := "Polled the network 3 times"
+	if s != expectedReport {
+		t.Errorf("Did not receive expected report\n\tExpected: %s\n\tReceived: %s\n", expectedReport, s)
+	}
+}
diff --git a/cmix/roundTracking.go b/cmix/roundTracking.go
index 534324d272d6d089c00a7dc20cc178116b2baeb9..56b327d17b309bc700af2dcc2f05a6d005eb37dd 100644
--- a/cmix/roundTracking.go
+++ b/cmix/roundTracking.go
@@ -23,7 +23,7 @@ import (
 type RoundState uint8
 
 const (
-	Unchecked = iota
+	Unchecked RoundState = iota
 	Unknown
 	NoMessageAvailable
 	MessageAvailable
diff --git a/cmix/roundTracking_test.go b/cmix/roundTracking_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..c6219228a6e6df2c3d2c39a69440fa43e20e9013
--- /dev/null
+++ b/cmix/roundTracking_test.go
@@ -0,0 +1,23 @@
+package cmix
+
+import (
+	"gitlab.com/xx_network/primitives/id"
+	"testing"
+)
+
+func TestRoundTracker(t *testing.T) {
+	rt := NewRoundTracker()
+	rid := id.Round(2)
+	rt.denote(rid, MessageAvailable)
+	if rt.state[rid] != MessageAvailable {
+		t.Errorf("Round %d is not in expected state\n\tExpected: %s\n\tReceived: %s\n", rid, MessageAvailable, rt.state[rid])
+	}
+	rt.denote(rid, Unchecked)
+	if rt.state[rid] != MessageAvailable {
+		t.Errorf("Round %d is not in expected state\n\tExpected: %s\n\tReceived: %s\n", rid, MessageAvailable, rt.state[rid])
+	}
+	rt.denote(rid, Abandoned)
+	if rt.state[rid] != Abandoned {
+		t.Errorf("Round %d is not in expected state\n\tExpected: %s\n\tReceived: %s\n", rid, Abandoned, rt.state[rid])
+	}
+}