def test_addThreeRemoveTwoInArray(self):
     gr = Grammar()
     self.assertEqual(gr.add_nonterm([TempClass, Second, Third]),
                      [TempClass, Second, Third])
     self.assertEqual(gr.nonterms_count(), 3)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertEqual(gr.nonterm(TempClass), TempClass)
     self.assertIsNotNone(gr.get_nonterm(Second))
     self.assertIsNotNone(gr.nonterm(Second))
     self.assertEqual(gr.nonterm(Second), Second)
     self.assertIsNotNone(gr.get_nonterm(Third))
     self.assertIsNotNone(gr.nonterm(Third))
     self.assertEqual(gr.nonterm(Third), Third)
     self.assertEqual(gr.remove_nonterm([Third, TempClass]),
                      [Third, TempClass])
     self.assertEqual(gr.nonterms_count(), 1)
     self.assertTrue(gr.have_nonterm(Second))
     self.assertFalse(gr.have_nonterm(TempClass))
     self.assertFalse(gr.have_nonterm(Third))
     self.assertEqual(gr.add_nonterm(Third), [Third])
     self.assertEqual(gr.nonterms_count(), 2)
     self.assertIsNotNone(gr.nonterm(Second))
     self.assertEqual(gr.nonterm(Second), Second)
     self.assertIsNotNone(gr.get_nonterm(Second))
     self.assertIsNotNone(gr.nonterm(Third))
     self.assertEqual(gr.nonterm(Third), Third)
     self.assertIsNotNone(gr.get_nonterm(Third))
Esempio n. 2
0
 def test_shouldNotSetStartSymbol(self):
     g = Grammar(nonterminals=[A, B])
     self.assertFalse(g.start_isSet())
     with self.assertRaises(NotNonterminalException):
         g.start_set('asdf')
     self.assertFalse(g.start_isSet())
     self.assertFalse(g.start_is('asdf'))
Esempio n. 3
0
 def test_addThreeInTuple(self):
     gr = Grammar(terminals=('A', 'B', 'C'))
     self.assertTrue(gr.have_term('A'))
     self.assertTrue(gr.have_term('B'))
     self.assertTrue(gr.have_term('C'))
     self.assertTrue(gr.have_term(['A', 'B', 'C']))
     self.assertFalse(gr.have_term('D'))
 def test_shouldNotSetStartSymbol(self):
     g = Grammar(nonterminals=[A])
     self.assertFalse(g.start_isSet())
     with self.assertRaises(NonterminalDoesNotExistsException):
         g.start_set(B)
     self.assertFalse(g.start_isSet())
     self.assertFalse(g.start_is(B))
Esempio n. 5
0
    def test_shouldAddIntoGrammar(self):
        class Tmp1(_R):
            rule = ([NFirst], ['a', 0])

        g = Grammar(terminals=['a', 0], nonterminals=[NFirst], rules=[Tmp1])
        g.add_rule(Tmp1)
        self.assertEqual(g.get_rule(Tmp1), Tmp1)
 def test_addThreeRemoveTwoInArray(self):
     gr = Grammar()
     add = gr.add_term([0, 'asdf', TempClass])
     self.assertEqual(add[0].s, 0)
     self.assertEqual(add[1].s, 'asdf')
     self.assertEqual(add[2].s, TempClass)
     self.assertEqual(gr.terms_count(), 3)
     self.assertIsNotNone(gr.get_term(0))
     self.assertIsNotNone(gr.term(0))
     self.assertTrue(isinstance(gr.term(0), Terminal))
     self.assertEqual(gr.term(0).s, 0)
     self.assertIsNotNone(gr.get_term('asdf'))
     self.assertIsNotNone(gr.term('asdf'))
     self.assertTrue(isinstance(gr.term('asdf'), Terminal))
     self.assertEqual(gr.term('asdf').s, 'asdf')
     self.assertIsNotNone(gr.get_term(TempClass))
     self.assertIsNotNone(gr.term(TempClass))
     self.assertTrue(isinstance(gr.term(TempClass), Terminal))
     self.assertEqual(gr.term(TempClass).s, TempClass)
     rem = gr.remove_term([0, 'asdf'])
     self.assertEqual(rem[0].s, 0)
     self.assertEqual(rem[1].s, 'asdf')
     self.assertEqual(gr.terms_count(), 1)
     self.assertTrue(gr.have_term(TempClass))
     self.assertFalse(gr.have_term(0))
     self.assertFalse(gr.have_term('asdf'))
     self.assertEqual(gr.add_term(0)[0].s, 0)
     self.assertEqual(gr.terms_count(), 2)
     self.assertTrue(gr.have_term(TempClass))
     self.assertTrue(gr.have_term(0))
     self.assertFalse(gr.have_term('asdf'))
Esempio n. 7
0
 def setUp(self):
     self.g = Grammar(
         terminals=[
             0, 1, 2, 'a', 'b', 'c', TFirst, TSecond, TThird, TInstFirst,
             TInstSecond, TInstThird
         ],
         nonterminals=[NFirst, NSecond, NThird, NFourth, NFifth])
Esempio n. 8
0
 def test_correctAddTwo(self):
     gr = Grammar()
     self.assertEqual(gr.terms_count(), 0)
     self.assertIsNone(gr.get_term(0))
     self.assertIsNone(gr.term(0))
     self.assertIsNone(gr.get_term('asdf'))
     self.assertIsNone(gr.term('asdf'))
     gr.add_term(0)
     self.assertEqual(gr.terms_count(), 1)
     self.assertIsNotNone(gr.get_term(0))
     self.assertIsNotNone(gr.term(0))
     self.assertTrue(isinstance(gr.term(0), Terminal))
     self.assertEqual(gr.term(0).s, 0)
     self.assertIsNone(gr.get_term('asdf'))
     self.assertIsNone(gr.term('asdf'))
     gr.add_term('asdf')
     self.assertEqual(gr.terms_count(), 2)
     self.assertIsNotNone(gr.get_term(0))
     self.assertIsNotNone(gr.term(0))
     self.assertTrue(isinstance(gr.term(0), Terminal))
     self.assertEqual(gr.term(0).s, 0)
     self.assertIsNotNone(gr.get_term('asdf'))
     self.assertIsNotNone(gr.term('asdf'))
     self.assertTrue(isinstance(gr.term('asdf'), Terminal))
     self.assertEqual(gr.term('asdf').s, 'asdf')
 def test_addTwoRemoveOneAndAddThird(self):
     gr = Grammar()
     self.assertEqual(gr.add_nonterm(TempClass), [TempClass])
     self.assertEqual(gr.add_nonterm(Second), [Second])
     self.assertEqual(gr.nonterms_count(), 2)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertEqual(gr.get_nonterm(TempClass), TempClass)
     self.assertIsNotNone(gr.get_nonterm(Second))
     self.assertIsNotNone(gr.nonterm(Second))
     self.assertEqual(gr.get_nonterm(Second), Second)
     self.assertEqual(gr.remove_nonterm(Second), [Second])
     self.assertEqual(gr.nonterms_count(), 1)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertEqual(gr.nonterm(TempClass), TempClass)
     self.assertIsNone(gr.get_nonterm(Second))
     self.assertEqual(gr.add_nonterm(Third), [Third])
     self.assertEqual(gr.nonterms_count(), 2)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertEqual(gr.get_nonterm(TempClass), TempClass)
     self.assertFalse(gr.have_nonterm(Second))
     self.assertIsNone(gr.nonterm(Second))
     self.assertIsNotNone(gr.get_nonterm(Third))
     self.assertIsNotNone(gr.nonterm(Third))
     self.assertEqual(gr.get_nonterm(Third), Third)
Esempio n. 10
0
 def test_addThreeInString(self):
     gr = Grammar(terminals='ABC')
     self.assertTrue(gr.have_term('A'))
     self.assertTrue(gr.have_term('B'))
     self.assertTrue(gr.have_term('C'))
     self.assertTrue(gr.have_term(('A', 'B', 'C')))
     self.assertFalse(gr.have_term('D'))
Esempio n. 11
0
 def test_equalGetTermAndTermMethods(self):
     gr = Grammar()
     ins = TempClass()
     gr.add_term(ins)
     self.assertEqual(gr.terms_count(), 1)
     self.assertEqual(gr.get_term(ins).s, ins)
     self.assertEqual(gr.term(ins).s, ins)
     self.assertEqual(gr.term(ins).s, gr.get_term(ins).s)
Esempio n. 12
0
 def test_getTermTuple(self):
     gr = Grammar()
     gr.add_term([TempClass, 0, 'asdf'])
     g = gr.get_term((0, 'asdf'))
     for i in g:
         self.assertTrue(i.s in [TempClass, 0, 'asdf'])
     self.assertEqual(g[0].s, 0)
     self.assertEqual(g[1].s, 'asdf')
Esempio n. 13
0
 def test_oldStartSymbolShouldStaySame(self):
     g = Grammar(nonterminals=[A, B], start_symbol=A)
     self.assertTrue(g.start_isSet())
     with self.assertRaises(NotNonterminalException):
         g.start_set('asdf')
     self.assertTrue(g.start_isSet())
     self.assertTrue(g.start_is(A))
     self.assertEqual(g.start_get(), A)
Esempio n. 14
0
 def test_removeTwoInTuple(self):
     gr = Grammar()
     gr.add_nonterm([TempClass, Second, Third])
     self.assertEqual(gr.nonterms_count(), 3)
     gr.remove_nonterm((Second, TempClass))
     self.assertEqual(gr.nonterms_count(), 1)
     self.assertFalse(gr.have_nonterm(TempClass))
     self.assertTrue(gr.have_nonterm(Third))
     self.assertFalse(gr.have_nonterm(Second))
Esempio n. 15
0
 def test_removeAllWithoutParam(self):
     gr = Grammar()
     gr.add_nonterm([TempClass, Second, Third])
     self.assertEqual(gr.nonterms_count(), 3)
     gr.remove_nonterm()
     self.assertEqual(gr.nonterms_count(), 0)
     self.assertFalse(gr.have_nonterm(TempClass))
     self.assertFalse(gr.have_nonterm(Second))
     self.assertFalse(gr.have_nonterm(Third))
Esempio n. 16
0
 def test_removeTwoInTuple(self):
     gr = Grammar()
     gr.add_term([0, 'asdf', TempClass])
     self.assertEqual(gr.terms_count(), 3)
     gr.remove_term((0, 'asdf'))
     self.assertEqual(gr.terms_count(), 1)
     self.assertTrue(gr.have_term(TempClass))
     self.assertFalse(gr.have_term('asdf'))
     self.assertFalse(gr.have_term(0))
Esempio n. 17
0
 def test_removeAllWithoutParam(self):
     gr = Grammar()
     gr.add_term([0, 'asdf', TempClass])
     self.assertEqual(gr.terms_count(), 3)
     gr.remove_term()
     self.assertEqual(gr.terms_count(), 0)
     self.assertFalse(gr.have_term(TempClass))
     self.assertFalse(gr.have_term('asdf'))
     self.assertFalse(gr.have_term(0))
Esempio n. 18
0
 def test_addInArray(self):
     gr = Grammar()
     gr.add_nonterm([Second, TempClass])
     self.assertEqual(gr.nonterms_count(), 2)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertEqual(gr.nonterm(TempClass), TempClass)
     self.assertIsNotNone(gr.get_nonterm(Second))
     self.assertIsNotNone(gr.nonterm(Second))
     self.assertEqual(gr.nonterm(Second), Second)
     self.assertIsNone(gr.get_nonterm(Third))
     self.assertIsNone(gr.nonterm(Third))
Esempio n. 19
0
 def test_correctAddOne(self):
     gr = Grammar()
     self.assertEqual(gr.terms_count(), 0)
     self.assertFalse(gr.have_nonterm(TempClass))
     self.assertIsNone(gr.get_nonterm(TempClass))
     self.assertIsNone(gr.nonterm(TempClass))
     gr.add_nonterm(TempClass)
     self.assertEqual(gr.nonterms_count(), 1)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertTrue(issubclass(gr.nonterm(TempClass), TempClass))
     self.assertEqual(hash(gr.nonterm(TempClass)), hash(TempClass))
Esempio n. 20
0
 def test_correctAddOne(self):
     gr = Grammar()
     self.assertEqual(gr.terms_count(), 0)
     self.assertFalse(gr.have_term(0))
     self.assertIsNone(gr.get_term(0))
     self.assertIsNone(gr.term(0))
     gr.add_term(0)
     self.assertEqual(gr.terms_count(), 1)
     self.assertIsNotNone(gr.get_term(0))
     self.assertIsNotNone(gr.term(0))
     self.assertTrue(isinstance(gr.term(0), Terminal))
     self.assertEqual(gr.term(0).symbol(), 0)
Esempio n. 21
0
 def test_addThreeOneDelete(self):
     gr = Grammar(terminals=('A', 'B', 'C'))
     self.assertTrue(gr.have_term('A'))
     self.assertTrue(gr.have_term('B'))
     self.assertTrue(gr.have_term('C'))
     self.assertTrue(gr.have_term(['A', 'B', 'C']))
     self.assertFalse(gr.have_term('D'))
     gr.remove_term('B')
     self.assertTrue(gr.have_term('A'))
     self.assertFalse(gr.have_term('B'))
     self.assertTrue(gr.have_term('C'))
     self.assertTrue(gr.have_term(['A', 'C']))
     self.assertFalse(gr.have_term('D'))
Esempio n. 22
0
 def test_oneSeparateTwoTuple(self):
     gr = Grammar()
     gr.add_nonterm(TempClass)
     self.assertEqual(gr.nonterms_count(), 1)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertEqual(gr.nonterm(TempClass), TempClass)
     gr.add_nonterm((Second, Third))
     self.assertEqual(gr.nonterms_count(), 3)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertIsNotNone(gr.get_nonterm(Second))
     self.assertIsNotNone(gr.nonterm(Second))
     self.assertIsNotNone(gr.get_nonterm(Third))
     self.assertIsNotNone(gr.nonterm(Third))
Esempio n. 23
0
 def test_addInArray(self):
     gr = Grammar()
     gr.add_term([0, 'asdf', TempClass])
     self.assertEqual(gr.terms_count(), 3)
     self.assertIsNotNone(gr.get_term(0))
     self.assertIsNotNone(gr.term(0))
     self.assertTrue(isinstance(gr.term(0), Terminal))
     self.assertEqual(gr.term(0).s, 0)
     self.assertIsNotNone(gr.get_term('asdf'))
     self.assertIsNotNone(gr.term('asdf'))
     self.assertTrue(isinstance(gr.term('asdf'), Terminal))
     self.assertEqual(gr.term('asdf').s, 'asdf')
     self.assertIsNotNone(gr.get_term(TempClass))
     self.assertIsNotNone(gr.term(TempClass))
     self.assertTrue(isinstance(gr.term(TempClass), Terminal))
     self.assertEqual(gr.term(TempClass).s, TempClass)
 def test_add_remove_add_one(self):
     gr = Grammar()
     self.assertEqual(gr.nonterms_count(), 0)
     self.assertFalse(gr.have_nonterm(TempClass))
     self.assertIsNone(gr.get_nonterm(TempClass))
     self.assertIsNone(gr.nonterm(TempClass))
     self.assertEqual(gr.add_nonterm(TempClass), [TempClass])
     self.assertEqual(gr.nonterms_count(), 1)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertEqual(gr.nonterm(TempClass), TempClass)
     self.assertEqual(gr.remove_nonterm(TempClass), [TempClass])
     self.assertEqual(gr.nonterms_count(), 0)
     self.assertFalse(gr.have_nonterm(TempClass))
     self.assertIsNone(gr.get_nonterm(TempClass))
     self.assertIsNone(gr.nonterm(TempClass))
Esempio n. 25
0
    def test_shouldProcessInConstructor(self):
        class Tmp1(Rule):
            rules = [([NFirst], [NSecond, 0]), ([NThird], [0, 1]),
                     ([NSecond], [NSecond, 'a'])]

        self.g = Grammar(
            terminals=[
                0, 1, 2, 'a', 'b', 'c', TFirst, TSecond, TThird, TInstFirst,
                TInstSecond, TInstThird
            ],
            nonterminals=[NFirst, NSecond, NThird, NFourth, NFifth],
            rules=[Tmp1])
        r = self.g.get_rule(Tmp1)
        self.assertIsInstance(r, list)
        self.assertEqual(len(r), 3)
        for rule in r:
            self.assertIn(rule.rule, Tmp1.rules)
Esempio n. 26
0
 def test_oneSeparateTwoTuple(self):
     gr = Grammar()
     gr.add_term(0)
     self.assertEqual(gr.terms_count(), 1)
     self.assertIsNotNone(gr.get_term(0))
     self.assertIsNotNone(gr.term(0))
     self.assertTrue(isinstance(gr.term(0), Terminal))
     self.assertEqual(gr.term(0).s, 0)
     gr.add_term(('asdf', TempClass))
     self.assertEqual(gr.terms_count(), 3)
     self.assertIsNotNone(gr.get_term(0))
     self.assertIsNotNone(gr.term(0))
     self.assertTrue(isinstance(gr.term(0), Terminal))
     self.assertEqual(gr.term(0).s, 0)
     self.assertIsNotNone(gr.get_term('asdf'))
     self.assertIsNotNone(gr.term('asdf'))
     self.assertTrue(isinstance(gr.term('asdf'), Terminal))
     self.assertEqual(gr.term('asdf').s, 'asdf')
     self.assertIsNotNone(gr.get_term(TempClass))
     self.assertIsNotNone(gr.term(TempClass))
     self.assertTrue(isinstance(gr.term(TempClass), Terminal))
     self.assertEqual(gr.term(TempClass).s, TempClass)
 def test_addTwoRemoveOneAndAddThird(self):
     gr = Grammar()
     self.assertEqual(gr.add_term(0)[0].s, 0)
     self.assertEqual(gr.add_term('asdf')[0].s, 'asdf')
     self.assertEqual(gr.terms_count(), 2)
     self.assertIsNotNone(gr.get_term(0))
     self.assertIsNotNone(gr.term(0))
     self.assertTrue(isinstance(gr.term(0), Terminal))
     self.assertEqual(gr.term(0).s, 0)
     self.assertIsNotNone(gr.get_term('asdf'))
     self.assertIsNotNone(gr.term('asdf'))
     self.assertTrue(isinstance(gr.term('asdf'), Terminal))
     self.assertEqual(gr.term('asdf').s, 'asdf')
     self.assertEqual(gr.remove_term('asdf')[0].s, 'asdf')
     self.assertEqual(gr.terms_count(), 1)
     self.assertIsNotNone(gr.get_term(0))
     self.assertIsNotNone(gr.term(0))
     self.assertTrue(isinstance(gr.term(0), Terminal))
     self.assertEqual(gr.term(0).s, 0)
     self.assertEqual(gr.add_term(TempClass)[0].s, TempClass)
     self.assertEqual(gr.terms_count(), 2)
     self.assertTrue(gr.have_term(0))
     self.assertFalse(gr.have_term('asdf'))
     self.assertTrue(gr.have_term(TempClass))
Esempio n. 28
0
 def test_correctAddTwo(self):
     gr = Grammar()
     self.assertEqual(gr.nonterms_count(), 0)
     self.assertIsNone(gr.get_nonterm(TempClass))
     self.assertIsNone(gr.nonterm(TempClass))
     self.assertIsNone(gr.get_nonterm(Second))
     self.assertIsNone(gr.nonterm(Second))
     gr.add_nonterm(TempClass)
     self.assertEqual(gr.nonterms_count(), 1)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertTrue(issubclass(gr.nonterm(TempClass), Nonterminal))
     self.assertEqual(gr.nonterm(TempClass), TempClass)
     self.assertIsNone(gr.get_nonterm(Second))
     self.assertIsNone(gr.nonterm(Second))
     gr.add_nonterm(Second)
     self.assertEqual(gr.nonterms_count(), 2)
     self.assertIsNotNone(gr.get_nonterm(TempClass))
     self.assertIsNotNone(gr.nonterm(TempClass))
     self.assertTrue(issubclass(gr.nonterm(TempClass), Nonterminal))
     self.assertEqual(gr.nonterm(TempClass), TempClass)
     self.assertIsNotNone(gr.nonterm(Second))
     self.assertTrue(issubclass(gr.nonterm(Second), Nonterminal))
     self.assertEqual(gr.nonterm(Second), Second)
Esempio n. 29
0
 def test_shouldNotAddOneInvalidNonterminal(self):
     with self.assertRaises(NotNonterminalException):
         Grammar(nonterminals=[A, B, 1])
Esempio n. 30
0
 def test_shouldAddMoreNonterminals(self):
     g = Grammar(nonterminals=[A, B, C])
     self.assertTrue(g.have_nonterm(A))
     self.assertTrue(g.have_nonterm([A, B, C]))
     self.assertFalse(g.have_nonterm(D))