mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-08 08:31:13 +00:00
260 lines
9.6 KiB
Swift
260 lines
9.6 KiB
Swift
import UIKit
|
|
import XCTest
|
|
import SwiftSignalKit
|
|
|
|
class SwiftSignalKitTests: XCTestCase {
|
|
override func setUp() {
|
|
super.setUp()
|
|
}
|
|
|
|
override func tearDown() {
|
|
super.tearDown()
|
|
}
|
|
|
|
func testActionDisposableDisposed() {
|
|
var deallocated = false
|
|
var disposed = false
|
|
if true {
|
|
var object: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated)
|
|
let disposable = ActionDisposable(action: { [object] () -> Void in
|
|
object.debugDescription
|
|
disposed = true
|
|
})
|
|
object = nil
|
|
XCTAssertFalse(deallocated, "deallocated != false")
|
|
disposable.dispose()
|
|
}
|
|
|
|
XCTAssertTrue(deallocated, "deallocated != true")
|
|
XCTAssertTrue(disposed, "disposed != true")
|
|
}
|
|
|
|
func testActionDisposableNotDisposed() {
|
|
var deallocated = false
|
|
var disposed = false
|
|
if true {
|
|
var object: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated)
|
|
let disposable = ActionDisposable(action: { [object] () -> Void in
|
|
object.debugDescription
|
|
disposed = true
|
|
})
|
|
}
|
|
XCTAssertTrue(deallocated, "deallocated != true")
|
|
XCTAssertFalse(disposed, "disposed != false")
|
|
}
|
|
|
|
func testMetaDisposableDisposed() {
|
|
var deallocated = false
|
|
var disposed = false
|
|
if true {
|
|
var object: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated)
|
|
let disposable = ActionDisposable(action: { [object] () -> Void in
|
|
object.debugDescription
|
|
disposed = true
|
|
})
|
|
|
|
let metaDisposable = MetaDisposable()
|
|
metaDisposable.set(disposable)
|
|
metaDisposable.dispose()
|
|
}
|
|
XCTAssertTrue(deallocated, "deallocated != true")
|
|
XCTAssertTrue(disposed, "disposed != true")
|
|
}
|
|
|
|
func testMetaDisposableDisposedMultipleTimes() {
|
|
var deallocated1 = false
|
|
var disposed1 = false
|
|
var deallocated2 = false
|
|
var disposed2 = false
|
|
if true {
|
|
var object1: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated1)
|
|
let actionDisposable1 = ActionDisposable(action: { [object1] () -> Void in
|
|
object1.debugDescription
|
|
disposed1 = true
|
|
})
|
|
|
|
var object2: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated2)
|
|
let actionDisposable2 = ActionDisposable(action: { [object2] () -> Void in
|
|
object2.debugDescription
|
|
disposed2 = true
|
|
})
|
|
|
|
let metaDisposable = MetaDisposable()
|
|
metaDisposable.set(actionDisposable1)
|
|
metaDisposable.set(actionDisposable2)
|
|
metaDisposable.dispose()
|
|
}
|
|
XCTAssertTrue(deallocated1, "deallocated1 != true")
|
|
XCTAssertTrue(disposed1, "disposed1 != true")
|
|
XCTAssertTrue(deallocated2, "deallocated2 != true")
|
|
XCTAssertTrue(disposed2, "disposed2 != true")
|
|
}
|
|
|
|
func testMetaDisposableNotDisposed() {
|
|
var deallocated = false
|
|
var disposed = false
|
|
if true {
|
|
var object: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated)
|
|
let disposable = ActionDisposable(action: { [object] () -> Void in
|
|
object.debugDescription
|
|
disposed = true
|
|
})
|
|
|
|
let metaDisposable = MetaDisposable()
|
|
metaDisposable.set(disposable)
|
|
}
|
|
XCTAssertTrue(deallocated, "deallocated != true")
|
|
XCTAssertFalse(disposed, "disposed != false")
|
|
}
|
|
|
|
func testDisposableSetSingleDisposed() {
|
|
var deallocated = false
|
|
var disposed = false
|
|
if true {
|
|
var object: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated)
|
|
let disposable = ActionDisposable(action: { [object] () -> Void in
|
|
object.debugDescription
|
|
disposed = true
|
|
})
|
|
|
|
let disposableSet = DisposableSet()
|
|
disposableSet.add(disposable)
|
|
disposableSet.dispose()
|
|
}
|
|
XCTAssertTrue(deallocated, "deallocated != true")
|
|
XCTAssertTrue(disposed, "disposed != true")
|
|
}
|
|
|
|
func testDisposableSetMultipleDisposed() {
|
|
var deallocated1 = false
|
|
var disposed1 = false
|
|
var deallocated2 = false
|
|
var disposed2 = false
|
|
if true {
|
|
var object1: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated1)
|
|
let actionDisposable1 = ActionDisposable(action: { [object1] () -> Void in
|
|
object1.debugDescription
|
|
disposed1 = true
|
|
})
|
|
|
|
var object2: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated2)
|
|
let actionDisposable2 = ActionDisposable(action: { [object2] () -> Void in
|
|
object2.debugDescription
|
|
disposed2 = true
|
|
})
|
|
|
|
let disposableSet = DisposableSet()
|
|
disposableSet.add(actionDisposable1)
|
|
disposableSet.add(actionDisposable2)
|
|
disposableSet.dispose()
|
|
}
|
|
XCTAssertTrue(deallocated1, "deallocated1 != true")
|
|
XCTAssertTrue(disposed1, "disposed1 != true")
|
|
XCTAssertTrue(deallocated2, "deallocated2 != true")
|
|
XCTAssertTrue(disposed2, "disposed2 != true")
|
|
}
|
|
|
|
func testDisposableSetSingleNotDisposed() {
|
|
var deallocated = false
|
|
var disposed = false
|
|
if true {
|
|
var object: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated)
|
|
let disposable = ActionDisposable(action: { [object] () -> Void in
|
|
object.debugDescription
|
|
disposed = true
|
|
})
|
|
|
|
let disposableSet = DisposableSet()
|
|
disposableSet.add(disposable)
|
|
}
|
|
XCTAssertTrue(deallocated, "deallocated != true")
|
|
XCTAssertFalse(disposed, "disposed != false")
|
|
}
|
|
|
|
func testDisposableSetMultipleNotDisposed() {
|
|
var deallocated1 = false
|
|
var disposed1 = false
|
|
var deallocated2 = false
|
|
var disposed2 = false
|
|
if true {
|
|
var object1: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated1)
|
|
let actionDisposable1 = ActionDisposable(action: { [object1] () -> Void in
|
|
object1.debugDescription
|
|
disposed1 = true
|
|
})
|
|
|
|
var object2: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated2)
|
|
let actionDisposable2 = ActionDisposable(action: { [object2] () -> Void in
|
|
object2.debugDescription
|
|
disposed2 = true
|
|
})
|
|
|
|
let disposableSet = DisposableSet()
|
|
disposableSet.add(actionDisposable1)
|
|
disposableSet.add(actionDisposable2)
|
|
}
|
|
XCTAssertTrue(deallocated1, "deallocated1 != true")
|
|
XCTAssertFalse(disposed1, "disposed1 != false")
|
|
XCTAssertTrue(deallocated2, "deallocated2 != true")
|
|
XCTAssertFalse(disposed2, "disposed2 != false")
|
|
}
|
|
|
|
func testMetaDisposableAlreadyDisposed() {
|
|
var deallocated1 = false
|
|
var disposed1 = false
|
|
var deallocated2 = false
|
|
var disposed2 = false
|
|
if true {
|
|
var object1: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated1)
|
|
let actionDisposable1 = ActionDisposable(action: { [object1] () -> Void in
|
|
object1.debugDescription
|
|
disposed1 = true
|
|
})
|
|
|
|
var object2: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated2)
|
|
let actionDisposable2 = ActionDisposable(action: { [object2] () -> Void in
|
|
object2.debugDescription
|
|
disposed2 = true
|
|
})
|
|
|
|
let metaDisposable = MetaDisposable()
|
|
metaDisposable.set(actionDisposable1)
|
|
metaDisposable.dispose()
|
|
metaDisposable.set(actionDisposable2)
|
|
}
|
|
XCTAssertTrue(deallocated1, "deallocated1 != true")
|
|
XCTAssertTrue(disposed1, "disposed1 != true")
|
|
XCTAssertTrue(deallocated2, "deallocated2 != true")
|
|
XCTAssertTrue(disposed2, "disposed2 != true")
|
|
}
|
|
|
|
func testDisposableSetAlreadyDisposed() {
|
|
var deallocated1 = false
|
|
var disposed1 = false
|
|
var deallocated2 = false
|
|
var disposed2 = false
|
|
if true {
|
|
var object1: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated1)
|
|
let actionDisposable1 = ActionDisposable(action: { [object1] () -> Void in
|
|
object1.debugDescription
|
|
disposed1 = true
|
|
})
|
|
|
|
var object2: DeallocatingObject? = DeallocatingObject(deallocated: &deallocated2)
|
|
let actionDisposable2 = ActionDisposable(action: { [object2] () -> Void in
|
|
object2.debugDescription
|
|
disposed2 = true
|
|
})
|
|
|
|
let disposableSet = DisposableSet()
|
|
disposableSet.add(actionDisposable1)
|
|
disposableSet.dispose()
|
|
disposableSet.add(actionDisposable2)
|
|
}
|
|
XCTAssertTrue(deallocated1, "deallocated1 != true")
|
|
XCTAssertTrue(disposed1, "disposed1 != true")
|
|
XCTAssertTrue(deallocated2, "deallocated2 != true")
|
|
XCTAssertTrue(disposed2, "disposed2 != true")
|
|
}
|
|
}
|