mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-08-08 06:56:10 +00:00
Merge cd749765711e2297b8848ac3895d53b2098566e1 into 1f59e814f90c3f489f48d68262cb1bf640bf6181
This commit is contained in:
commit
b865196f80
84
bitchatTests/Utils/PeerDisplayNameResolverTests.swift
Normal file
84
bitchatTests/Utils/PeerDisplayNameResolverTests.swift
Normal file
@ -0,0 +1,84 @@
|
||||
//
|
||||
// PeerDisplayNameResolverTests.swift
|
||||
// bitchatTests
|
||||
//
|
||||
// Tests for PeerDisplayNameResolver nickname-collision suffixing
|
||||
//
|
||||
|
||||
import Testing
|
||||
import BitFoundation
|
||||
@testable import bitchat
|
||||
|
||||
struct PeerDisplayNameResolverTests {
|
||||
|
||||
@Test func uniqueNicknamesPassThroughUnchanged() {
|
||||
let alice = PeerID(str: "aaaa000000000000")
|
||||
let bob = PeerID(str: "bbbb000000000000")
|
||||
|
||||
let result = PeerDisplayNameResolver.resolve(
|
||||
[
|
||||
(peerID: alice, nickname: "alice", isConnected: true),
|
||||
(peerID: bob, nickname: "bob", isConnected: true),
|
||||
],
|
||||
selfNickname: "me"
|
||||
)
|
||||
|
||||
#expect(result[alice] == "alice")
|
||||
#expect(result[bob] == "bob")
|
||||
}
|
||||
|
||||
@Test func connectedCollisionSuffixesBothPeers() {
|
||||
let first = PeerID(str: "1111000000000000")
|
||||
let second = PeerID(str: "2222000000000000")
|
||||
|
||||
let result = PeerDisplayNameResolver.resolve(
|
||||
[
|
||||
(peerID: first, nickname: "sam", isConnected: true),
|
||||
(peerID: second, nickname: "sam", isConnected: true),
|
||||
],
|
||||
selfNickname: "me"
|
||||
)
|
||||
|
||||
#expect(result[first] == "sam#" + String(first.id.prefix(4)))
|
||||
#expect(result[second] == "sam#" + String(second.id.prefix(4)))
|
||||
}
|
||||
|
||||
@Test func disconnectedPeerIsExemptFromSuffixingAndFromCollisionCounting() {
|
||||
let connectedA = PeerID(str: "aaaa000000000000")
|
||||
let connectedB = PeerID(str: "bbbb000000000000")
|
||||
let disconnected = PeerID(str: "cccc000000000000")
|
||||
|
||||
let result = PeerDisplayNameResolver.resolve(
|
||||
[
|
||||
(peerID: connectedA, nickname: "sam", isConnected: true),
|
||||
(peerID: connectedB, nickname: "sam", isConnected: true),
|
||||
(peerID: disconnected, nickname: "sam", isConnected: false),
|
||||
],
|
||||
selfNickname: "me"
|
||||
)
|
||||
|
||||
// The two connected peers still collide with each other and get suffixed.
|
||||
#expect(result[connectedA] == "sam#" + String(connectedA.id.prefix(4)))
|
||||
#expect(result[connectedB] == "sam#" + String(connectedB.id.prefix(4)))
|
||||
// The disconnected peer is never suffixed, regardless of collisions.
|
||||
#expect(result[disconnected] == "sam")
|
||||
}
|
||||
|
||||
@Test func selfNicknameTriggersSuffixOnLoneRemotePeer() {
|
||||
// Only one remote peer shares the nickname, but it collides with the
|
||||
// local user's own current nickname, so it still gets suffixed.
|
||||
let remote = PeerID(str: "dddd000000000000")
|
||||
|
||||
let result = PeerDisplayNameResolver.resolve(
|
||||
[(peerID: remote, nickname: "me", isConnected: true)],
|
||||
selfNickname: "me"
|
||||
)
|
||||
|
||||
#expect(result[remote] == "me#" + String(remote.id.prefix(4)))
|
||||
}
|
||||
|
||||
@Test func emptyPeerListReturnsEmptyMap() {
|
||||
let result = PeerDisplayNameResolver.resolve([], selfNickname: "me")
|
||||
#expect(result.isEmpty)
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user