From 59cf3adf7cdf39ebd02b39d50f948defcf5b242c Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Wed, 30 Dec 2009 04:40:04 +0100
Subject: [PATCH] Imap4flags extension: added tests for flag string management.

---
 Makefile.am                                   |  1 +
 tests/extensions/imap4flags/flagstring.svtest | 82 +++++++++++++++++++
 2 files changed, 83 insertions(+)
 create mode 100644 tests/extensions/imap4flags/flagstring.svtest

diff --git a/Makefile.am b/Makefile.am
index 095b8d96d..0ab9485d6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -60,6 +60,7 @@ test_cases = \
 	tests/extensions/imap4flags/errors.svtest \
 	tests/extensions/imap4flags/execute.svtest \
 	tests/extensions/imap4flags/multiscript.svtest \
+	tests/extensions/imap4flags/flagstring.svtest \
 	tests/extensions/imap4flags/flagstore.svtest \
 	tests/extensions/body/basic.svtest \
 	tests/extensions/body/raw.svtest \
diff --git a/tests/extensions/imap4flags/flagstring.svtest b/tests/extensions/imap4flags/flagstring.svtest
new file mode 100644
index 000000000..99c0cd209
--- /dev/null
+++ b/tests/extensions/imap4flags/flagstring.svtest
@@ -0,0 +1,82 @@
+require "vnd.dovecot.testsuite";
+require "imap4flags";
+require "variables";
+
+test "Duplicates: setflag" {
+	setflag "flags" "\\seen \\seen";
+
+	if not string "${flags}" "\\seen" {
+		test_fail "duplicate \\seen flag item not removed (1)";
+	}
+
+	setflag "flags" "\\seen $frop \\seen";
+
+	if not string "${flags}" "\\seen $frop" {
+		test_fail "duplicate \\seen flag item not removed (2)";
+	}
+
+	setflag "flags" "\\seen $frop $frop \\seen";
+
+	if not string "${flags}" "\\seen $frop" {
+		test_fail "duplicate \\seen flag item not removed (3)";
+	}
+
+	setflag "flags" "$frop \\seen $frop \\seen";
+
+	if not string "${flags}" "$frop \\seen" {
+		test_fail "duplicate \\seen flag item not removed (4)";
+	}
+
+	setflag "flags" "$frop \\seen \\seen \\seen \\seen $frop $frop $frop \\seen";
+
+	if not string "${flags}" "$frop \\seen" {
+		test_fail "duplicate \\seen flag item not removed (5)";
+	}
+}
+
+test "Duplicates: addflag" {
+	setflag "flags" "";
+    addflag "flags" "\\seen \\seen";
+
+    if not string "${flags}" "\\seen" {
+        test_fail "duplicate \\seen flag item not removed (1)";
+    }
+
+	setflag "flags" "";
+    addflag "flags" "\\seen $frop \\seen";
+
+    if not string "${flags}" "\\seen $frop" {
+        test_fail "duplicate \\seen flag item not removed (2)";
+    }
+
+	setflag "flags" "";
+    addflag "flags" "\\seen $frop $frop \\seen";
+
+    if not string "${flags}" "\\seen $frop" {
+        test_fail "duplicate \\seen flag item not removed (3)";
+    }
+
+	setflag "flags" "";
+    addflag "flags" "$frop \\seen $frop \\seen";
+
+    if not string "${flags}" "$frop \\seen" {
+        test_fail "duplicate \\seen flag item not removed (4)";
+    }
+
+	setflag "flags" "";
+    addflag "flags" "$frop \\seen \\seen \\seen \\seen $frop $frop $frop \\seen";
+
+    if not string "${flags}" "$frop \\seen" {
+        test_fail "duplicate \\seen flag item not removed (5)";
+    }
+
+	setflag "flags" "$frop \\seen";
+    addflag "flags" "\\seen \\seen \\seen $frop $frop $frop \\seen";
+
+    if not string "${flags}" "$frop \\seen" {
+        test_fail "duplicate \\seen flag item not removed (6)";
+    }
+}
+
+
+
-- 
GitLab