diff --git a/tests/extensions/imap4flags/flagstore.svtest b/tests/extensions/imap4flags/flagstore.svtest
index 127d56015bc32c65b3494ff56f153d8e78fc1223..9ede53ea0fa051861b5282a414a2f0c05b2a993e 100644
--- a/tests/extensions/imap4flags/flagstore.svtest
+++ b/tests/extensions/imap4flags/flagstore.svtest
@@ -14,7 +14,7 @@ Test message.
 .
 ;
 
-test "Before" {
+test "Basic" {
     if hasflag :comparator "i;ascii-numeric" :count "ge" "1" {
         test_fail "some flags or keywords are already set";
     }
@@ -74,10 +74,73 @@ test "Before" {
 	test_message :folder "Uninteresting" 2;
 
     if not hasflag "\\flagged" {
-        test_fail "flags not stored for second message";
+        test_fail "flags not stored for third message";
+    }
+
+	if not hasflag :comparator "i;ascii-numeric" :count "eq" "1" {
+        test_fail "invalid number of flags set for third message";
+    }
+}
+
+test_result_reset;
+test_set "message" text:
+From: Henry von Flockenstoffen <henry@example.com>
+To: Dieter von Ausburg <dieter@example.com>
+Subject: Test message.
+
+Test message.
+.
+;
+
+test "Flag changes between stores" {
+    if hasflag :comparator "i;ascii-numeric" :count "ge" "1" {
+        test_fail "some flags or keywords are already set";
+    }
+	
+	setflag "$label1 \\answered";
+	fileinto :create "FolderA";
+
+	setflag "$label2";
+	fileinto :create "FolderB";
+
+	fileinto :create :flags "\\seen \\draft \\flagged" "FolderC";
+
+	if not test_result_execute {
+		test_fail "failed to execute first result";
+	}
+
+	test_result_reset;
+	test_message :folder "FolderA" 0;
+
+	if not hasflag "\\answered $label1" {
+		test_fail "flags not stored for first message";
+	}
+
+	if not hasflag :comparator "i;ascii-numeric" :count "eq" "2" {
+        test_fail "invalid number of flags set for first message";
+    }
+
+    test_result_reset;
+	test_message :folder "FolderB" 0;
+
+    if not hasflag "$label2" {
+        test_fail "flag not stored for second message";
     }
 
 	if not hasflag :comparator "i;ascii-numeric" :count "eq" "1" {
+        test_fail "invalid number of flags set for second message";
+    }
+
+    test_result_reset;
+	test_message :folder "FolderC" 0;
+
+    if not hasflag "\\seen \\flagged \\draft" {
+        test_fail "flags not stored for third message";
+    }
+
+	if not hasflag :comparator "i;ascii-numeric" :count "eq" "3" {
         test_fail "invalid number of flags set for third message";
     }
 }
+
+