Темизация: adaptive цвета чата, context menu, attachment picker, auth + instant отклик DarkMode кнопки

This commit is contained in:
2026-04-05 12:16:24 +05:00
parent a72a1bd6c9
commit d65624ad35
21 changed files with 803 additions and 159 deletions

View File

@@ -2,12 +2,23 @@ import XCTest
@testable import Rosetta
final class CallPacketParityTests: XCTestCase {
func testSignalPeerRoundTripForCallKeyExchangeAndCreateRoom() throws {
func testSignalPeerRoundTripForLegacyCallAcceptEndCallAndKeyExchange() throws {
let call = PacketSignalPeer(
src: "02caller",
dst: "02callee",
sharedPublic: "",
signalType: .call,
callId: "call-123",
joinToken: "join-123",
roomId: ""
)
let accept = PacketSignalPeer(
src: "02callee",
dst: "02caller",
sharedPublic: "",
signalType: .accept,
callId: "call-123",
joinToken: "join-123",
roomId: ""
)
let keyExchange = PacketSignalPeer(
@@ -15,14 +26,18 @@ final class CallPacketParityTests: XCTestCase {
dst: "02caller",
sharedPublic: "abcdef012345",
signalType: .keyExchange,
callId: "",
joinToken: "",
roomId: ""
)
let createRoom = PacketSignalPeer(
let endCall = PacketSignalPeer(
src: "02caller",
dst: "02callee",
sharedPublic: "",
signalType: .createRoom,
roomId: "room-42"
signalType: .endCall,
callId: "call-123",
joinToken: "join-123",
roomId: ""
)
let decodedCall = try decodeSignal(call)
@@ -30,29 +45,67 @@ final class CallPacketParityTests: XCTestCase {
XCTAssertEqual(decodedCall.src, "02caller")
XCTAssertEqual(decodedCall.dst, "02callee")
XCTAssertEqual(decodedCall.sharedPublic, "")
XCTAssertEqual(decodedCall.callId, "call-123")
XCTAssertEqual(decodedCall.joinToken, "join-123")
XCTAssertEqual(decodedCall.roomId, "")
let decodedAccept = try decodeSignal(accept)
XCTAssertEqual(decodedAccept.signalType, .accept)
XCTAssertEqual(decodedAccept.callId, "call-123")
XCTAssertEqual(decodedAccept.joinToken, "join-123")
let decodedKeyExchange = try decodeSignal(keyExchange)
XCTAssertEqual(decodedKeyExchange.signalType, .keyExchange)
XCTAssertEqual(decodedKeyExchange.src, "02callee")
XCTAssertEqual(decodedKeyExchange.dst, "02caller")
XCTAssertEqual(decodedKeyExchange.sharedPublic, "abcdef012345")
XCTAssertEqual(decodedKeyExchange.callId, "")
XCTAssertEqual(decodedKeyExchange.joinToken, "")
XCTAssertEqual(decodedKeyExchange.roomId, "")
let decodedEndCall = try decodeSignal(endCall)
XCTAssertEqual(decodedEndCall.signalType, .endCall)
XCTAssertEqual(decodedEndCall.callId, "call-123")
XCTAssertEqual(decodedEndCall.joinToken, "join-123")
}
func testSignalCodeFourRoundTripForLegacyActiveAndCreateRoomFallback() throws {
let legacyActive = PacketSignalPeer(
src: "02caller",
dst: "02callee",
sharedPublic: "",
signalType: .createRoom,
callId: "",
joinToken: "",
roomId: ""
)
let createRoom = PacketSignalPeer(
src: "02caller",
dst: "02callee",
sharedPublic: "",
signalType: .createRoom,
callId: "",
joinToken: "",
roomId: "room-42"
)
let decodedLegacyActive = try decodeSignal(legacyActive)
XCTAssertEqual(decodedLegacyActive.signalType, .createRoom)
XCTAssertEqual(decodedLegacyActive.roomId, "")
let decodedCreateRoom = try decodeSignal(createRoom)
XCTAssertEqual(decodedCreateRoom.signalType, .createRoom)
XCTAssertEqual(decodedCreateRoom.src, "02caller")
XCTAssertEqual(decodedCreateRoom.dst, "02callee")
XCTAssertEqual(decodedCreateRoom.sharedPublic, "")
XCTAssertEqual(decodedCreateRoom.roomId, "room-42")
}
func testSignalPeerRoundTripForBusyAndPeerDisconnectedShortFormat() throws {
func testSignalPeerRoundTripForBusyPeerDisconnectedAndRingingTimeoutShortFormat() throws {
let busy = PacketSignalPeer(
src: "02should-not-be-sent",
dst: "02should-not-be-sent",
sharedPublic: "ignored",
signalType: .endCallBecauseBusy,
callId: "ignored",
joinToken: "ignored",
roomId: "ignored-room"
)
let disconnected = PacketSignalPeer(
@@ -60,6 +113,17 @@ final class CallPacketParityTests: XCTestCase {
dst: "02should-not-be-sent",
sharedPublic: "ignored",
signalType: .endCallBecausePeerDisconnected,
callId: "ignored",
joinToken: "ignored",
roomId: "ignored-room"
)
let ringingTimeout = PacketSignalPeer(
src: "02should-not-be-sent",
dst: "02should-not-be-sent",
sharedPublic: "ignored",
signalType: .ringingTimeout,
callId: "ignored",
joinToken: "ignored",
roomId: "ignored-room"
)
@@ -68,6 +132,8 @@ final class CallPacketParityTests: XCTestCase {
XCTAssertEqual(decodedBusy.src, "")
XCTAssertEqual(decodedBusy.dst, "")
XCTAssertEqual(decodedBusy.sharedPublic, "")
XCTAssertEqual(decodedBusy.callId, "")
XCTAssertEqual(decodedBusy.joinToken, "")
XCTAssertEqual(decodedBusy.roomId, "")
let decodedDisconnected = try decodeSignal(disconnected)
@@ -75,7 +141,18 @@ final class CallPacketParityTests: XCTestCase {
XCTAssertEqual(decodedDisconnected.src, "")
XCTAssertEqual(decodedDisconnected.dst, "")
XCTAssertEqual(decodedDisconnected.sharedPublic, "")
XCTAssertEqual(decodedDisconnected.callId, "")
XCTAssertEqual(decodedDisconnected.joinToken, "")
XCTAssertEqual(decodedDisconnected.roomId, "")
let decodedTimeout = try decodeSignal(ringingTimeout)
XCTAssertEqual(decodedTimeout.signalType, .ringingTimeout)
XCTAssertEqual(decodedTimeout.src, "")
XCTAssertEqual(decodedTimeout.dst, "")
XCTAssertEqual(decodedTimeout.sharedPublic, "")
XCTAssertEqual(decodedTimeout.callId, "")
XCTAssertEqual(decodedTimeout.joinToken, "")
XCTAssertEqual(decodedTimeout.roomId, "")
}
func testWebRtcRoundTripForOfferAnswerAndIceCandidate() throws {