diff --git a/utest/test_test_data.py b/utest/test_test_data.py
new file mode 100755
index 0000000..6a4a8ff
--- /dev/null
+++ b/utest/test_test_data.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env 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.
+
+import unittest
+import test_data
+
+class DataFileTests(unittest.TestCase):
+    def test_example(self):
+        self.assertTrue('./example.data' in test_data.list_files())
+        data = test_data.read('example.data')
+        self.assertEquals(sorted(['section1', 'section2', 'binary']), sorted(data.keys()))
+        self.assertEquals('abc def\nghi', data['section1'])
+        self.assertEquals('123\n456\n789', data['section2'])
+        self.assertEquals('\x00\x01\x02\x03\x04\x05\x06\x07\x77\x66\x55\x44\x33\x22\x11\x00',
+                          data['binary'])
+
+    # Just make sure all included data files parse without exceptions
+    def test_all(self):
+        for name in test_data.list_files():
+            test_data.read(name)
+
+if __name__ == '__main__':
+    unittest.main()
