Fixed enum formatting in generating C code (issue #240). (#243)

* Fixed enum formatting in generating C code (issue #240).

* Added another enum test. Removed twice-defined function.
diff --git a/pycparser/c_generator.py b/pycparser/c_generator.py
index 8001739..0575b8b 100644
--- a/pycparser/c_generator.py
+++ b/pycparser/c_generator.py
@@ -138,11 +138,17 @@
         return self._generate_struct_union_enum(n, name='enum')
 
     def visit_Enumerator(self, n):
-        return '{indent}{name} = {value},\n'.format(
-            indent=self._make_indent(),
-            name=n.name,
-            value=self.visit(n.value),
-        )
+        if not n.value:
+            return '{indent}{name},\n'.format(
+                indent=self._make_indent(),
+                name=n.name,
+            )
+        else:
+            return '{indent}{name} = {value},\n'.format(
+                indent=self._make_indent(),
+                name=n.name,
+                value=self.visit(n.value),
+            )
 
     def visit_FuncDef(self, n):
         decl = self.visit(n.decl)
diff --git a/tests/test_c_generator.py b/tests/test_c_generator.py
index 267bb3d..9385e80 100644
--- a/tests/test_c_generator.py
+++ b/tests/test_c_generator.py
@@ -103,6 +103,12 @@
                 int b = (int) f;
                 int c = (int*) f;
             }''')
+        self._assert_ctoc_correct(r'''
+            int main() {
+                int a = (int) b + 8;
+                int t = (int) c;
+            }
+        ''')
 
     def test_initlist(self):
         self._assert_ctoc_correct('int arr[] = {1, 2, 3};')
@@ -129,14 +135,6 @@
                 return a;
             }''')
 
-    def test_casts(self):
-        self._assert_ctoc_correct(r'''
-            int main() {
-                int a = (int) b + 8;
-                int t = (int) c;
-            }
-        ''')
-
     def test_struct_decl(self):
         self._assert_ctoc_correct(r'''
             typedef struct node_t {
@@ -285,20 +283,22 @@
         self._assert_ctoc_correct('struct foo_s foo = (struct foo_s){ 1, 2 };')
 
     def test_enum(self):
-        s = textwrap.dedent(r'''
+        self._assert_ctoc_correct(r'''
             enum e
             {
-              a = 1,
+              a,
               b = 2,
               c = 3
             };
-        '''[1:])
-
-        self._assert_ctoc_correct(s)
-
-        ast = parse_to_ast(s)
-        generator = c_generator.CGenerator()
-        assert generator.visit(ast) == s
+        ''')
+        self._assert_ctoc_correct(r'''
+            enum f
+            {
+                g = 4,
+                h,
+                i
+            };
+        ''')
 
     def test_enum_typedef(self):
         self._assert_ctoc_correct('typedef enum EnumName EnumTypedefName;')