1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport os 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport sys 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport antlr3 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport testbase 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport unittest 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverfrom cStringIO import StringIO 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport difflib 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass t020fuzzy(testbase.ANTLRTest): 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def setUp(self): 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.compileGrammar('t020fuzzyLexer.g') 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testValid(self): 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inputPath = os.path.splitext(__file__)[0] + '.input' 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream(open(inputPath).read()) 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = self.getLexer(stream) 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver while True: 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver token = lexer.nextToken() 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if token.type == antlr3.EOF: 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output = lexer.output.getvalue() 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver outputPath = os.path.splitext(__file__)[0] + '.output' 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testOutput = open(outputPath).read() 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver success = (output == testOutput) 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if not success: 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver d = difflib.Differ() 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r = d.compare(output.splitlines(1), testOutput.splitlines(1)) 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.fail( 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ''.join([l.encode('ascii', 'backslashreplace') for l in r]) 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverif __name__ == '__main__': 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver unittest.main() 41