diff --git a/applications/test/dictionary4/Make/files b/applications/test/dictionary4/Make/files
new file mode 100644
index 0000000000..9420ab30b7
--- /dev/null
+++ b/applications/test/dictionary4/Make/files
@@ -0,0 +1,3 @@
+Test-dictionary4.C
+
+EXE = $(FOAM_USER_APPBIN)/Test-dictionary4
diff --git a/applications/test/dictionary4/Make/options b/applications/test/dictionary4/Make/options
new file mode 100644
index 0000000000..41306609f2
--- /dev/null
+++ b/applications/test/dictionary4/Make/options
@@ -0,0 +1 @@
+EXE_INC =
diff --git a/applications/test/dictionary4/Test-dictionary4.C b/applications/test/dictionary4/Test-dictionary4.C
new file mode 100644
index 0000000000..1104035767
--- /dev/null
+++ b/applications/test/dictionary4/Test-dictionary4.C
@@ -0,0 +1,90 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2019 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+Application
+ Test-dictionary4
+
+Description
+ Test expansion
+\*---------------------------------------------------------------------------*/
+
+#include "argList.H"
+#include "IOstreams.H"
+#include "IOobject.H"
+#include "IFstream.H"
+#include "dictionary.H"
+#include "Pair.H"
+#include "stringOps.H"
+
+using namespace Foam;
+
+void addToDict
+(
+ dictionary& dict,
+ std::initializer_list> entries
+)
+{
+ for (const Pair& e : entries)
+ {
+ dict.add(word(e.first()), string(e.second()));
+ }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Main program:
+
+int main(int argc, char *argv[])
+{
+ // Test expansion
+ {
+ dictionary dict;
+
+
+ addToDict
+ (
+ dict,
+ {
+ {"fileDir", "/triSurface"},
+ {"fileBase", "input"},
+ {"fileExt", ".stl"},
+ {"fileName", "${fileDir}/${fileBase}$fileExt"}
+ }
+ );
+
+ Info<< "dict" << dict << nl;
+
+ string str("fileName = <$fileName>");
+
+ Info<< str.c_str() << nl;
+
+ stringOps::inplaceExpand(str, dict, true, true);
+
+ Info<< str.c_str() << nl;
+ }
+
+ return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/test/string/Make/options b/applications/test/string/Make/options
index 4e772fdf9d..18e6fe47af 100644
--- a/applications/test/string/Make/options
+++ b/applications/test/string/Make/options
@@ -1,2 +1,2 @@
-/* EXE_INC = -I$(LIB_SRC)/finiteVolume/lnInclude */
-/* EXE_LIBS = -lfiniteVolume */
+/* EXE_INC = */
+/* EXE_LIBS = */
diff --git a/applications/test/string/Test-string.C b/applications/test/string/Test-string.C
index 46257c117b..ed939665fe 100644
--- a/applications/test/string/Test-string.C
+++ b/applications/test/string/Test-string.C
@@ -172,35 +172,6 @@ int main(int argc, char *argv[])
Info<<"trimRight: " << stringOps::trimRight(test) << endl;
Info<<"trim: " << stringOps::trim(test) << endl;
- // Test comment stripping
- {
- Info<< nl << "Test comment stripping" << nl;
- testCommentStripping
- (
- "/String without comments/"
- );
- testCommentStripping
- (
- "Removed some/* C-comments */ / C comments"
- );
- testCommentStripping
- (
- "Removed some//C++ comments\n / C++ comments"
- );
- testCommentStripping
- (
- "Partly degenerate C comment */ C-comment..."
- );
- testCommentStripping
- (
- "Truncated C comment * C-comment..."
- );
- testCommentStripping
- (
- "Truncated C++ comment / C++ comment..."
- );
- }
-
if (false)
{
Info<<"test move construct - string size:" << test.size() << nl;
diff --git a/applications/test/string2/Make/files b/applications/test/string2/Make/files
new file mode 100644
index 0000000000..f068e64a51
--- /dev/null
+++ b/applications/test/string2/Make/files
@@ -0,0 +1,3 @@
+Test-string2.C
+
+EXE = $(FOAM_USER_APPBIN)/Test-string2
diff --git a/applications/test/string2/Make/options b/applications/test/string2/Make/options
new file mode 100644
index 0000000000..18e6fe47af
--- /dev/null
+++ b/applications/test/string2/Make/options
@@ -0,0 +1,2 @@
+/* EXE_INC = */
+/* EXE_LIBS = */
diff --git a/applications/test/string2/Test-string2.C b/applications/test/string2/Test-string2.C
new file mode 100644
index 0000000000..e0ee508186
--- /dev/null
+++ b/applications/test/string2/Test-string2.C
@@ -0,0 +1,92 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2019 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+Description
+ Test some string functionality
+
+\*---------------------------------------------------------------------------*/
+
+#include "string.H"
+#include "stringOps.H"
+#include "dictionary.H"
+#include "IOstreams.H"
+#include "OSspecific.H"
+
+#include "int.H"
+#include "uint.H"
+#include "scalar.H"
+#include "Switch.H"
+#include "fileName.H"
+#include "stringList.H"
+#include "stringOps.H"
+
+using namespace Foam;
+
+void testCommentStripping(const std::string& s)
+{
+ Info<< "input" << nl
+ << "========" << nl
+ << s << nl
+ << "========" << nl;
+
+ Info<< "output" << nl
+ << "========" << nl
+ << stringOps::removeComments(s) << nl
+ << "========" << nl << nl;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Main program:
+
+int main(int argc, char *argv[])
+{
+ // Test comment stripping
+ {
+ Info<< nl << "Test comment stripping" << nl;
+
+ for
+ (
+ const auto& cstr
+ :
+ {
+ "/String without comments/",
+ "Removed some/* C-comments */ / C comments",
+ "Removed some//C++ comments\n / C++ comments",
+ "Partly degenerate C comment */ C-comment...",
+ "Truncated C comment * C-comment...",
+ "Truncated C++ comment / C++ comment...",
+ }
+ )
+ {
+ testCommentStripping(cstr);
+ }
+ }
+
+
+ Info<< "\nEnd\n" << endl;
+ return 0;
+}
+
+
+// ************************************************************************* //