@@ -39,6 +39,146 @@ class ConfigTriggerDelegateTest {
3939 mockedKeyEvent.close()
4040 }
4141
42+ @Test
43+ fun `set click type to long press when adding power button by key event to empty trigger` () {
44+ val trigger = Trigger ()
45+
46+ val newTrigger = delegate.addKeyEventTriggerKey(
47+ trigger,
48+ keyCode = KeyEvent .KEYCODE_POWER ,
49+ scanCode = Scancode .KEY_POWER ,
50+ device = KeyEventTriggerDevice .Internal ,
51+ requiresIme = false ,
52+ )
53+
54+ assertThat(newTrigger.keys, hasSize(1 ))
55+ assertThat(newTrigger.keys[0 ].clickType, `is `(ClickType .LONG_PRESS ))
56+ }
57+
58+ @Test
59+ fun `set click type to long press when adding KEY_POWER by evdev event to empty trigger` () {
60+ val trigger = Trigger ()
61+ val device = EvdevDeviceInfo (
62+ name = " Power Button" ,
63+ bus = 0 ,
64+ vendor = 1 ,
65+ product = 2 ,
66+ )
67+
68+ val newTrigger = delegate.addEvdevTriggerKey(
69+ trigger,
70+ keyCode = KeyEvent .KEYCODE_POWER ,
71+ scanCode = Scancode .KEY_POWER ,
72+ device = device,
73+ )
74+
75+ assertThat(newTrigger.keys, hasSize(1 ))
76+ assertThat(newTrigger.keys[0 ].clickType, `is `(ClickType .LONG_PRESS ))
77+ }
78+
79+ @Test
80+ fun `set click type to long press when adding KEY_POWER2 by evdev event to empty trigger` () {
81+ val trigger = Trigger ()
82+ val device = EvdevDeviceInfo (
83+ name = " Power Button" ,
84+ bus = 0 ,
85+ vendor = 1 ,
86+ product = 2 ,
87+ )
88+
89+ val newTrigger = delegate.addEvdevTriggerKey(
90+ trigger,
91+ keyCode = KeyEvent .KEYCODE_POWER ,
92+ scanCode = Scancode .KEY_POWER2 ,
93+ device = device,
94+ )
95+
96+ assertThat(newTrigger.keys, hasSize(1 ))
97+ assertThat(newTrigger.keys[0 ].clickType, `is `(ClickType .LONG_PRESS ))
98+ }
99+
100+ @Test
101+ fun `set click type to long press when adding TV power button by evdev event to empty trigger` () {
102+ val trigger = Trigger ()
103+ val device = EvdevDeviceInfo (
104+ name = " TV Remote" ,
105+ bus = 0 ,
106+ vendor = 1 ,
107+ product = 2 ,
108+ )
109+
110+ val newTrigger = delegate.addEvdevTriggerKey(
111+ trigger,
112+ keyCode = KeyEvent .KEYCODE_TV_POWER ,
113+ scanCode = Scancode .KEY_POWER ,
114+ device = device,
115+ )
116+
117+ assertThat(newTrigger.keys, hasSize(1 ))
118+ assertThat(newTrigger.keys[0 ].clickType, `is `(ClickType .LONG_PRESS ))
119+ }
120+
121+ @Test
122+ fun `set click type to long press when adding power button to parallel trigger` () {
123+ val trigger = parallelTrigger(
124+ KeyEventTriggerKey (
125+ keyCode = KeyEvent .KEYCODE_VOLUME_DOWN ,
126+ scanCode = Scancode .KEY_VOLUMEDOWN ,
127+ device = KeyEventTriggerDevice .Internal ,
128+ clickType = ClickType .SHORT_PRESS ,
129+ detectWithScanCodeUserSetting = true
130+ ),
131+ KeyEventTriggerKey (
132+ keyCode = KeyEvent .KEYCODE_VOLUME_UP ,
133+ scanCode = Scancode .KEY_VOLUMEUP ,
134+ device = KeyEventTriggerDevice .Internal ,
135+ clickType = ClickType .SHORT_PRESS ,
136+ detectWithScanCodeUserSetting = true
137+ ),
138+ )
139+
140+ val newTrigger = delegate.addKeyEventTriggerKey(
141+ trigger,
142+ keyCode = KeyEvent .KEYCODE_POWER ,
143+ scanCode = Scancode .KEY_POWER ,
144+ device = KeyEventTriggerDevice .Internal ,
145+ requiresIme = false ,
146+ )
147+
148+ assertThat(newTrigger.keys, hasSize(3 ))
149+ assertThat((newTrigger.mode as TriggerMode .Parallel ).clickType, `is `(ClickType .LONG_PRESS ))
150+ assertThat(newTrigger.keys[2 ].clickType, `is `(ClickType .LONG_PRESS ))
151+ }
152+
153+ @Test
154+ fun `set click type to long press when adding power button to sequence trigger` () {
155+ val trigger = sequenceTrigger(
156+ KeyEventTriggerKey (
157+ keyCode = KeyEvent .KEYCODE_VOLUME_DOWN ,
158+ scanCode = Scancode .KEY_VOLUMEDOWN ,
159+ device = KeyEventTriggerDevice .Internal ,
160+ clickType = ClickType .SHORT_PRESS ,
161+ detectWithScanCodeUserSetting = true
162+ ),
163+ AssistantTriggerKey (
164+ type = AssistantTriggerType .ANY ,
165+ clickType = ClickType .SHORT_PRESS ,
166+ )
167+ )
168+
169+ val newTrigger = delegate.addKeyEventTriggerKey(
170+ trigger,
171+ keyCode = KeyEvent .KEYCODE_POWER ,
172+ scanCode = Scancode .KEY_POWER ,
173+ device = KeyEventTriggerDevice .Internal ,
174+ requiresIme = false ,
175+ )
176+
177+ assertThat(newTrigger.keys, hasSize(3 ))
178+ assertThat(newTrigger.mode, `is `(TriggerMode .Sequence ))
179+ assertThat(newTrigger.keys[2 ].clickType, `is `(ClickType .LONG_PRESS ))
180+ }
181+
42182 @Test
43183 fun `Remove keys with the same scan code if scan code detection is enabled when switching to a parallel trigger` () {
44184 val key = KeyEventTriggerKey (
0 commit comments