diff --git a/Demo/parser/test_unparse.py b/Demo/parser/test_unparse.py
index 170dffa..3a795e9 100644
--- a/Demo/parser/test_unparse.py
+++ b/Demo/parser/test_unparse.py
@@ -123,8 +123,6 @@
 
     def test_unary_parens(self):
         self.check_roundtrip("(-1)**7")
-        self.check_roundtrip("(-1.)**8")
-        self.check_roundtrip("(-1j)**6")
         self.check_roundtrip("not True or False")
         self.check_roundtrip("True or not False")
 
@@ -134,16 +132,6 @@
     def test_huge_float(self):
         self.check_roundtrip("1e1000")
         self.check_roundtrip("-1e1000")
-        self.check_roundtrip("1e1000j")
-        self.check_roundtrip("-1e1000j")
-
-    def test_min_int(self):
-        self.check_roundtrip(str(-2**31))
-        self.check_roundtrip(str(-2**63))
-
-    def test_imag_literals(self):
-        self.check_roundtrip("7j")
-        self.check_roundtrip("-7j")
 
     def test_lambda_parentheses(self):
         self.check_roundtrip("(lambda: int)()")
@@ -213,7 +201,7 @@
     # test directories, relative to the root of the distribution
     test_directories = 'Lib', os.path.join('Lib', 'test')
 
-    def Xtest_files(self):
+    def test_files(self):
         # get names of files to test
         dist_dir = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)
 
diff --git a/Demo/parser/unparse.py b/Demo/parser/unparse.py
old mode 100755
new mode 100644
index 3fac1c0..e1c2719
--- a/Demo/parser/unparse.py
+++ b/Demo/parser/unparse.py
@@ -1,4 +1,3 @@
-#! /usr/bin/env python3.1
 "Usage: unparse.py <path to source file>"
 import sys
 import math
@@ -312,35 +311,11 @@
         self.write(t.id)
 
     def _Num(self, t):
-        # Python doesn't have negative numeric literals, but in Python
-        # 2.x and early versions of Python 3.1, there's a compile-time
-        # operation that turns "-<number>" into a single _Num, instead
-        # of an unary minus applied to a _Num.  Here we reverse that.
-        infstr = "1e" + repr(sys.float_info.max_10_exp + 1)
-
-        if isinstance(t.n, complex):
-            # check that real part is as expected:  0 with appropriate sign
-            print(t.n)
-            print(str(t.n.real), str(math.copysign(0.0, t.n.imag)))
-            assert str(t.n.real) == str(math.copysign(0.0, t.n.imag))
-            negate = math.copysign(1.0, t.n.imag) < 0
-        elif isinstance(t.n, float):
-            negate = math.copysign(1.0, t.n) < 0
-        elif isinstance(t.n, int):
-            negate = t.n < 0
-
-        if negate:
-            self.write("(- ")
-            val = -t.n
+        if isinstance(t.n, float) and math.isinf(t.n):
+            # Subsitute overflowing decimal literal for AST infinity
+            self.write("1e" + repr(sys.float_info.max_10_exp + 1))
         else:
-            val = t.n
-
-        # Subsitute an overflowing decimal literal for an AST infinity
-        self.write(repr(t.n).replace("inf", infstr))
-
-        if negate:
-            self.write(")")
-
+            self.write(repr(t.n))
 
     def _List(self, t):
         self.write("[")
