diff --git a/utest/identifiers_test.py b/utest/identifiers_test.py
new file mode 100755
index 0000000..e8ff2cd
--- /dev/null
+++ b/utest/identifiers_test.py
@@ -0,0 +1,78 @@
+#!/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 identifiers.py
+#
+
+import sys
+sys.path.append("..")
+sys.path.append("../loxi_front_end")
+sys.path.append("../loxi_utils")
+
+from identifiers import *
+
+test_dict = {}
+group_dict = {}
+
+for ver, filename in [
+    (1, '../canonical/openflow.h-1.0'),
+    (2, '../canonical/openflow.h-1.1'),
+    (3, '../canonical/openflow.h-1.2'),
+    (4, '../canonical/openflow.h-1.3')]:
+
+    f = open(filename, 'r')
+    all_lines = f.readlines()
+    contents = " ".join(all_lines)
+
+    add_identifiers(test_dict, group_dict, ver, contents)
+
+version_list = [1,2,3,4]
+print "Merged %d entries from files" % len(test_dict)
+
+for ident, info in test_dict.items():
+    print """
+Name %s:
+  common %s
+  num vals %d
+  all agree %s
+  defined agree %s
+  ofp name %s
+  group %s""" % (ident, str(info["common_value"]), 
+                  len(info["values_by_version"]),
+                  all_versions_agree(test_dict, version_list, ident),
+                  defined_versions_agree(test_dict, version_list, ident),
+                  info["ofp_name"], info["ofp_group"])
+
+    for version, value in info["values_by_version"].items():
+        print "  version %d value %s" % (version, value)
+
+for ident, loxi_list in group_dict.items():
+    print "Group %s:" % ident
+    for loxi_name in loxi_list:
+        print "   %s" % loxi_name
