mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-22 07:32:32 +01:00
Port test files from v9.2.x-stable branch to increase channelserver coverage from 13.8% to 25.6% (556 tests passing). Adapted all files to main's struct definitions: config import alias, Airou/CatDefinition rename, packet field mismatches, Raviente struct differences, and maxPlayers defaults. Removed tests referencing production code not yet on main (Player, FestivalColour, etc.). Excluded handlers_register_test.go (Raviente completely redesigned).
210 lines
4.0 KiB
Go
210 lines
4.0 KiB
Go
package channelserver
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestGuildMember_CanRecruit(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
member GuildMember
|
|
expected bool
|
|
}{
|
|
{
|
|
name: "recruiter flag true",
|
|
member: GuildMember{
|
|
Recruiter: true,
|
|
OrderIndex: 10,
|
|
IsLeader: false,
|
|
},
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "order index 1",
|
|
member: GuildMember{
|
|
Recruiter: false,
|
|
OrderIndex: 1,
|
|
IsLeader: false,
|
|
},
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "order index 2",
|
|
member: GuildMember{
|
|
Recruiter: false,
|
|
OrderIndex: 2,
|
|
IsLeader: false,
|
|
},
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "order index 3",
|
|
member: GuildMember{
|
|
Recruiter: false,
|
|
OrderIndex: 3,
|
|
IsLeader: false,
|
|
},
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "order index 0 (sub-leader)",
|
|
member: GuildMember{
|
|
Recruiter: false,
|
|
OrderIndex: 0,
|
|
IsLeader: false,
|
|
},
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "order index 4 cannot recruit",
|
|
member: GuildMember{
|
|
Recruiter: false,
|
|
OrderIndex: 4,
|
|
IsLeader: false,
|
|
},
|
|
expected: false,
|
|
},
|
|
{
|
|
name: "order index 5 cannot recruit",
|
|
member: GuildMember{
|
|
Recruiter: false,
|
|
OrderIndex: 5,
|
|
IsLeader: false,
|
|
},
|
|
expected: false,
|
|
},
|
|
{
|
|
name: "is leader can recruit",
|
|
member: GuildMember{
|
|
Recruiter: false,
|
|
OrderIndex: 100,
|
|
IsLeader: true,
|
|
},
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "regular member cannot recruit",
|
|
member: GuildMember{
|
|
Recruiter: false,
|
|
OrderIndex: 10,
|
|
IsLeader: false,
|
|
},
|
|
expected: false,
|
|
},
|
|
{
|
|
name: "all flags true",
|
|
member: GuildMember{
|
|
Recruiter: true,
|
|
OrderIndex: 1,
|
|
IsLeader: true,
|
|
},
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "high order index with leader",
|
|
member: GuildMember{
|
|
Recruiter: false,
|
|
OrderIndex: 255,
|
|
IsLeader: true,
|
|
},
|
|
expected: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := tt.member.CanRecruit()
|
|
if result != tt.expected {
|
|
t.Errorf("CanRecruit() = %v, expected %v (Recruiter=%v, OrderIndex=%d, IsLeader=%v)",
|
|
result, tt.expected, tt.member.Recruiter, tt.member.OrderIndex, tt.member.IsLeader)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestGuildMember_IsSubLeader(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
orderIndex uint16
|
|
expected bool
|
|
}{
|
|
{
|
|
name: "order index 0",
|
|
orderIndex: 0,
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "order index 1",
|
|
orderIndex: 1,
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "order index 2",
|
|
orderIndex: 2,
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "order index 3",
|
|
orderIndex: 3,
|
|
expected: true,
|
|
},
|
|
{
|
|
name: "order index 4",
|
|
orderIndex: 4,
|
|
expected: false,
|
|
},
|
|
{
|
|
name: "order index 5",
|
|
orderIndex: 5,
|
|
expected: false,
|
|
},
|
|
{
|
|
name: "order index 100",
|
|
orderIndex: 100,
|
|
expected: false,
|
|
},
|
|
{
|
|
name: "order index 255",
|
|
orderIndex: 255,
|
|
expected: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
member := GuildMember{OrderIndex: tt.orderIndex}
|
|
result := member.IsSubLeader()
|
|
if result != tt.expected {
|
|
t.Errorf("IsSubLeader() with OrderIndex=%d = %v, expected %v",
|
|
tt.orderIndex, result, tt.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestGuildMember_CanRecruit_Priority(t *testing.T) {
|
|
// Test that Recruiter flag takes priority (short-circuit)
|
|
member := GuildMember{
|
|
Recruiter: true,
|
|
OrderIndex: 100, // Would fail OrderIndex check
|
|
IsLeader: false,
|
|
}
|
|
|
|
if !member.CanRecruit() {
|
|
t.Error("Recruiter flag should allow recruiting regardless of OrderIndex")
|
|
}
|
|
}
|
|
|
|
func TestGuildMember_CanRecruit_OrderIndexBoundary(t *testing.T) {
|
|
// Test the exact boundary at OrderIndex == 3 vs 4
|
|
member3 := GuildMember{Recruiter: false, OrderIndex: 3, IsLeader: false}
|
|
member4 := GuildMember{Recruiter: false, OrderIndex: 4, IsLeader: false}
|
|
|
|
if !member3.CanRecruit() {
|
|
t.Error("OrderIndex 3 should be able to recruit")
|
|
}
|
|
if member4.CanRecruit() {
|
|
t.Error("OrderIndex 4 should NOT be able to recruit")
|
|
}
|
|
}
|