configurationengine/source/plugins/common/ConeRulePlugin/ruleplugin/tests/unittest_rules.py
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
--- a/configurationengine/source/plugins/common/ConeRulePlugin/ruleplugin/tests/unittest_rules.py	Fri Mar 12 08:30:17 2010 +0200
+++ b/configurationengine/source/plugins/common/ConeRulePlugin/ruleplugin/tests/unittest_rules.py	Tue Aug 10 14:29:28 2010 +0300
@@ -18,8 +18,7 @@
 import unittest
 import os, shutil
 import sys
-import __init__
-        
+
 from ruleplugin import ruleml
 from cone.public import api, plugin
 ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
@@ -35,10 +34,29 @@
     
     def _execute_rules(self, impl_filter):
         implcontainer = plugin.get_impl_set(self.config, impl_filter)
-        context = plugin.GenerationContext()
+        context = plugin.GenerationContext(configuration=self.config)
+        context.output = os.path.join(ROOT_PATH,'temp/output')
+ 
+        if not os.path.exists(context.output):
+            os.makedirs(context.output)
+        
         implcontainer.generate(context)
-        return context.results
+        return context.generation_output
     
+    def test_eval_generation_context_access(self):
+        config = self.config
+        
+        self._execute_rules(r'^implml/eval_generation_context\.ruleml$')
+        dview = config.get_default_view()
+        self.assertEquals(dview.get_feature("EvalTest.output").value, os.path.join(ROOT_PATH,'temp/output'))
+        self.assertEquals(True, os.path.isfile(dview.get_feature("EvalTest.file").value))
+        
+        self.config.close()
+        self.project.close()
+        
+        if os.path.exists(os.path.join(ROOT_PATH, 'temp/output')):
+            shutil.rmtree(os.path.join(ROOT_PATH, 'temp/output'))
+            
     def test_arithmetic_operations(self):
         self._execute_rules(r'^implml/arithmetic\.ruleml$')
         
@@ -128,8 +146,8 @@
         config = self.config
         
         self.assert_setting_equals(config, 'EvalTest.FullSequence',
-            [['Full 1', '10', '1.5', 'true'],
-             ['Full 2', '20', '2.5', 'false']])
+            [['Full 1', 10, 1.5, True],
+             ['Full 2', 20, 2.5, False]])
         
         self._execute_rules(r'^implml/eval\.ruleml$')
         
@@ -144,10 +162,10 @@
         self.assert_setting_equals(config, 'EvalTest.Bit2Result', False)
         self.assert_setting_equals(config, 'EvalTest.Bit3Result', True)
         self.assert_setting_equals(config, 'EvalTest.FullSequence',
-            [['Full 1', '10', '1.5', 'true'],
-             ['Full 2', '20', '2.5', 'false'],
-             ['Stripped 1', '1', '0.1', 'false'],
-             ['Stripped 2', '2', '0.1', 'false']])
+            [['Full 1', 10, 1.5, True],
+             ['Full 2', 20, 2.5, False],
+             ['Stripped 1', 1, 0.1, False],
+             ['Stripped 2', 2, 0.1, False]])
         self.assert_setting_equals(config, 'EvalTest.EvalBuiltinResult', 'ruleml_test_config')
     
     def assert_setting_equals(self, config, setting, expected_value, msg=None):
@@ -159,28 +177,21 @@
     def test_rule_execution_results(self):
         results = self._execute_rules(r'^implml/rules\.ruleml$')
         
-        def r(index, input_refs, affected_refs):
-            return plugin.RelationExecutionResult(index         = index,
-                                                  source        = 'implml/rules.ruleml',
-                                                  input_refs    = input_refs,
-                                                  affected_refs = affected_refs)
-        expected = [
-            r(1,  ['imaker.imagetarget'],         ['imakerapi.outputLocation']),
-            r(6,  ['imakerapi.outputLocationY'],  ['imakerapi.outputLocationY']),
-            r(7,  ['operations.minus'],           ['operations.minus']),
-            r(8,  ['operations.minus1'],          ['operations.minus1']),
-            r(9,  ['operations.minus4'],          ['operations.minus4']),
-            r(10, ['operations.minus6'],          ['operations.minus6']),
-            r(11, [],                             ['StringConcatenationTest.Result1']),
-            r(12, [],                             ['StringConcatenationTest.Result2']),
-            r(13, [],                             ['StringConcatenationTest.Result3']),
-            r(14, [],                             ['StringConcatenationTest.Result4']),
-            r(15, [],                             ['StringConcatenationTest.Result5']),
-            r(16, [],                             ['StringConcatenationTest.Result6']),
-            r(17, [],                             [u'ударения.ελληνικά']),
-        ]
-        
-        self.assertEquals(results, expected)
+        outputs = [(output.name, output.implementation.get_refs()) for output in results if output.type == 'ref']  
+        self.assertEquals(outputs, [(u'imakerapi.outputLocation', [u'imaker.imagetarget']), 
+                                   (u'imakerapi.outputLocationY', [u'imakerapi.outputLocationY']), 
+                                   (u'operations.minus', [u'operations.minus']), 
+                                   (u'operations.minus1', [u'operations.minus1']), 
+                                   (u'operations.minus4', [u'operations.minus4']), 
+                                   (u'operations.minus6', [u'operations.minus6']), 
+                                   (u'StringConcatenationTest.Result1', []), 
+                                   (u'StringConcatenationTest.Result2', []), 
+                                   (u'StringConcatenationTest.Result3', []), 
+                                   (u'StringConcatenationTest.Result4', []), 
+                                   (u'StringConcatenationTest.Result5', []), 
+                                   (u'StringConcatenationTest.Result6', []), 
+                                   (u'ударения.ελληνικά', []),
+                                   (u'SequenceTest.Sequence1', [])])
             
 if __name__ == '__main__':
     unittest.main()