# Copyright 1999 by Jeffrey Chang. All rights reserved. # This code is part of the Biopython distribution and governed by its # license. Please see the LICENSE file that should have been included # as part of this package. from __future__ import print_function import string from Bio._py3k import StringIO from Bio import File import warnings from Bio import BiopythonDeprecationWarning with warnings.catch_warnings(): warnings.simplefilter('ignore', BiopythonDeprecationWarning) from Bio import ParserSupport # pyUnit def pb(b): if b: return 1 return 0 ### TaggingConsumer print("Running tests on TaggingConsumer") class TestHandle: def write(self, s): print(s) h = TestHandle() tc = ParserSupport.TaggingConsumer(handle=h, colwidth=5) tc.start_section() # '***** start_section\n' tc.test1('myline') # 'test1: myline\n' tc.end_section() # '***** end_section\n' ### is_blank_line print("Running tests on is_blank_line") is_blank_line = lambda *args, **keywds: \ pb(ParserSupport.is_blank_line(*args, **keywds)) print(is_blank_line('\n')) # 1 print(is_blank_line('\r\n')) # 1 print(is_blank_line('\r')) # 1 print(is_blank_line('')) # 1 print(is_blank_line('', allow_spaces=1)) # 1 print(is_blank_line('', allow_spaces=0)) # 1 print(is_blank_line(string.whitespace, allow_spaces=1)) # 1 print(is_blank_line('hello')) # 0 print(is_blank_line('hello', allow_spaces=1)) # 0 print(is_blank_line('hello', allow_spaces=0)) # 0 print(is_blank_line(string.whitespace, allow_spaces=0)) # 0 ### safe_readline print("Running tests on safe_readline") data = """This file""" h = File.UndoHandle(StringIO(data)) safe_readline = ParserSupport.safe_readline print(safe_readline(h)) # "This" print(safe_readline(h)) # "file" try: safe_readline(h) except ValueError: print("correctly failed") else: print("ERROR, should have failed") ### safe_peekline print("Running tests on safe_peekline") safe_peekline = ParserSupport.safe_peekline data = """This file""" h = File.UndoHandle(StringIO(data)) print(safe_peekline(h)) # "This" h.readline() print(safe_peekline(h)) # "file" h.readline() try: safe_peekline(h) except ValueError: print("correctly failed") else: print("ERROR, should have failed") h.saveline('hello') print(safe_peekline(h)) # 'hello' ### read_and_call print("Running tests on read_and_call") data = """>gi|132871|sp|P19947|RL30_BACSU 50S RIBOSOMAL PROTEIN L30 (BL27) MAKLEITLKRSVIGRPEDQRVTVRTLGLKKTNQTVVHEDNAAIRGMINKVSHLVSVKEQ >gi|132679|sp|P19946|RL15_BACSU 50S RIBOSOMAL PROTEIN L15 MKLHELKPSEGSRKTRNRVGRGIGSGNGKTAGKGHKGQNARSGGGVRPGFEGGQMPLFQRLPKRGFTNIN RKEYAVVNLDKLNGFAEGTEVTPELLLETGVISKLNAGVKILGNGKLEKKLTVKANKFSASAKEAVEAAG GTAEVI """ h = File.UndoHandle(StringIO(data)) rac = ParserSupport.read_and_call lines = [] def m(line): lines.append(line) rac(h, m) print(lines[-1][:10]) # '>gi|132871' rac(h, m, start='MAKLE', end='KEQ', contains='SVIG') rac(h, m, blank=0) # These should be errors. If they're not, then complain. try: rac(h, m, blank=1) except ValueError: print("correctly failed") else: print("ERROR, should have failed") try: rac(h, m, start='foobar') except ValueError: print("correctly failed") else: print("ERROR, should have failed") try: rac(h, m, end='foobar') except ValueError: print("correctly failed") else: print("ERROR, should have failed") try: rac(h, m, contains='foobar') except ValueError: print("correctly failed") else: print("ERROR, should have failed") try: rac(h, m, blank=0) except ValueError: print("correctly failed") else: print("ERROR, should have failed") ### attempt_read_and_call print("Running tests on attempt_read_and_call") data = """>gi|132871|sp|P19947|RL30_BACSU 50S RIBOSOMAL PROTEIN L30 (BL27) MAKLEITLKRSVIGRPEDQRVTVRTLGLKKTNQTVVHEDNAAIRGMINKVSHLVSVKEQ >gi|132679|sp|P19946|RL15_BACSU 50S RIBOSOMAL PROTEIN L15 MKLHELKPSEGSRKTRNRVGRGIGSGNGKTAGKGHKGQNARSGGGVRPGFEGGQMPLFQRLPKRGFTNIN RKEYAVVNLDKLNGFAEGTEVTPELLLETGVISKLNAGVKILGNGKLEKKLTVKANKFSASAKEAVEAAG GTAEVI""" h = File.UndoHandle(StringIO(data)) arac = lambda *args, **keywds: \ pb(ParserSupport.attempt_read_and_call(*args, **keywds)) lines = [] def m(line): lines.append(line) print(arac(h, m, contains="RIBOSOMAL PROTEIN")) # 1 print(arac(h, m, start="foobar")) # 0 print(arac(h, m, blank=1)) # 0 print(arac(h, m, end="LVSVKEQ")) # 1