def getC1(self): test1="""\ param <%ArrayList<point>%> c1: valid 0: <% %c1%=null;%> valid 1: <% %c1%=null;%> invalid 0: c1 < 5 c1 > 3 """ c1=Input(tokens=self.parser.input.parseString(test1)[0]) try: c1.populate().next() except StopIteration: pass else: self.fail('Why has execution stopped') return c1
class SimpleTests(unittest.TestCase): def setUp(self): """Call before every test case.""" self.parser = Parser() self.input = None self.input = Input() def testNormal1(self): test="""\ param <%ArrayList<point>%> c1: dependsOn x1,x2,y1,y2: <% c1=new ArrayList(); c1.add(new Point(%x1%,%y1%)); c1.add(new Point(%x2%,%y2%)); %> out: returns >= (x1+y1) - (x2-y2) invalid 0: <%c1=null;%> out: throws <%.GetType().Name==NullReferenceException%>""" self.input.tokens=self.parser.input.parseString(test)[0] gen=self.input.populate() try: gen.next() except StopIteration: pass name=self.input.name inherits=self.input.inherits dataType=self.input.dataType assert name=="c1",name assert len(inherits)==0,inherits assert dataType=="ArrayList<point>",returns def testNormal2(self): test="""\ param c2(a,b) """ self.input.tokens=self.parser.input.parseString(test)[0] gen=self.input.populate() try: gen.next() except StopIteration: pass name=self.input.name inherits=self.input.inherits assert name=="c2",name assert inherits[0]=='a',inherits dataType=self.input.dataType assert dataType is None, dataType def testNormal3(self): test="""\ param <%ArrayList<point>%> c1: valid 0: <%c1=null;%> out: returns <%.GetType().Name==NullReferenceException%> invalid 0: <%c1=null;%> out: returns <%.GetType().Name==NullReferenceException%> """ self.input.tokens=self.parser.input.parseString(test)[0] gen=self.input.populate() try: gen.next() except StopIteration: pass else: self.fail('Why has execution stopped') name=self.input.name assert name=="c1",name assert self.input.validPartitions assert self.input.invalidPartitions def testEraseBug(self): self.input=Input([["param","c3","x4"]]) gen=self.input.populate() try: gen.next() except StopIteration: pass assert self.input.name=="c3",self.input.name def testDefective1(self): test="""\ param <%ArrayList<point>%> c1: valid 0: <%c1=null;%> out: returns <%.GetType().Name==NullReferenceException%> valid 0: <%c1=null;%> out: returns <%.GetType().Name==NullReferenceException%> """ self.input.tokens=self.parser.input.parseString(test)[0] gen=self.input.populate() self.assertRaises(DuplicateDefinitionException,gen.next) def testValueCount1(self): cut=self.input test="""\ param <%ArrayList<point>%> c1: valid 0: <%c1=null;%> valid 1: <%c1=null;%> """ self.input.tokens=self.parser.input.parseString(test)[0] try: cut.populate().next() except StopIteration: pass else: self.fail('Why has execution stopped') assert cut.valueCount==(2,0), cut.valueCount assert cut.valueCount==(2,0), cut.valueCount def testValueCount2(self): cut=self.input test="""\ param <%ArrayList<point>%> c1: valid 0: <% %c1%=null;%> valid 1: <% %c1%=null;%> invalid 0: c1 < 5 c1 > 3 """ cut.tokens=self.parser.input.parseString(test)[0] try: cut.populate().next() except StopIteration: pass else: self.fail('Why has execution stopped') assert 5-sum(cut.valueCount)<=1 assert 5-sum(cut.valueCount)<=1 def getC1(self): test1="""\ param <%ArrayList<point>%> c1: valid 0: <% %c1%=null;%> valid 1: <% %c1%=null;%> invalid 0: c1 < 5 c1 > 3 """ c1=Input(tokens=self.parser.input.parseString(test1)[0]) try: c1.populate().next() except StopIteration: pass else: self.fail('Why has execution stopped') return c1 def testInheritOnly1(self): cut=self.input test2='''\ param c2(c1) ''' cut.tokens=self.parser.input.parseString(test2)[0] gen=cut.populate() c=True try: typ,ini = gen.next() assert typ=='ini',typ assert ini=='c1',ini c=False gen.send(self.getC1()) except StopIteration: if c: self.fail("I haven't been asked any values") else: self.fail('Why has execution stopped') assert 5-sum(cut.valueCount)<=1 assert 5-sum(cut.valueCount)<=1 def testTransform1(self): cut=self.input cut.name='x' inh=InheritedPartition() s=SubPartition() inh.subPartitions.append(s) s.containsExternalCode=True s.code='hello %w% %w%' s.inputName='w' s=cut._Input__transformPartition(inh)[0] assert isinstance(s,SubPartition) assert s.code=='hello %x% %x%' assert s.inputName=='x'