diff --git a/lib/xos-genx/tests/optimize_test.py b/lib/xos-genx/tests/optimize_test.py
new file mode 100644
index 0000000..ce15bf4
--- /dev/null
+++ b/lib/xos-genx/tests/optimize_test.py
@@ -0,0 +1,74 @@
+import unittest
+from xosgenx.jinja2_extensions.fol2 import FOL2Python
+import pdb
+
+class XProtoOptimizeTest(unittest.TestCase):
+    def setUp(self):
+        self.f2p = FOL2Python()
+
+    def test_constant(self):
+        input = 'True'
+        output = self.f2p.hoist_constants(input)
+        self.assertEqual(output, input)
+
+    def test_exists(self):
+        input = {'exists': ['x',{'|':['x','y']}]}
+
+        output = self.f2p.hoist_constants(input)
+        expected = {'|': ['y', {'exists': ['x', 'x']}]}
+        self.assertEqual(output, expected)
+        
+    def test_forall(self):
+        input = {'forall': ['x',{'|':['x','y']}]}
+
+        output = self.f2p.hoist_constants(input)
+        expected = {'|': ['y', {'forall': ['x', 'x']}]}
+        self.assertEqual(output, expected)
+
+    def test_exists_embedded(self):
+        input = {'|':['True',{'exists': ['x',{'|':['x','y']}]}]}
+
+        output = self.f2p.hoist_constants(input)
+        expected = {'|': ['True', {'|': ['y', {'exists': ['x', 'x']}]}]}
+        self.assertEqual(output, expected)
+    
+    def test_exists_equals(self):
+        input = {'|':['True',{'exists': ['x',{'|':['x',{'=':['y','z']}]}]}]}
+
+        output = self.f2p.hoist_constants(input)
+        expected = {'|': ['True', {'|': [{'=': ['y', 'z']}, {'exists': ['x', 'x']}]}]}
+        self.assertEqual(output, expected)
+
+    def test_exists_nested_constant(self):
+        input = {'|':['True',{'exists': ['x',{'|':['y',{'=':['y','x']}]}]}]}
+
+        output = self.f2p.hoist_constants(input)
+        expected = {'|': ['True', {'|': ['y', {'exists': ['x', {'=': ['y', 'x']}]}]}]}
+        self.assertEqual(output, expected)
+
+    def test_exists_nested(self):
+        input = {'exists': ['x',{'exists':['y',{'=':['y','x']}]}]}
+
+        output = self.f2p.hoist_constants(input)
+        expected = {'exists': ['x', {'exists': ['y', {'=': ['y', 'x']}]}]}
+        self.assertEqual(output, expected)
+
+    def test_exists_nested2(self):
+        input = {'exists': ['x',{'exists':['y',{'=':['z','y']}]}]}
+
+        output = self.f2p.hoist_constants(input)
+        expected = {'exists': ['y', {'=': ['z', 'y']}]}
+        self.assertEqual(output, expected)
+
+    def test_exists_nested3(self):
+        input = {'exists': ['x',{'exists':['y',{'=':['z','x']}]}]}
+
+        output = self.f2p.hoist_constants(input)
+        expected = {'exists': ['x', {'=': ['z', 'x']}]}
+        self.assertEqual(output, expected)
+
+
+if __name__ == '__main__':
+    unittest.main()
+
+
