diff options
| author | Noah Stride <[email protected]> | 2024-02-02 19:51:25 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-02-02 09:51:25 -1000 |
| commit | ffcb5db042e1f74b93020a9e840704eb9984913c (patch) | |
| tree | 2ee157217aa958ff6195a6aaa3e4ec968e8c62d9 /node_id_test.go | |
| parent | 463760ccf1cb99f387f5bf99ed83e31772744671 (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.go | 70 |
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) + } +} |
