Files
Erupe/server/channelserver/handlers_discord_test.go
Houmgaor 7e9440d8cc test: expand channelserver coverage from 20% to 25%
Add tests for:
- Discord handlers (getPlayerSlice, getCharacterList)
- House handlers (boxToBytes, HouseData, Title structs)
- Mail struct tests
- Mercenary handlers (Partner, HunterNavi structs)
- Shop/Gacha handlers (writeShopItems, ShopItem, Gacha structs)
- Additional handler coverage for guild, tower, and simple handlers
- Stage handler tests for binary operations and enumeration
- Channel server tests for BroadcastMHF and session management
2026-02-02 16:02:01 +01:00

164 lines
3.6 KiB
Go

package channelserver
import (
"testing"
)
func TestPlayerStruct(t *testing.T) {
player := Player{
CharName: "TestPlayer",
QuestID: 5,
}
if player.CharName != "TestPlayer" {
t.Errorf("CharName = %s, want TestPlayer", player.CharName)
}
if player.QuestID != 5 {
t.Errorf("QuestID = %d, want 5", player.QuestID)
}
}
func TestGetPlayerSlice_EmptyServer(t *testing.T) {
server := createMockServer()
server.Channels = []*Server{}
players := getPlayerSlice(server)
if len(players) != 0 {
t.Errorf("Expected 0 players, got %d", len(players))
}
}
func TestGetPlayerSlice_WithChannel(t *testing.T) {
server := createMockServer()
// Create a channel with stages
channel := &Server{
stages: make(map[string]*Stage),
}
// Create a stage with clients
stage := NewStage("test_stage")
session := createMockSession(1, server)
session.Name = "Player1"
stage.clients[session] = session.charID
channel.stages["test_stage"] = stage
server.Channels = []*Server{channel}
players := getPlayerSlice(server)
if len(players) != 1 {
t.Errorf("Expected 1 player, got %d", len(players))
}
if len(players) > 0 && players[0].CharName != "Player1" {
t.Errorf("Expected CharName Player1, got %s", players[0].CharName)
}
}
func TestGetPlayerSlice_MultiplePlayersMultipleStages(t *testing.T) {
server := createMockServer()
channel := &Server{
stages: make(map[string]*Stage),
}
// Stage 1 with one player
stage1 := NewStage("stage1")
session1 := createMockSession(1, server)
session1.Name = "Player1"
stage1.clients[session1] = session1.charID
channel.stages["stage1"] = stage1
// Stage 2 with two players
stage2 := NewStage("stage2")
session2 := createMockSession(2, server)
session2.Name = "Player2"
session3 := createMockSession(3, server)
session3.Name = "Player3"
stage2.clients[session2] = session2.charID
stage2.clients[session3] = session3.charID
channel.stages["stage2"] = stage2
server.Channels = []*Server{channel}
players := getPlayerSlice(server)
if len(players) != 3 {
t.Errorf("Expected 3 players, got %d", len(players))
}
}
func TestGetPlayerSlice_EmptyStage(t *testing.T) {
server := createMockServer()
channel := &Server{
stages: make(map[string]*Stage),
}
// Empty stage (no clients)
emptyStage := NewStage("empty_stage")
channel.stages["empty_stage"] = emptyStage
server.Channels = []*Server{channel}
players := getPlayerSlice(server)
if len(players) != 0 {
t.Errorf("Expected 0 players from empty stage, got %d", len(players))
}
}
func TestGetCharacterList_EmptyServer(t *testing.T) {
server := createMockServer()
server.Channels = []*Server{}
result := getCharacterList(server)
expected := "===== Online: 0 =====\n"
if result != expected {
t.Errorf("Expected %q, got %q", expected, result)
}
}
func TestGetCharacterList_WithPlayers(t *testing.T) {
server := createMockServer()
channel := &Server{
stages: make(map[string]*Stage),
}
stage := NewStage("lobby")
session := createMockSession(1, server)
session.Name = "Hunter1"
stage.clients[session] = session.charID
channel.stages["lobby"] = stage
server.Channels = []*Server{channel}
result := getCharacterList(server)
// Should contain the online count
if len(result) == 0 {
t.Error("Expected non-empty result")
}
// Should contain "Online: 1"
if !contains(result, "Online: 1") {
t.Errorf("Expected result to contain 'Online: 1', got %q", result)
}
}
func contains(s, substr string) bool {
return len(s) >= len(substr) && (s == substr || len(s) > 0 && containsAt(s, substr))
}
func containsAt(s, substr string) bool {
for i := 0; i <= len(s)-len(substr); i++ {
if s[i:i+len(substr)] == substr {
return true
}
}
return false
}