Skip to content

Commit 8ad91c8

Browse files
committed
add EventEmitterTests
1 parent 25e93f1 commit 8ad91c8

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
//
2+
// EventEmitterTests.swift
3+
// Supabase
4+
//
5+
// Created by Guilherme Souza on 15/10/24.
6+
//
7+
8+
import ConcurrencyExtras
9+
import XCTest
10+
11+
@testable import Helpers
12+
13+
final class EventEmitterTests: XCTestCase {
14+
15+
func testBasics() {
16+
let sut = EventEmitter(initialEvent: "0")
17+
XCTAssertTrue(sut.emitsLastEventWhenAttaching)
18+
19+
XCTAssertEqual(sut.lastEvent, "0")
20+
21+
let receivedEvents = LockIsolated<[String]>([])
22+
23+
let tokenA = sut.attach { value in
24+
receivedEvents.withValue { $0.append("a" + value) }
25+
}
26+
27+
let tokenB = sut.attach { value in
28+
receivedEvents.withValue { $0.append("b" + value) }
29+
}
30+
31+
sut.emit("1")
32+
sut.emit("2")
33+
sut.emit("3")
34+
sut.emit("4")
35+
36+
sut.emit("5", to: tokenA)
37+
sut.emit("6", to: tokenB)
38+
39+
tokenA.cancel()
40+
41+
sut.emit("7")
42+
sut.emit("8")
43+
44+
XCTAssertEqual(sut.lastEvent, "8")
45+
46+
XCTAssertEqual(
47+
receivedEvents.value,
48+
["a0", "b0", "a1", "b1", "a2", "b2", "a3", "b3", "a4", "b4", "a5", "b6", "b7", "b8"]
49+
)
50+
}
51+
52+
func test_dontEmitLastEventWhenAttaching() {
53+
let sut = EventEmitter(initialEvent: "0", emitsLastEventWhenAttaching: false)
54+
XCTAssertFalse(sut.emitsLastEventWhenAttaching)
55+
56+
let receivedEvent = LockIsolated<[String]>([])
57+
let token = sut.attach { value in
58+
receivedEvent.withValue { $0.append(value) }
59+
}
60+
61+
sut.emit("1")
62+
63+
XCTAssertEqual(receivedEvent.value, ["1"])
64+
65+
token.cancel()
66+
}
67+
}

0 commit comments

Comments
 (0)