mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-28 10:32:55 +01:00
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
This commit is contained in:
163
server/channelserver/handlers_discord_test.go
Normal file
163
server/channelserver/handlers_discord_test.go
Normal file
@@ -0,0 +1,163 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user