diff --git a/utest/c_utils_test.py b/utest/c_utils_test.py
new file mode 100755
index 0000000..5b28e57
--- /dev/null
+++ b/utest/c_utils_test.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+# Copyright 2013, Big Switch Networks, Inc.
+#
+# LoxiGen is licensed under the Eclipse Public License, version 1.0 (EPL), with
+# the following special exception:
+#
+# LOXI Exception
+#
+# As a special exception to the terms of the EPL, you may distribute libraries
+# generated by LoxiGen (LoxiGen Libraries) under the terms of your choice, provided
+# that copyright and licensing notices generated by LoxiGen are not altered or removed
+# from the LoxiGen Libraries and the notice provided below is (i) included in
+# the LoxiGen Libraries, if distributed in source code form and (ii) included in any
+# documentation for the LoxiGen Libraries, if distributed in binary form.
+#
+# Notice: "Copyright 2013, Big Switch Networks, Inc. This library was generated by the LoxiGen Compiler."
+#
+# You may not use this file except in compliance with the EPL or LOXI Exception. You may obtain
+# a copy of the EPL at:
+#
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# EPL for the specific language governing permissions and limitations
+# under the EPL.
+
+#
+# Some test code for c_utils.py
+#
+
+import sys
+sys.path.append("../loxi_front_end")
+sys.path.append("..")
+
+from c_parse_utils import *
+
+for filename in [
+    '../canonical/openflow.h-1.0',
+    '../canonical/openflow.h-1.1',
+    '../canonical/openflow.h-1.2']:
+
+    f = open(filename, 'r')
+    all_lines = f.readlines()
+    contents = " ".join(all_lines)
+
+    print "clean_up"
+    print clean_up_input(contents)
+
+#print "structs"
+#for x in extract_structs(c):
+#    print x
+
+    all_enums = extract_enums(contents)
+    print "Got %d enums for %s" % (len(all_enums), filename)
+    for x in all_enums:
+        name, entries =  extract_enum_vals(x)
+        print "Enum name %s has %d entries" % (name, len(entries))
+        for item in entries:
+            print "  key=%s, value=%s" % (item[0], str(item[1]))
+
+    all_defs = extract_defines(contents)
+    print "Got %d defines for %s" % (len(all_defs), filename)
+    for x in all_defs:
+        print "  name=%s, value=%s" % (x[0], str(x[1]))
