From eecc12c98022c1dce4a228914887ed328b1774c2 Mon Sep 17 00:00:00 2001
From: Jonathan Rascher <jon@bcat.name>
Date: Tue, 8 Jun 2021 10:47:23 -0500
Subject: [PATCH] test(combo): Add unit test for complete long combo

---
 .../events.patterns                           |  1 +
 .../keycode_events.snapshot                   |  2 +
 .../native_posix.keymap                       | 39 +++++++++++++++++++
 3 files changed, 42 insertions(+)
 create mode 100644 app/tests/combo/press-release-long-combo-complete/events.patterns
 create mode 100644 app/tests/combo/press-release-long-combo-complete/keycode_events.snapshot
 create mode 100644 app/tests/combo/press-release-long-combo-complete/native_posix.keymap

diff --git a/app/tests/combo/press-release-long-combo-complete/events.patterns b/app/tests/combo/press-release-long-combo-complete/events.patterns
new file mode 100644
index 00000000..b1342af4
--- /dev/null
+++ b/app/tests/combo/press-release-long-combo-complete/events.patterns
@@ -0,0 +1 @@
+s/.*hid_listener_keycode_//p
diff --git a/app/tests/combo/press-release-long-combo-complete/keycode_events.snapshot b/app/tests/combo/press-release-long-combo-complete/keycode_events.snapshot
new file mode 100644
index 00000000..a9618a6c
--- /dev/null
+++ b/app/tests/combo/press-release-long-combo-complete/keycode_events.snapshot
@@ -0,0 +1,2 @@
+pressed: usage_page 0x07 keycode 0x1d implicit_mods 0x00 explicit_mods 0x00
+released: usage_page 0x07 keycode 0x1d implicit_mods 0x00 explicit_mods 0x00
diff --git a/app/tests/combo/press-release-long-combo-complete/native_posix.keymap b/app/tests/combo/press-release-long-combo-complete/native_posix.keymap
new file mode 100644
index 00000000..2a71ad32
--- /dev/null
+++ b/app/tests/combo/press-release-long-combo-complete/native_posix.keymap
@@ -0,0 +1,39 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+/ {
+	combos {
+		compatible = "zmk,combos";
+		combo_one {
+			timeout-ms = <80>;
+			key-positions = <0 1 2 3>;
+			bindings = <&kp Z>;
+		};
+	};
+
+	keymap {
+		compatible = "zmk,keymap";
+		label ="Default keymap";
+
+		default_layer {
+			bindings = <
+				&kp A &kp B
+				&kp C &kp D
+			>;
+		};
+	};
+};
+
+&kscan {
+	events = <
+		ZMK_MOCK_PRESS(1,1,10)
+		ZMK_MOCK_PRESS(0,1,10)
+		ZMK_MOCK_PRESS(1,0,10)
+		ZMK_MOCK_PRESS(0,0,10)
+		ZMK_MOCK_RELEASE(0,0,100)
+		ZMK_MOCK_RELEASE(1,0,100)
+		ZMK_MOCK_RELEASE(0,1,100)
+		ZMK_MOCK_RELEASE(1,1,100)
+	>;
+};