def test_first_ignored_unit(self): """ Tests prepare_for_calculation when the first item needs to be ignored """ pair1 = ('concept1', [ Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True) ]) pair2 = ('concept2', [ Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True) ]) pair3 = ('concept3', [ Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True) ]) fact_dict_ordered = OrderedDict([pair1, pair2, pair3]) keys = list(fact_dict_ordered.keys()) self.assertEqual('concept1', keys[0]) prepared = fact_lib.prepare_facts_for_calculation( fact_dict_ordered, unit_ignored_dict={'concept1': True}) self.assertEqual(1, len(prepared))
def test_prepare_facts_for_calculation_happy_path(self): """ Tests to see prepare_facts_for_calculation works correctly when there is an easy path """ fact_dict = { 'concept1': [ Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True), Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True) ], 'concept2': [ Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True), Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True) ], } prepared = fact_lib.prepare_facts_for_calculation(fact_dict) self.assertEqual(2, len(prepared)) for fs in prepared: self.assertEqual(2, len(fs)) self.assertEqual(fs['concept1'].contextID, fs['concept2'].contextID) self.assertEqual(fs['concept1'].unitID, fs['concept2'].unitID)
def test_ignore_units_single_item(self): """ Tests prepare_facts_for_calculation when the last item needs to be ignored """ fact_dict = { 'concept1': [ Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True) ], 'concept2': [ Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True) ], 'concept3': [ Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True) ], } prepared = fact_lib.prepare_facts_for_calculation( fact_dict, unit_ignored_dict={'concept3': True}) self.assertEqual(1, len(prepared))
def test_ignore_units_single_item(self): """ Tests prepare_facts_for_calculation when the last item needs to be ignored """ fact_dict = { 'concept1': [ Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ) ], 'concept2': [ Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ) ], 'concept3': [ Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ) ], } prepared = fact_lib.prepare_facts_for_calculation( fact_dict, unit_ignored_dict={'concept3': True} ) self.assertEqual(1, len(prepared))
def test_prepare_facts_for_calculation_happy_path(self): """ Tests to see prepare_facts_for_calculation works correctly when there is an easy path """ fact_dict = { 'concept1': [ Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ), Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ) ], 'concept2': [ Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ), Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ) ], } prepared = fact_lib.prepare_facts_for_calculation(fact_dict) self.assertEqual(2, len(prepared)) for fs in prepared: self.assertEqual(2, len(fs)) self.assertEqual( fs['concept1'].contextID, fs['concept2'].contextID ) self.assertEqual(fs['concept1'].unitID, fs['concept2'].unitID)
def test_prepare_facts_for_calculation_happy_path(self): fact_dict = {'concept1': [Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True), Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True)], 'concept2': [Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True), Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True)], } prepared = fact_lib.prepare_facts_for_calculation(fact_dict) self.assertEqual(2, len(prepared)) for fs in prepared: self.assertEqual(2, len(fs)) self.assertEqual(fs['concept1'].contextID, fs['concept2'].contextID) self.assertEqual(fs['concept1'].unitID, fs['concept2'].unitID)
def test_prepare_facts_for_calculation_mixed_bag(self): """ Tests to see if prepare_facts_for_calculation works when the path is not easy """ fact_dict = { 'concept1': [ Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ), Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ) ], 'concept2': [ Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ), Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ) ], 'concept3': [ Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ), Mock( contextID='context2', unitID='unit2', isNil=False, xValid=True ), Mock(contextID=None, isNil=False, xValid=True) ], } prepared = fact_lib.prepare_facts_for_calculation(fact_dict) self.assertEqual(1, len(prepared)) for fs in prepared: self.assertEqual(3, len(fs)) self.assertEqual( fs['concept1'].contextID, fs['concept2'].contextID ) self.assertEqual( fs['concept1'].contextID, fs['concept3'].contextID ) self.assertEqual(fs['concept1'].unitID, fs['concept2'].unitID) self.assertEqual(fs['concept1'].unitID, fs['concept3'].unitID)
def test_prepare_facts_for_calculation_mixed_bag(self): """ Tests to see if prepare_facts_for_calculation works when the path is not easy """ fact_dict = { 'concept1': [ Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True), Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True) ], 'concept2': [ Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True), Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True) ], 'concept3': [ Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True), Mock(contextID='context2', unitID='unit2', isNil=False, xValid=True), Mock(contextID=None, isNil=False, xValid=True) ], } prepared = fact_lib.prepare_facts_for_calculation(fact_dict) self.assertEqual(1, len(prepared)) for fs in prepared: self.assertEqual(3, len(fs)) self.assertEqual(fs['concept1'].contextID, fs['concept2'].contextID) self.assertEqual(fs['concept1'].contextID, fs['concept3'].contextID) self.assertEqual(fs['concept1'].unitID, fs['concept2'].unitID) self.assertEqual(fs['concept1'].unitID, fs['concept3'].unitID)
def test_ignore_units_clean(self): """ Tests prepare_facts_for_calculation when ignore units is on but nothing needs to be ignored """ fact_dict = { 'concept1': [ Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ), Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ) ], 'concept2': [ Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ), Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ) ], 'concept3': [ Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ), Mock( contextID='context2', unitID='unit2', isNil=False, xValid=True ), Mock(contextID=None) ], } prepared = fact_lib.prepare_facts_for_calculation( fact_dict, unit_ignored_dict={'concept3': True} ) self.assertEqual(2, len(prepared))
def test_ignore_units_clean(self): """ Tests prepare_facts_for_calculation when ignore units is on but nothing needs to be ignored """ fact_dict = { 'concept1': [ Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True), Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True) ], 'concept2': [ Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True), Mock(contextID='context1', unitID='unit2', isNil=False, xValid=True) ], 'concept3': [ Mock(contextID='context1', unitID='unit1', isNil=False, xValid=True), Mock(contextID='context2', unitID='unit2', isNil=False, xValid=True), Mock(contextID=None) ], } prepared = fact_lib.prepare_facts_for_calculation( fact_dict, unit_ignored_dict={'concept3': True}) self.assertEqual(2, len(prepared))
def test_first_ignored_unit(self): """ Tests prepare_for_calculation when the first item needs to be ignored """ pair1 = ( 'concept1', [ Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ) ] ) pair2 = ( 'concept2', [ Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ) ] ) pair3 = ( 'concept3', [ Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ) ] ) fact_dict_ordered = OrderedDict([pair1, pair2, pair3]) keys = list(fact_dict_ordered.keys()) self.assertEqual('concept1', keys[0]) prepared = fact_lib.prepare_facts_for_calculation( fact_dict_ordered, unit_ignored_dict={'concept1': True} ) self.assertEqual(1, len(prepared))
def test_ignore_units(self): fact_dict = { 'concept1': [ Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ), Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ) ], 'concept2': [ Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ), Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ) ], 'concept3': [ Mock( contextID='context1', unitID='unit1', isNil=False, xValid=True ), Mock( contextID='context1', unitID='unit2', isNil=False, xValid=True ), Mock(contextID=None, isNil=False, xValid=True) ] } prepared = fact_lib.prepare_facts_for_calculation( fact_dict, unit_ignored_dict={'concept3': True} ) self.assertEqual(0, len(prepared))