Skip to content

Commit 5e5648a

Browse files
committed
post talk update
1 parent 65f5832 commit 5e5648a

7 files changed

Lines changed: 117 additions & 11 deletions

File tree

.swiftpm/xcode/xcshareddata/xcschemes/PropertyWrapper.xcscheme

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@
6868
buildConfiguration = "Debug"
6969
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
7070
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
71-
shouldUseLaunchSchemeArgsEnv = "YES">
71+
shouldUseLaunchSchemeArgsEnv = "YES"
72+
codeCoverageEnabled = "YES">
7273
<Testables>
7374
<TestableReference
7475
skipped = "NO">

Tests/PropertyWrapperTests/LoggingExcludedTests.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@ import XCTest
1111
class Object {
1212
@LoggingExcluded
1313
var i = 0
14+
/**
15+
// uncomment to see compile failure
16+
@LoggingExcluded
17+
weak var i2: NSObject?
18+
@LoggingExcluded
19+
unowned var i3: NSObject?
20+
@LoggingExcluded
21+
lazy var i4: NSObject?
22+
*/
1423
}
1524

1625
class LogExcludeTests: XCTestCase {

Tests/PropertyWrapperTests/NestedTests.swift

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,6 @@ final class NestedTests: XCTestCase {
3232

3333
import SwiftUI
3434

35-
struct Nested {
36-
@State
37-
@LoggingExcluded
38-
var nest1 = 0
39-
40-
@LoggingExcluded
41-
@State
42-
var nest2 = 0
43-
}
4435

4536
struct OrderDifferent {
4637
@LoggingExcluding
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
//
2+
/*
3+
* Created by 游宗諭 in 2021/2/23
4+
*
5+
* Using Swift 5.0
6+
*
7+
* Running on macOS 11.2
8+
*/
9+
10+
11+
import XCTest
12+
@propertyWrapper struct Wrapper {
13+
var wrappedValue: Int
14+
var anotherValue = 0
15+
}
16+
class ProperyObserverTests: XCTestCase {
17+
@Wrapper var i = 0 {
18+
willSet {
19+
captured.append(.willSet(newValue))
20+
}
21+
didSet {
22+
captured.append(.didSet(i))
23+
}
24+
}
25+
var captured = [Setting]()
26+
func test() {
27+
XCTAssertTrue(captured.isEmpty)
28+
_i.anotherValue = 1
29+
XCTAssertEqual(captured, [])
30+
_i.wrappedValue = 1
31+
XCTAssertEqual(captured, [])
32+
i = 1
33+
XCTAssertEqual(captured, [.willSet(1), .didSet(1)])
34+
}
35+
func testInStruct() {
36+
var owner = Owner()
37+
owner._addAnother()
38+
XCTAssertEqual(owner.captured, [])
39+
owner._addWrapped()
40+
XCTAssertEqual(owner.captured, [])
41+
owner.i = 1
42+
XCTAssertEqual(owner.captured, [.willSet(1), .didSet(1)])
43+
}
44+
}
45+
46+
enum Setting:Equatable {
47+
case didSet(Int), willSet(Int)
48+
}
49+
struct Owner {
50+
@Wrapper var i = 0 {
51+
willSet {
52+
captured.append(.willSet(newValue))
53+
}
54+
didSet {
55+
captured.append(.didSet(i))
56+
}
57+
}
58+
var captured = [Setting]()
59+
mutating func _addAnother() {
60+
_i.anotherValue += 1
61+
}
62+
mutating func _addWrapped() {
63+
_i.wrappedValue += 1
64+
}
65+
66+
}

Tests/PropertyWrapperTests/ThreadSafe/Barrier.swift.deadLock.failure

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ class BarrierTests: XCTestCase {
3737
@Atomic var lockSingleValue = 0
3838
func testLockValue() {
3939
randomQueueAsync { _ in
40-
self.lockSingleValue += 1
40+
let value = self.lockSingleValue
41+
self.lockSingleValue = 1 + value
4142
}
4243
XCTAssertEqual(lockSingleValue, expect)
4344
}

Tests/PropertyWrapperTests/ThreadSafe/Lock.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ class ThreadSaveTests: XCTestCase {
8686
}
8787
wait(for: [await], timeout: 1)
8888
XCTAssertEqual(lockDicWithArray.count, total)
89+
XCTAssertTrue(lockDicWithArray.values.allSatisfy{$0.count == total})
8990
}
9091

9192
// MARK: - help
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
//
2+
/*
3+
* Created by 游宗諭 in 2021/2/23
4+
*
5+
* Using Swift 5.0
6+
*
7+
* Running on macOS 11.2
8+
*/
9+
10+
11+
import XCTest
12+
@propertyWrapper struct GetOnly {
13+
var wrappedValue: Int {0}
14+
}
15+
class WrappedValueGetOnlyOwnerWillSetTests: XCTestCase {
16+
@GetOnly var i
17+
@GetOnly var i2 {
18+
willSet {}
19+
}
20+
@GetOnly var i3 {
21+
didSet {}
22+
}
23+
@GetOnly var i4 {
24+
willSet {}
25+
didSet {}
26+
}
27+
28+
/**
29+
//uncomment to see
30+
func test() {
31+
i = 1
32+
i2 = 2
33+
i3 = 3
34+
i4 = 4
35+
}
36+
*/
37+
}

0 commit comments

Comments
 (0)