Added test cases for the InputSource class.
diff --git a/Lib/test/test_sax.py b/Lib/test/test_sax.py
index 1e7e037..8ff3dac 100644
--- a/Lib/test/test_sax.py
+++ b/Lib/test/test_sax.py
@@ -4,7 +4,7 @@
 
 from xml.sax.saxutils import XMLGenerator, escape, XMLFilterBase
 from xml.sax.expatreader import create_parser
-from xml.sax.xmlreader import AttributesImpl, AttributesNSImpl
+from xml.sax.xmlreader import InputSource, AttributesImpl, AttributesNSImpl
 from xml.sax.handler import ContentHandler
 from cStringIO import StringIO
 from test_support import verbose, TestFailed
@@ -238,6 +238,42 @@
            attrs.getValue((ns_uri, "attr")) == "val" and \
            attrs[(ns_uri, "attr")] == "val"
 
+# ===== InputSource support
+
+xml_test_out = open("test.xml.out").read()
+
+def test_expat_inpsource_filename():
+    parser = create_parser()
+    result = StringIO()
+    xmlgen = XMLGenerator(result)
+
+    parser.setContentHandler(xmlgen)
+    parser.parse("test.xml")
+
+    return result.getvalue() == xml_test_out
+
+def test_expat_inpsource_sysid():
+    parser = create_parser()
+    result = StringIO()
+    xmlgen = XMLGenerator(result)
+
+    parser.setContentHandler(xmlgen)
+    parser.parse(InputSource("test.xml"))
+
+    return result.getvalue() == xml_test_out
+
+def test_expat_inpsource_stream():
+    parser = create_parser()
+    result = StringIO()
+    xmlgen = XMLGenerator(result)
+
+    parser.setContentHandler(xmlgen)
+    inpsrc = InputSource()
+    inpsrc.setByteStream(open("test.xml"))
+    parser.parse(inpsrc)
+
+    return result.getvalue() == xml_test_out
+
 # ===========================================================================
 #
 #   xmlreader tests
@@ -383,6 +419,18 @@
 
 # ===== Main program
 
+def make_test_output():
+    parser = create_parser()
+    result = StringIO()
+    xmlgen = XMLGenerator(result)
+
+    parser.setContentHandler(xmlgen)
+    parser.parse("test.xml")
+
+    outf = open("test.xml.out", "w")
+    outf.write(result.getvalue())
+    outf.close()
+
 items = locals().items()
 items.sort()
 for (name, value) in items:
@@ -392,3 +440,5 @@
 print "%d tests, %d failures" % (tests, fails)
 if fails != 0:
     raise TestFailed, "%d of %d tests failed" % (fails, tests)
+
+make_test_output()