2
2
// SPDX-License-Identifier: BSD-3-Clause
3
3
4
4
import XCTest
5
+ import WinSDK
5
6
@testable import SwiftWin32
6
7
7
8
final class MenuBuilderTests : XCTestCase {
@@ -85,8 +86,47 @@ final class MenuBuilderTests: XCTestCase {
85
86
86
87
func testBuildMenu( ) {
87
88
let view : View = View ( frame: . zero)
88
- let builder = _MenuBuilder ( for: view)
89
- XCTAssertNotNil ( ( builder? . system as? _MenuBuilder ) ? . hMenu. value)
89
+ guard let builder = _MenuBuilder ( for: view) else { return }
90
+
91
+ let hMenu = ( builder. system as? _MenuBuilder ) ? . hMenu
92
+ XCTAssertNotNil ( hMenu? . value)
93
+ XCTAssertEqual ( GetMenuItemCount ( hMenu? . value) , 0 )
94
+ }
95
+
96
+ func testBuildMenuWithChildren( ) {
97
+ let view : View = View ( frame: . zero)
98
+ guard let builder = _MenuBuilder ( for: view) else { return }
99
+
100
+ let menu = Menu ( title: " menu1 " , children: [ Command ( title: " item1 " ) { _ in } ,
101
+ Action ( title: " item2 " ) { _ in } ] )
102
+ builder. insertSibling ( menu, afterMenu: . root)
103
+ builder. setNeedsRebuild ( )
104
+
105
+ let hRootMenu = ( builder. system as? _MenuBuilder ) ? . hMenu
106
+ XCTAssertNotNil ( hRootMenu? . value)
107
+ XCTAssertEqual ( GetMenuItemCount ( hRootMenu? . value) , 1 )
108
+
109
+ let hMenu = GetSubMenu ( hRootMenu? . value, 0 )
110
+ XCTAssertNotNil ( hMenu)
111
+ XCTAssertEqual ( GetMenuItemCount ( hMenu) , 2 )
112
+ }
113
+
114
+ func testRebuildMenu( ) {
115
+ let view : View = View ( frame: . zero)
116
+ guard let builder = _MenuBuilder ( for: view) else { return }
117
+
118
+ let hMenu1 = ( builder. system as? _MenuBuilder ) ? . hMenu
119
+
120
+ let menu = Menu ( title: " title " , children: [ Command ( title: " cmd " ) { _ in } ] )
121
+ builder. insertSibling ( menu, afterMenu: . root)
122
+ builder. setNeedsRebuild ( )
123
+
124
+ let hMenu2 = ( builder. system as? _MenuBuilder ) ? . hMenu
125
+
126
+ XCTAssert ( hMenu1 === hMenu2)
127
+ XCTAssertNotNil ( hMenu1)
128
+ XCTAssertNotNil ( hMenu2)
129
+ XCTAssertEqual ( hMenu1? . value, hMenu2? . value)
90
130
}
91
131
92
132
public static var allTests = [
@@ -96,5 +136,7 @@ final class MenuBuilderTests: XCTestCase {
96
136
( " testRemove " , testRemove) ,
97
137
( " testReplace " , testReplace) ,
98
138
( " testBuildMenu " , testBuildMenu) ,
139
+ ( " testBuildMenuWithChildren " , testBuildMenuWithChildren) ,
140
+ ( " testRebuildMenu " , testRebuildMenu) ,
99
141
]
100
142
}
0 commit comments