diff --git a/tests/typename_mangling/SConscript b/tests/typename_mangling/SConscript
index ee750ef..9e140d8 100644
--- a/tests/typename_mangling/SConscript
+++ b/tests/typename_mangling/SConscript
@@ -1,19 +1,26 @@
-# Test mangle_names option
+# Test mangle_names option in various configurations.
+# Each sub testcase makes a modified copy of the files in the build directory.
 
 Import('env')
 
-def set_mangling(type):
+def set_options(setting, value):
+    '''Create options file that sets a nanopb generator option'''
     def command(target, source, env):
         with open(str(source[0])) as src, open(str(target[0]), "w") as dst:
-            dst.write("* mangle_names:{}\n".format(type))
+            dst.write("* {}:{}\n".format(setting, value))
             dst.write(src.read())
     return command
 
+def set_mangling(type):
+    return set_options('mangle_names', type)
+
+# Test type names when M_STRIP_PACKAGE option is used in a single file
 env.Command("strip_package.options", "with_package.options", set_mangling("M_STRIP_PACKAGE"))
 env.Command("strip_package.proto", "with_package.proto", Copy("$TARGET", "$SOURCE"))
 env.NanopbProto(["strip_package", "strip_package.options"])
 env.Program(["test_strip_package.c", "strip_package.pb.c", '$COMMON/pb_common.o'])
 
+# Test type names with M_STRIP_PACKAGE used in both files
 env.Command("strip_package_a.options", "with_package.options", set_mangling("M_STRIP_PACKAGE"))
 env.Command("strip_package_b.options", "with_package.options", set_mangling("M_STRIP_PACKAGE"))
 env.Command("strip_package_a.proto", "with_package_a.proto", Copy("$TARGET", "$SOURCE"))
@@ -22,11 +29,19 @@
 env.NanopbProto(["strip_package_b", "strip_package_b.options"])
 env.Program(["test_strip_package_dependencies.c", "strip_package_a.pb.c", "strip_package_b.pb.c", '$COMMON/pb_common.o'])
 
+# Test type names with M_STRIP_PACKAGE used in file A and (nanopb).package overrides package name in B
+env.Command("replace_package_b.options", "with_package.options", set_options("package", '"ReplacedName"'))
+env.Command("replace_package_b.proto", "with_package_b.proto", Copy("$TARGET", "$SOURCE"))
+env.NanopbProto(["replace_package_b", "replace_package_b.options", "strip_package_a.proto"])
+env.Program(["test_replace_package.c", "strip_package_a.pb.c", "replace_package_b.pb.c", '$COMMON/pb_common.o'])
+
+# Test M_FLATTEN with a single file
 env.Command("flatten.options", "with_package.options", set_mangling("M_FLATTEN"))
 env.Command("flatten.proto", "with_package.proto", Copy("$TARGET", "$SOURCE"))
 env.NanopbProto(["flatten", "flatten.options"])
 env.Program(["test_flatten.c", "flatten.pb.c", '$COMMON/pb_common.o'])
 
+# Test M_PACKAGE_INITIALS with a single file
 env.Command("package_initials.options", "with_package.options", set_mangling("M_PACKAGE_INITIALS"))
 env.Command("package_initials.proto", "with_package.proto", Copy("$TARGET", "$SOURCE"))
 env.NanopbProto(["package_initials", "package_initials.options"])
diff --git a/tests/typename_mangling/test_replace_package.c b/tests/typename_mangling/test_replace_package.c
new file mode 100644
index 0000000..a1d86bc
--- /dev/null
+++ b/tests/typename_mangling/test_replace_package.c
@@ -0,0 +1,27 @@
+/*
+ * Tests if expected names are generated when M_STRIP_PACKAGE is used in one of the files.
+ */
+
+#include <stdio.h>
+#include "unittests.h"
+#include "replace_package_b.pb.h"
+
+int main()
+{
+    MessageA msgA1 = package_a_MessageA_init_default;
+    package_a_MessageA msgA2 = MessageA_init_default;
+
+    package_b_MessageB msgB1 = ReplacedName_MessageB_init_zero;
+    ReplacedName_MessageB msgB2 = package_b_MessageB_init_zero;
+    
+    package_a_EnumA e1 = EnumA_VALUE_A_0;
+    EnumA e2 = EnumA_VALUE_A_1;
+    e2 = _package_a_EnumA_MIN;
+    e2 = _EnumA_MIN;
+    e2 = _package_a_EnumA_MAX;
+    e2 = _EnumA_MAX;
+    e2 = _package_a_EnumA_ARRAYSIZE;
+    e2 = _EnumA_ARRAYSIZE;
+
+    return msgA1.enum_a_field + msgA2.enum_a_field + msgB1.nested_enum + msgB2.nested_enum + e1 + e2; /* marks variables as used */
+}
