hyapp-server/pkg/imgroup/imgroup_test.go
2026-06-02 15:49:00 +08:00

77 lines
2.8 KiB
Go

package imgroup
import "testing"
func TestBroadcastGroupIDGenerateAndParse(t *testing.T) {
global, err := GlobalBroadcastGroupID(" LaLu ")
if err != nil {
t.Fatalf("GlobalBroadcastGroupID failed: %v", err)
}
if global != "hy_lalu_bc_g" {
t.Fatalf("global group mismatch: %s", global)
}
parsedGlobal := Parse(global)
if parsedGlobal.Kind != KindGlobalBroadcast || parsedGlobal.AppCode != "lalu" || parsedGlobal.RegionID != 0 {
t.Fatalf("global parse mismatch: %+v", parsedGlobal)
}
region, err := RegionBroadcastGroupID("lalu", 1001)
if err != nil {
t.Fatalf("RegionBroadcastGroupID failed: %v", err)
}
if region != "hy_lalu_bc_r_1001" {
t.Fatalf("region group mismatch: %s", region)
}
parsedRegion := Parse(region)
if parsedRegion.Kind != KindRegionBroadcast || parsedRegion.AppCode != "lalu" || parsedRegion.RegionID != 1001 {
t.Fatalf("region parse mismatch: %+v", parsedRegion)
}
}
func TestParseRoomAndRejectInvalidBroadcast(t *testing.T) {
if parsed := Parse("room-1001"); parsed.Kind != KindRoom || parsed.RoomID != "room-1001" {
t.Fatalf("room parse mismatch: %+v", parsed)
}
if parsed := Parse("hy_lalu_bc_r_0"); parsed.Kind != KindUnknown {
t.Fatalf("zero region must be rejected: %+v", parsed)
}
if _, err := RegionBroadcastGroupID("lalu", 0); err == nil {
t.Fatal("zero region must not generate a region broadcast group")
}
if _, err := GlobalBroadcastGroupID("bad app"); err == nil {
t.Fatal("app_code with spaces must be rejected")
}
}
func TestBroadcastGroupIDWithPrefix(t *testing.T) {
global, err := GlobalBroadcastGroupIDWithPrefix("test_", "lalu")
if err != nil {
t.Fatalf("GlobalBroadcastGroupIDWithPrefix failed: %v", err)
}
if global != "test_hy_lalu_bc_g" {
t.Fatalf("prefixed global group mismatch: %s", global)
}
region, err := RegionBroadcastGroupIDWithPrefix("test_", "lalu", 1001)
if err != nil {
t.Fatalf("RegionBroadcastGroupIDWithPrefix failed: %v", err)
}
if region != "test_hy_lalu_bc_r_1001" {
t.Fatalf("prefixed region group mismatch: %s", region)
}
parsedGlobal := ParseWithPrefix(global, "test_")
if parsedGlobal.Kind != KindGlobalBroadcast || parsedGlobal.AppCode != "lalu" {
t.Fatalf("prefixed global parse mismatch: %+v", parsedGlobal)
}
parsedRegion := ParseWithPrefix(region, "test_")
if parsedRegion.Kind != KindRegionBroadcast || parsedRegion.AppCode != "lalu" || parsedRegion.RegionID != 1001 {
t.Fatalf("prefixed region parse mismatch: %+v", parsedRegion)
}
if parsed := ParseWithPrefix("hy_lalu_bc_r_1001", "test_"); parsed.Kind != KindUnknown {
t.Fatalf("unprefixed broadcast group must be rejected when prefix is configured: %+v", parsed)
}
if parsed := ParseWithPrefix("room-1001", "test_"); parsed.Kind != KindRoom || parsed.RoomID != "room-1001" {
t.Fatalf("room parse with prefix mismatch: %+v", parsed)
}
}