def p_full_rule(p): '''full_rule : rule_params ASSIGN_RULE terms''' global atn pars = p[1] terms = add_up_attributes(pars, p[3]) label = pars[0] if label in atn: atn[label] = unite(atn[label], terms) else: atn[label] = terms
def test_unite(self): tests = [ ( ( { 1: [('KILO', None, 0.0, 2), ('ECHO', None, 0.0, const.STATE_END)], 2: [('YANKEE', None, 0.0, const.STATE_END)], const.STATE_CONJ_A1: [('QUEBEC', None, 0.0, const.STATE_END)] }, { 1: [('SIERRA', None, 0.0, 2)], 2: [('WHISKY', None, 0.0, const.STATE_END)], } ), { 1: [('KILO', None, 0.0, 2), ('ECHO', None, 0.0, const.STATE_END), ('SIERRA', None, 0.0, 3)], 2: [('YANKEE', None, 0.0, const.STATE_END)], 3: [('WHISKY', None, 0.0, const.STATE_END)], const.STATE_CONJ_A1: [('QUEBEC', None, 0.0, const.STATE_END)] } ), ( ( { 1: [('KILO', None, 0.0, 2), ('ECHO', None, 0.0, const.STATE_END)], 2: [('YANKEE', None, 0.0, const.STATE_END)], }, { 1: [('SIERRA', None, 0.0, 2)], 2: [('WHISKY', None, 0.0, const.STATE_END)], const.STATE_CONJ_A1: [('QUEBEC', None, 0.0, const.STATE_END)] } ), { 1: [('KILO', None, 0.0, 2), ('ECHO', None, 0.0, const.STATE_END), ('SIERRA', None, 0.0, 3)], 2: [('YANKEE', None, 0.0, const.STATE_END)], 3: [('WHISKY', None, 0.0, const.STATE_END)], const.STATE_CONJ_A1: [('QUEBEC', None, 0.0, const.STATE_END)] } ), ] for par, target in tests: actual = gtools.unite(par[0], par[1]) self.assertDictEqual(actual, target) self.assertRaises(Exception, gtools.unite, (( ( { 1: [('KILO', None, 0.0, 2), ('ECHO', None, 0.0, const.STATE_END)], 2: [('YANKEE', None, 0.0, const.STATE_END)], }, { 1: [('SIERRA', None, 0.0, 2)], 2: [('WHISKY', None, 0.0, const.STATE_END)], const.STATE_CONJ_A1: [('QUEBEC', None, 0.0, const.STATE_END)] } ), { 1: [('KILO', None, 0.0, 2), ('ECHO', None, 0.0, const.STATE_END), ('SIERRA', None, 0.0, 3)], 2: [('YANKEE', None, 0.0, const.STATE_END)], 3: [('WHISKY', None, 0.0, const.STATE_END)], const.STATE_CONJ_A1: [('QUEBEC', None, 0.0, const.STATE_END)] } )))