mirror of
https://github.com/MeshCore-Beacon/beacon-server.git
synced 2026-08-30 23:58:19 +00:00
100 lines
2.8 KiB
Go
100 lines
2.8 KiB
Go
// Copyright 2026 Beacon Contributors
|
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
package api_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/MeshCore-Beacon/beacon-server/internal/api"
|
|
"github.com/meshcore-go/meshcore-go"
|
|
)
|
|
|
|
func TestPayloadTypeName(t *testing.T) {
|
|
tests := []struct {
|
|
input int16
|
|
want string
|
|
}{
|
|
{0x00, "request"},
|
|
{0x01, "response"},
|
|
{0x02, "text_message"},
|
|
{0x03, "acknowledgement"},
|
|
{0x04, "advert"},
|
|
{0x05, "group_text"},
|
|
{0x06, "group_data"},
|
|
{0x07, "anonymous_request"},
|
|
{0x08, "path"},
|
|
{0x09, "trace"},
|
|
{0x0A, "multipart"},
|
|
{0x0B, "control"},
|
|
{0x0C, "reserved"},
|
|
{0x0D, "reserved"},
|
|
{0x0E, "reserved"},
|
|
{0x0F, "raw_custom"},
|
|
{0xFF, "unknown"},
|
|
}
|
|
for _, tt := range tests {
|
|
got := api.PayloadTypeName(tt.input)
|
|
if got != tt.want {
|
|
t.Errorf("PayloadTypeName(%#x) = %q, want %q", tt.input, got, tt.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestPayloadTypeFromString(t *testing.T) {
|
|
tests := []struct {
|
|
input string
|
|
want int16
|
|
}{
|
|
{"request", int16(meshcore.PayloadTypeReq)},
|
|
{"req", int16(meshcore.PayloadTypeReq)},
|
|
{"response", int16(meshcore.PayloadTypeResponse)},
|
|
{"txt_msg", int16(meshcore.PayloadTypeTxtMsg)},
|
|
{"txtmsg", int16(meshcore.PayloadTypeTxtMsg)},
|
|
{"text", int16(meshcore.PayloadTypeTxtMsg)},
|
|
{"direct", int16(meshcore.PayloadTypeTxtMsg)},
|
|
{"acknowledgement", int16(meshcore.PayloadTypeAck)},
|
|
{"ack", int16(meshcore.PayloadTypeAck)},
|
|
{"advertisement", int16(meshcore.PayloadTypeAdvert)},
|
|
{"advert", int16(meshcore.PayloadTypeAdvert)},
|
|
{"grp_txt", int16(meshcore.PayloadTypeGrpTxt)},
|
|
{"group_text", int16(meshcore.PayloadTypeGrpTxt)},
|
|
{"group", int16(meshcore.PayloadTypeGrpTxt)},
|
|
{"path", int16(meshcore.PayloadTypePath)},
|
|
{"trace", int16(meshcore.PayloadTypeTrace)},
|
|
{"multipart", int16(meshcore.PayloadTypeMultiPart)},
|
|
{"multi-part", int16(meshcore.PayloadTypeMultiPart)},
|
|
{"control", int16(meshcore.PayloadTypeControl)},
|
|
{"raw_custom", int16(meshcore.PayloadTypeRawCustom)},
|
|
{"raw", int16(meshcore.PayloadTypeRawCustom)},
|
|
{"ADVERT", int16(meshcore.PayloadTypeAdvert)}, // case insensitive
|
|
{"", -1},
|
|
{"garbage", -1},
|
|
}
|
|
for _, tt := range tests {
|
|
got := api.PayloadTypeFromString(tt.input)
|
|
if got != tt.want {
|
|
t.Errorf("PayloadTypeFromString(%q) = %d, want %d", tt.input, got, tt.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRouteTypeName(t *testing.T) {
|
|
tests := []struct {
|
|
input int16
|
|
want string
|
|
}{
|
|
{int16(meshcore.RouteTypeFlood), "FLOOD"},
|
|
{int16(meshcore.RouteTypeDirect), "DIRECT"},
|
|
{int16(meshcore.RouteTypeTransportFlood), "TRANSPORT_FLOOD"},
|
|
{int16(meshcore.RouteTypeTransportDirect), "TRANSPORT_DIRECT"},
|
|
{99, "unknown"},
|
|
}
|
|
for _, tt := range tests {
|
|
got := api.RouteTypeName(tt.input)
|
|
if got != tt.want {
|
|
t.Errorf("RouteTypeName(%d) = %q, want %q", tt.input, got, tt.want)
|
|
}
|
|
}
|
|
}
|