From 592a6805875e349f9841806663365244e8511e49 Mon Sep 17 00:00:00 2001
From: "Richard T. Carback III" <rick.carback@gmail.com>
Date: Tue, 24 Aug 2021 18:35:31 +0000
Subject: [PATCH] Test for event API

---
 api/event_test.go | 83 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)
 create mode 100644 api/event_test.go

diff --git a/api/event_test.go b/api/event_test.go
new file mode 100644
index 000000000..1b85ec5d0
--- /dev/null
+++ b/api/event_test.go
@@ -0,0 +1,83 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright © 2020 xx network SEZC                                          //
+//                                                                           //
+// Use of this source code is governed by a license that can be found in the //
+// LICENSE file                                                              //
+///////////////////////////////////////////////////////////////////////////////
+
+package api
+
+import (
+	"testing"
+	"time"
+)
+
+func TestEventReporting(t *testing.T) {
+	evts := make([]reportableEvent, 0) // used for convenience...
+	myCb := func(priority int, cat, ty, det string) {
+		evt := reportableEvent{
+			Priority:  priority,
+			Category:  cat,
+			EventType: ty,
+			Details:   det,
+		}
+		t.Logf("EVENT: %s", evt)
+		evts = append(evts, evt)
+	}
+
+	evtMgr := newEventManager()
+	stop, _ := evtMgr.eventService()
+	// Register a callback
+	err := evtMgr.RegisterEventCallback("test", myCb)
+	if err != nil {
+		t.Errorf("TestEventReporting unexpected error: %+v", err)
+	}
+
+	// Send a few events
+	evtMgr.ReportEvent(10, "Hi", "TypityType", "I'm an event")
+	evtMgr.ReportEvent(1, "Hi", "TypeII", "Type II errors are the worst")
+	evtMgr.ReportEvent(20, "Hi", "TypityType3", "eventy details")
+	evtMgr.ReportEvent(22, "Hi", "TypityType4", "I'm an event 2")
+
+	time.Sleep(100 * time.Millisecond)
+
+	if len(evts) != 4 {
+		t.Errorf("TestEventReporting: Got %d events, expected 4",
+			len(evts))
+	}
+
+	// Verify events are received
+	if evts[0].Priority != 10 {
+		t.Errorf("TestEventReporting: Expected priority 10, got: %s",
+			evts[0])
+	}
+	if evts[1].Category != "Hi" {
+		t.Errorf("TestEventReporting: Expected cat Hi, got: %s",
+			evts[1])
+	}
+	if evts[2].EventType != "TypityType3" {
+		t.Errorf("TestEventReporting: Expected TypeityType3, got: %s",
+			evts[2])
+	}
+	if evts[3].Details != "I'm an event 2" {
+		t.Errorf("TestEventReporting: Expected event 2, got: %s",
+			evts[3])
+	}
+
+	// Delete callback
+	evtMgr.UnregisterEventCallback("test")
+	// Send more events
+	evtMgr.ReportEvent(10, "Hi", "TypityType", "I'm an event")
+	evtMgr.ReportEvent(1, "Hi", "TypeII", "Type II errors are the worst")
+	evtMgr.ReportEvent(20, "Hi", "TypityType3", "eventy details")
+	evtMgr.ReportEvent(22, "Hi", "TypityType4", "I'm an event 2")
+
+	time.Sleep(100 * time.Millisecond)
+
+	// Verify events are not received
+	if len(evts) != 4 {
+		t.Errorf("TestEventReporting: Got %d events, expected 4",
+			len(evts))
+	}
+	stop.Close()
+}
-- 
GitLab