aboutsummaryrefslogtreecommitdiff
path: root/node_id_test.go
diff options
context:
space:
mode:
authorNoah Stride <[email protected]>2024-02-02 19:51:25 +0000
committerGitHub <[email protected]>2024-02-02 09:51:25 -1000
commitffcb5db042e1f74b93020a9e840704eb9984913c (patch)
tree2ee157217aa958ff6195a6aaa3e4ec968e8c62d9 /node_id_test.go
parent463760ccf1cb99f387f5bf99ed83e31772744671 (diff)
Support for generating random NodeIDs and deriving Short/Long names (#2)
* Super rough initial subscription to channels and sending node info * Very ugly hacky FromRadio subscription * Add more TODOs :weary: * Add log message before we try to broadcast NodeInfo * Add basic positioning broadcasting * demo sending message from consumer * Use const for BroadcastNodeID * Config validation and defaults * Tidy up examples/TODOs * Tidy up example * Handle position and devicetelemetry updates * Fix dodgy merge * Allow configuring interval for nodeinfo/position seperately * Make broadcasted position configurable * Add MQTTProtoTopic constant rather than modifying topic root * Add Long/Short generation from NodeID * Mimic Meshtastic source more closely * Use generated Long/Short when not specified * Add TestRandomNodeID * Generate NodeID above the threshold
Diffstat (limited to 'node_id_test.go')
-rw-r--r--node_id_test.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/node_id_test.go b/node_id_test.go
new file mode 100644
index 0000000..58f367a
--- /dev/null
+++ b/node_id_test.go
@@ -0,0 +1,70 @@
+package meshtastic
+
+import (
+ "bytes"
+ "testing"
+)
+
+const testNodeID = 3735928559
+
+func TestNodeID_Uint32(t *testing.T) {
+ nodeID := NodeID(testNodeID)
+ got := nodeID.Uint32()
+ if got != testNodeID {
+ t.Errorf("expected %v, got %v", testNodeID, got)
+ }
+}
+
+func TestNodeID_Bytes(t *testing.T) {
+ nodeID := NodeID(testNodeID)
+ want := []byte{0xde, 0xad, 0xbe, 0xef}
+ got := nodeID.Bytes()
+ if !bytes.Equal(got, want) {
+ t.Errorf("expected %v, got %v", want, got)
+ }
+}
+
+func TestNodeID_String(t *testing.T) {
+ nodeID := NodeID(testNodeID)
+ want := "!deadbeef"
+ got := nodeID.String()
+ if want != got {
+ t.Errorf("expected %v, got %v", want, got)
+ }
+}
+
+func TestNodeID_DefaultShortName(t *testing.T) {
+ nodeID := NodeID(testNodeID)
+ want := "beef"
+ got := nodeID.DefaultShortName()
+ if want != got {
+ t.Errorf("expected %v, got %v", want, got)
+ }
+}
+
+func TestNodeID_DefaultLongName(t *testing.T) {
+ nodeID := NodeID(testNodeID)
+ want := "Meshtastic beef"
+ got := nodeID.DefaultLongName()
+ if want != got {
+ t.Errorf("expected %v, got %v", want, got)
+ }
+}
+
+// TestRandomNodeID ensures that RandomNodeID generates a valid NodeID and that multiple calls generate different
+// NodeIDs.
+func TestRandomNodeID(t *testing.T) {
+ nodeID1, err := RandomNodeID()
+ if err != nil {
+ t.Errorf("expected no error when generating the first node id, got %v", err)
+ }
+ t.Logf("nodeID1: %s", nodeID1)
+ nodeID2, err := RandomNodeID()
+ if err != nil {
+ t.Errorf("expected no error when generating the second node id, got %v", err)
+ }
+ t.Logf("nodeID2: %s", nodeID2)
+ if nodeID1 == nodeID2 {
+ t.Errorf("expected random node ids to be different, got %s and %s", nodeID1, nodeID2)
+ }
+}