def testCriaUmaCopiaDoConjuntoDeProducoesInformados(self):
   vn = set(['S', 'V'])
   vt = set(['a', 'b', 'c'])
   s = 'S'
   producoes = set()
   producoes.add(Producao('S', 'aV'))
   producoes.add(Producao('V', 'b'))
   g1 = GramaticaRegular(producoes, vn,vt,s)
   self.assertEqual(producoes, g1.obterProducoes())
   producoes.pop()
   self.assertNotEqual(producoes, g1.obterProducoes())
 def testDadoUmNaoTerminalQueNaoExisteNaGramaticaSeTentarObterProducoesRetornaConjuntoVazio(self):
   vn = set(['S', 'V'])
   vt = set(['a', 'b', 'c'])
   s = 'S'
   producoes_s = set([Producao('S', 'aV'), Producao('S', 'b')])
   producoes_v = set([Producao('V', 'aS'), Producao('V', 'c')])
   producoes = set()
   producoes.update(producoes_s)
   producoes.update(producoes_v)
   
   gramatica = GramaticaRegular(producoes, vn,vt,s)
   self.assertEqual(set(), gramatica.obterProducoesDoAlpha('T'))
 def testDadoUmNaoTerminalSabeQuaisSaoAsProducoesDesseNaoTerminal(self):
   vn = set(['S', 'V'])
   vt = set(['a', 'b', 'c'])
   s = 'S'
   producoes_s = set([Producao('S', 'aV'), Producao('S', 'b')])
   producoes_v = set([Producao('V', 'aS'), Producao('V', 'c')])
   producoes = set()
   producoes.update(producoes_s)
   producoes.update(producoes_v)
   
   gramatica = GramaticaRegular(producoes, vn,vt,s)
   self.assertEqual(producoes_s, gramatica.obterProducoesDoAlpha('S'))
   self.assertEqual(producoes_v, gramatica.obterProducoesDoAlpha('V'))