Index: test/core_test.rb
===================================================================
--- test/core_test.rb	(revision 1287)
+++ test/core_test.rb	(working copy)
@@ -30,11 +30,44 @@
     EOL
   end
 
-  def test_bad_markup_1
-    src="<pkg='version'> foo </pkg>"
-    assert_raises( ParseException, %Q{Test against "#{src}" should have failed!} )  {
-      Document.new(src)
-    }
+  def test_bad_markup
+    [
+      "<pkg='version'> foo </pkg>",
+
+      # incomplete/invalid entities
+      '<a>&</a>',
+      '<a>&a</a>',
+      '<a>&a;</a>',
+
+      # duplicate attribute names
+      '<a a="1" a="2"/>',
+
+      # comments
+      '<a><!-- -- --></a>',
+      '<a><!-- ---></a>',
+
+      # invalid characters in an attribute
+      '<a a="<"/>',
+
+      # invalid characters in a name
+      '<0/>',
+      '<a 3=""/>',
+      '<a' + [160].pack('U') + ' />',
+      '<a a' + [160].pack('U') + '="" />',
+
+      # invalid XML characters
+      '<a>&#x00;</a>',
+      "<a>\000</a>",
+      "<a>\f</a>",
+      "<a a='\f' />",
+      '<a>' + [65535].pack('U') + '</a>',
+      '<a>&#xffe;</a>',
+      '<a>&#65535;</a>',
+    ].each do |src|
+      assert_raises( ParseException, %Q{Parse #{src.inspect} should have failed!} ) do
+        Document.new(src)
+      end
+    end
   end
 
   def test_attribute
