42 lines
1.1 KiB
Swift
42 lines
1.1 KiB
Swift
//
|
|
// MemoryTests.swift
|
|
// FirebladeECS
|
|
//
|
|
// Created by Christian Treffs on 09.10.17.
|
|
//
|
|
import XCTest
|
|
@testable import FirebladeECS
|
|
|
|
class MemoryTests: XCTestCase {
|
|
|
|
func testCheckRetainCount() {
|
|
|
|
class MyClass {}
|
|
let myClass = MyClass()
|
|
|
|
let initalCount: Int = FirebladeECS.retainCount(myClass)
|
|
XCTAssert(initalCount == 3)
|
|
|
|
let ownerdSelf: MyClass = myClass
|
|
_ = ownerdSelf // creates strong reference
|
|
let ownedOnceCount: Int = FirebladeECS.retainCount(myClass)
|
|
XCTAssert(ownedOnceCount == initalCount + 1) // 4
|
|
|
|
unowned let unownedSelf: MyClass = myClass
|
|
_ = unownedSelf // creates unowned refrerence
|
|
let unownedOnceCount: Int = FirebladeECS.retainCount(myClass)
|
|
let unownedCount: Int = FirebladeECS.retainCount(unownedSelf)
|
|
XCTAssert(ownedOnceCount == unownedCount)
|
|
XCTAssert(ownedOnceCount == unownedOnceCount)
|
|
|
|
weak var weakSelf: MyClass? = myClass
|
|
_ = weakSelf // creates weak refrerence
|
|
let weakOnceCount: Int = FirebladeECS.retainCount(myClass)
|
|
let weakCount: Int = FirebladeECS.retainCount(weakSelf)
|
|
XCTAssert(ownedOnceCount == weakCount)
|
|
XCTAssert(ownedOnceCount == weakOnceCount)
|
|
|
|
}
|
|
|
|
}
|