Make sure the parser remembers the coordinates of simple string types
(such as 'int' or typedef_name) by always keeping them in an IdentifierType
node. This allows to correctly report some errors, which fixes issue 60.

Also cleanup some whitespace & formatting issues, and replace deprecated
unittest methods for python3.
diff --git a/tests/test_c_parser.py b/tests/test_c_parser.py
index 2284e98..abcd334 100644
--- a/tests/test_c_parser.py
+++ b/tests/test_c_parser.py
@@ -105,18 +105,18 @@
     
     def test_FileAST(self):
         t = self.parse('int a; char c;')
-        self.failUnless(isinstance(t, FileAST))
+        self.assertTrue(isinstance(t, FileAST))
         self.assertEqual(len(t.ext), 2)
         
         # empty file
         t2 = self.parse('')
-        self.failUnless(isinstance(t2, FileAST))
+        self.assertTrue(isinstance(t2, FileAST))
         self.assertEqual(len(t2.ext), 0)
 
     def test_empty_toplevel_decl(self):
         code = 'int foo;;'
         t = self.parse(code)
-        self.failUnless(isinstance(t, FileAST))
+        self.assertTrue(isinstance(t, FileAST))
         self.assertEqual(len(t.ext), 1)
         self.assertEqual(self.get_decl(code),
             ['Decl', 'foo', 
@@ -375,7 +375,7 @@
         d2 = "static char * const p;"
         assert_qs(d2, 0, [], ['static'])
         pdecl = self.parse(d2).ext[0].type
-        self.failUnless(isinstance(pdecl, PtrDecl))
+        self.assertTrue(isinstance(pdecl, PtrDecl))
         self.assertEqual(pdecl.quals, ['const'])
     
     def test_sizeof(self):
@@ -1099,8 +1099,8 @@
                 int var2[*];
             }
         ''')
-        self.failUnless(isinstance(ps2.ext[0].body.block_items[1].type.dim, Assignment))
-        self.failUnless(isinstance(ps2.ext[0].body.block_items[2].type.dim, ID))
+        self.assertTrue(isinstance(ps2.ext[0].body.block_items[1].type.dim, Assignment))
+        self.assertTrue(isinstance(ps2.ext[0].body.block_items[2].type.dim, ID))
 
 
 class TestCParser_whole_code(TestCParser_base):
@@ -1297,12 +1297,12 @@
 
     def test_switch_statement(self):
         def assert_case_node(node, const_value):
-            self.failUnless(isinstance(node, Case))
-            self.failUnless(isinstance(node.expr, Constant))
+            self.assertTrue(isinstance(node, Case))
+            self.assertTrue(isinstance(node.expr, Constant))
             self.assertEqual(node.expr.value, const_value)
 
         def assert_default_node(node):
-            self.failUnless(isinstance(node, Default))
+            self.assertTrue(isinstance(node, Default))
 
         s1 = r'''
         int foo(void) {
@@ -1409,7 +1409,8 @@
     def test_whole_file(self):
         # See how pycparser handles a whole, real C file.
         #
-        code = self._open_c_file('memmgr_with_h.c').read()
+        with self._open_c_file('memmgr_with_h.c') as f:
+            code = f.read()
         p = self.parse(code)
         
         self.assert_num_klass_nodes(p, FuncDef, 5)
@@ -1429,19 +1430,20 @@
     def test_whole_file_with_stdio(self):
         # Parse a whole file with stdio.h included by cpp
         #
-        code = self._open_c_file('cppd_with_stdio_h.c').read()
+        with self._open_c_file('cppd_with_stdio_h.c') as f:
+            code = f.read()
         p = self.parse(code)
         
-        self.failUnless(isinstance(p.ext[0], Typedef))
+        self.assertTrue(isinstance(p.ext[0], Typedef))
         self.assertEqual(p.ext[0].coord.line, 213)
         self.assertEqual(p.ext[0].coord.file, "D:\eli\cpp_stuff\libc_include/stddef.h")
         
-        self.failUnless(isinstance(p.ext[-1], FuncDef))
+        self.assertTrue(isinstance(p.ext[-1], FuncDef))
         self.assertEqual(p.ext[-1].coord.line, 15)
         self.assertEqual(p.ext[-1].coord.file, "example_c_file.c")
         
-        self.failUnless(isinstance(p.ext[-8], Typedef))
-        self.failUnless(isinstance(p.ext[-8].type, TypeDecl))
+        self.assertTrue(isinstance(p.ext[-8], Typedef))
+        self.assertTrue(isinstance(p.ext[-8].type, TypeDecl))
         self.assertEqual(p.ext[-8].name, 'cookie_io_functions_t')
 
 
@@ -1471,7 +1473,7 @@
                 unsigned TT;
             }
             '''
-        self.failUnless(isinstance(self.parse(s2), FileAST))
+        self.assertTrue(isinstance(self.parse(s2), FileAST))