CORD-1568: Support sharing policies by letting one policy invoke another

Change-Id: I87fdb80a65d86b61364abd3ec35961668924c8f5
diff --git a/lib/xos-genx/tests/policy_test.py b/lib/xos-genx/tests/policy_test.py
index 25c307e..5bc3511 100644
--- a/lib/xos-genx/tests/policy_test.py
+++ b/lib/xos-genx/tests/policy_test.py
@@ -215,6 +215,41 @@
 
         self.assertTrue(eval(expr))
 
+    def test_policy_function(self):
+        xproto = \
+"""
+    policy slice_policy < exists Privilege: Privilege.object_id = obj.id >
+    policy network_slice_policy < *slice_policy(slice) >
+"""
+
+        target = XProtoTestHelpers.write_tmp_target("{{ proto.policies.network_slice_policy }} ")
+        args = FakeArgs()
+        args.inputs = xproto
+        args.target = target
+
+        output = XOSGenerator.generate(args)
+        
+        (op, operands), = eval(output).items()
+
+        self.assertIn('slice_policy', operands)
+        self.assertIn('slice', operands)
+
+    def test_policy_missing_function(self):
+        xproto = \
+"""
+    policy slice_policy < exists Privilege: Privilege.object_id = obj.id >
+    policy network_slice_policy < *slice_policyX(slice) >
+"""
+
+        target = XProtoTestHelpers.write_tmp_target("{{ proto.policies.network_slice_policy }} ")
+        args = FakeArgs()
+        args.inputs = xproto
+        args.target = target
+
+        with self.assertRaises(Exception):
+            output = XOSGenerator.generate(args)
+        
+
     def test_forall(self):
         # This one we only parse
         xproto = \