From 58fee67d570408dfc97c31dbddc73bc071e9199b Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Sun, 29 Nov 2015 18:33:40 +0100
Subject: [PATCH] testsuite: mime: Created tests for some basic foreverypart
 loops.

---
 Makefile.am                               |   1 +
 tests/extensions/mime/foreverypart.svtest | 140 ++++++++++++++++++++++
 2 files changed, 141 insertions(+)
 create mode 100644 tests/extensions/mime/foreverypart.svtest

diff --git a/Makefile.am b/Makefile.am
index 3e67d5e7f..e284f1391 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -169,6 +169,7 @@ test_cases = \
 	tests/extensions/mime/errors.svtest \
 	tests/extensions/mime/execute.svtest \
 	tests/extensions/mime/content-header.svtest \
+	tests/extensions/mime/foreverypart.svtest \
 	tests/extensions/vnd.dovecot/debug/execute.svtest \
 	tests/extensions/vnd.dovecot/environment/basic.svtest \
 	tests/extensions/vnd.dovecot/environment/variables.svtest \
diff --git a/tests/extensions/mime/foreverypart.svtest b/tests/extensions/mime/foreverypart.svtest
new file mode 100644
index 000000000..3dba6a6c4
--- /dev/null
+++ b/tests/extensions/mime/foreverypart.svtest
@@ -0,0 +1,140 @@
+require "vnd.dovecot.testsuite";
+require "relational";
+require "foreverypart";
+require "mime";
+require "variables";
+
+test_set "message" text:
+From: Hendrik <hendrik@example.com>
+To: Harrie <harrie@example.com>
+Date: Sat, 11 Oct 2010 00:31:44 +0200
+Subject: Harrie is een prutser
+Content-Type: multipart/mixed; boundary=AA
+X-Test: AA
+
+This is a multi-part message in MIME format.
+--AA
+Content-Type: multipart/mixed; boundary=BB
+X-Test: BB
+
+This is a multi-part message in MIME format.
+--BB
+Content-Type: text/plain; charset="us-ascii"
+X-Test: CC
+
+Hello
+
+--BB
+Content-Type: text/plain; charset="us-ascii"
+X-Test: DD
+
+Hello again
+
+--BB--
+This is the end of MIME multipart.
+
+--AA
+Content-Type: text/plain; charset="us-ascii"
+X-Test: EE
+
+And again
+
+--AA--
+This is the end of  MIME multipart.
+.
+;
+
+test "Single loop" {
+	set "a" "a";
+	foreverypart {
+		set :length "la" "${a}";
+
+		if string "${a}" "a" {
+			if not header :mime "X-Test" "AA" {
+				test_fail "wrong header extracted (${la})";
+			}
+		} elsif string "${a}" "aa" {
+			if not header :mime "X-Test" "BB" {
+				test_fail "wrong header extracted (${la})";
+			}
+		} elsif string "${a}" "aaa" {
+			if not header :mime "X-Test" "CC" {
+				test_fail "wrong header extracted (${la})";
+			}
+		} elsif string "${a}" "aaaa" {
+			if not header :mime "X-Test" "DD" {
+				test_fail "wrong header extracted (${la})";
+			}
+		} elsif string "${a}" "aaaaa" {
+			if not header :mime "X-Test" "EE" {
+				test_fail "wrong header extracted (${la})";
+			}
+		}
+		set "a" "a${a}";
+	}
+}
+
+test "Double loop" {
+	set "a" "a";
+	foreverypart {
+		set :length "la" "${a}";
+
+		if string "${a}" "a" {
+			if not header :mime "X-Test" "AA" {
+				test_fail "wrong header extracted (${la})";
+			}
+		} elsif string "${a}" "aaaaaa" {
+			if not header :mime "X-Test" "BB" {
+				test_fail "wrong header extracted (${la})";
+			}
+		} elsif string "${a}" "aaaaaaaaa" {
+			if not header :mime "X-Test" "CC" {
+				test_fail "wrong header extracted (${la})";
+			}
+		} elsif string "${a}" "aaaaaaaaaa" {
+			if not header :mime "X-Test" "DD" {
+				test_fail "wrong header extracted (${la})";
+			}
+		} elsif string "${a}" "aaaaaaaaaaa" {
+			if not header :mime "X-Test" "EE" {
+				test_fail "wrong header extracted (${la})";
+			}
+		}
+
+		set "a" "a${a}";
+
+		foreverypart {
+			set :length "la" "${a}";
+
+			if string "${a}" "aa" {
+				if not header :mime "X-Test" "BB" {
+					test_fail "wrong header extracted (${la})";
+				}
+			} elsif string "${a}" "aaa" {
+				if not header :mime "X-Test" "CC" {
+					test_fail "wrong header extracted (${la})";
+				}
+			} elsif string "${a}" "aaaa" {
+				if not header :mime "X-Test" "DD" {
+					test_fail "wrong header extracted (${la})";
+				}
+			} elsif string "${a}" "aaaaa" {
+				if not header :mime "X-Test" "EE" {
+					test_fail "wrong header extracted (${la})";
+				}
+			} elsif string "${a}" "aaaaaaa" {
+				if not header :mime "X-Test" "CC" {
+					test_fail "wrong header extracted (${la})";
+				}
+			} elsif string "${a}" "aaaaaaaa" {
+				if not header :mime "X-Test" "DD" {
+					test_fail "wrong header extracted (${la})";
+				}
+			}
+			set "a" "a${a}";
+		}
+	}
+}
+
+
+
-- 
GitLab