diff --git a/testIOS.cxx b/testIOS.cxx
index 632b5c22b21e58a249eb9d03857a9d57de65eb7e..7c02a1bcd05334040f34bf6887270ba8f1fde7ba 100644
--- a/testIOS.cxx
+++ b/testIOS.cxx
@@ -6,6 +6,7 @@
 // Work-around CMake dependency scanning limitation.  This must
 // duplicate the above list of headers.
 #if 0
+# include "kwsys_stl_string.hxx.in"
 # include "kwsys_stl_vector.h.in"
 # include "kwsys_ios_sstream.h.in"
 # include "kwsys_ios_iostream.h.in"
@@ -14,7 +15,103 @@
 int testIOS(int, char*[])
 {
   kwsys_ios::ostringstream ostr;
-  ostr << "Hello, World!";
-  kwsys_ios::cout << ostr.str() << kwsys_ios::endl;
+  ostr << "hello";
+  if(ostr.str() != "hello")
+    {
+    kwsys_ios::cerr << "failed to write hello to ostr" << kwsys_ios::endl;
+    return 1;
+    }
+  kwsys_ios::istringstream istr(" 10 20 str ");
+  kwsys_stl::string s;
+  int x;
+  if(istr >> x)
+    {
+    if(x != 10)
+      {
+      kwsys_ios::cerr << "x != 10" << kwsys_ios::endl;
+      return 1;
+      }
+    }
+  else
+    {
+    kwsys_ios::cerr << "Failed to read 10 from istr" << kwsys_ios::endl;
+    return 1;
+    }
+  if(istr >> x)
+    {
+    if(x != 20)
+      {
+      kwsys_ios::cerr << "x != 20" << kwsys_ios::endl;
+      return 1;
+      }
+    }
+  else
+    {
+    kwsys_ios::cerr << "Failed to read 20 from istr" << kwsys_ios::endl;
+    return 1;
+    }
+  if(istr >> s)
+    {
+    if(s != "str")
+      {
+      kwsys_ios::cerr << "s != \"str\"" << kwsys_ios::endl;
+      return 1;
+      }
+    }
+  else
+    {
+    kwsys_ios::cerr << "Failed to read str from istr" << kwsys_ios::endl;
+    return 1;
+    }
+  if(istr >> s)
+    {
+    kwsys_ios::cerr << "Able to read past end of stream" << kwsys_ios::endl;
+    return 1;
+    }
+  istr.str("30");
+  if(istr >> x)
+    {
+    if(x != 30)
+      {
+      kwsys_ios::cerr << "x != 30" << kwsys_ios::endl;
+      return 1;
+      }
+    }
+  else
+    {
+    kwsys_ios::cerr << "Failed to read 30 from istr" << kwsys_ios::endl;
+    return 1;
+    }
+
+  kwsys_ios::stringstream sstr;
+  sstr << "40 str2";
+  if(sstr >> x)
+    {
+    if(x != 40)
+      {
+      kwsys_ios::cerr << "x != 40" << kwsys_ios::endl;
+      return 1;
+      }
+    }
+  else
+    {
+    kwsys_ios::cerr << "Failed to read 40 from sstr" << kwsys_ios::endl;
+    return 1;
+    }
+  if(sstr >> s)
+    {
+    if(s != "str2")
+      {
+      kwsys_ios::cerr << "s != \"str2\"" << kwsys_ios::endl;
+      return 1;
+      }
+    }
+  else
+    {
+    kwsys_ios::cerr << "Failed to read str2 from sstr" << kwsys_ios::endl;
+    return 1;
+    }
+
+  kwsys_ios::cout << "IOS tests passed" << kwsys_ios::endl;
   return 0;
 }