about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--term.c22
2 files changed, 22 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index ac361d1..46d50ac 100644
--- a/Makefile
+++ b/Makefile
@@ -25,6 +25,7 @@ OBJS += ui.o
 OBJS += url.o
 
 TESTS += format.t
+TESTS += term.t
 
 all: tags chatte
 
diff --git a/term.c b/term.c
index 0b35499..2be9c16 100644
--- a/term.c
+++ b/term.c
@@ -21,7 +21,6 @@
 
 #include "chat.h"
 
-
 static bool xterm;
 
 void termInit(void) {
@@ -67,3 +66,24 @@ enum TermEvent termEvent(char ch) {
 		default:        state = 0; return 0;
 	}
 }
+
+#ifdef TEST
+#include <assert.h>
+
+static bool testEvent(const char *str, enum TermEvent event) {
+	enum TermEvent e = TermNone;
+	for (size_t i = 0; i < strlen(str); ++i) {
+		if (e) return false;
+		e = termEvent(str[i]);
+	}
+	return (e == event);
+}
+
+int main() {
+	assert(testEvent("\33[I", TermFocusIn));
+	assert(testEvent("\33[O", TermFocusOut));
+	assert(testEvent("\33[200~", TermPasteStart));
+	assert(testEvent("\33[201~", TermPasteEnd));
+}
+
+#endif