1  """Unit test 
  2  """ 
  3  from bmrblib.pystarlib.File import File 
  4  from bmrblib.pystarlib import Utils 
  5   
  6  import __init__ 
  7   
  8  import os    
  9  import zipfile 
 10  import urllib.request, urllib.parse, urllib.error 
 11  from unittest import TestCase 
 12   
 13   
 15          strf           = File(verbosity=2)         
 16           
 18              """STAR parse""" 
 19              text = """data_no_comments_here 
 20   
 21  save_comment 
 22     _Saveframe_category  comment 
 23     loop_ 
 24          _comment 
 25          _every_flag 
 26          _category 
 27   
 28  '#It has very upfield-shifted H5', H5" @ 3.935,4.012 ppm' 
 29  ; 
 30  ####################### 
 31  #  BOGUS              # 
 32  ####################### 
 33   
 34  ; 
 35           
 36      BOGUS_CATEGORY 
 37   
 38       stop_ 
 39  save_ 
 40  """ 
 41              self.assertFalse(self.strf.parse(text=text))                                     
 42              st = self.strf.star_text() 
 43   
 44   
 45              exp = """data_no_comments_here 
 46  save_comment   _Saveframe_category  comment   loop_ 
 47          _comment 
 48          _every_flag 
 49          _category 
 50  ; 
 51  #It has very upfield-shifted H5', H5" @ 3.935,4.012 ppm 
 52  ; 
 53  ; 
 54  ####################### 
 55  #  BOGUS              # 
 56  ####################### 
 57   
 58  ;    BOGUS_CATEGORY     stop_ save_ 
 59  """ 
 60              self.assertTrue(Utils.equalIgnoringWhiteSpace(exp, st)) 
  61   
  65                 
 66  """ 
 67  Extra Test Routine going over some entries in the NMR Restraints Grid 
 68  """ 
 69 -def testEntry(entry): 
  70      print("Testing Entry") 
 71      strf = File()  
 72      __init__.verbosity = 2 
 73       
 74      stage = "2-parsed" 
 75   
 76      urlLocation = ("http://www.bmrb.wisc.edu/WebModule/MRGridServlet?"+ 
 77      "block_text_type=%s&file_detail=%s&pdb_id=%s"+ 
 78      "&program=STAR&request_type=archive&subtype=full&type=entry") % (stage, stage, entry) 
 79      fnamezip = entry+".zip" 
 80   
 81      urllib.request.urlretrieve(urlLocation, fnamezip) 
 82   
 83      zfobj = zipfile.ZipFile(fnamezip) 
 84      fname = None 
 85      for name in zfobj.namelist():     
 86          if name.endswith('.str'): 
 87              fname = name             
 88      orgWattosWrittenFile     = entry+"_org.str" 
 89      pystarlibWrittenFile     = entry+"_pystar.str" 
 90      wattosWrittenFile        = entry+"_wattos.str" 
 91      diffOrgPystarFile        = entry+"_diff_org_pystar.str" 
 92      diffPystarWattosFile     = entry+"_diff_pystar_wattos.str" 
 93      diffOrgWattosWattosFile  = entry+"_diff_org_wattos_wattos.str" 
 94   
 95      outfile = open(orgWattosWrittenFile, 'w') 
 96      outfile.write(zfobj.read(fname)) 
 97      outfile.close()       
 98      zfobj.close()           
 99      strf.filename  = orgWattosWrittenFile    
100           
101      strf.read() 
102      strf.filename  = pystarlibWrittenFile 
103      strf.write() 
104   
105      if False: 
106           
107           
108          try: 
109       
110              cmd = "diff --ignore-all-space --ignore-blank-lines %s %s > %s" % ( orgWattosWrittenFile, pystarlibWrittenFile, diffOrgPystarFile) 
111              os.system(cmd) 
112              if not os.path.exists(diffOrgPystarFile): 
113                  print("WARNING: failed to diff files: ", orgWattosWrittenFile, pystarlibWrittenFile) 
114               
115       
116              print("DEBUG: rewrite to Java formating for comparison") 
117              cmd = "java -Xmx256m Wattos.Star.STARFilter %s %s ." % ( pystarlibWrittenFile, wattosWrittenFile) 
118              os.system(cmd) 
119              if not os.path.exists(wattosWrittenFile): 
120                  print("WARNING: failed to rewrite file: " + pystarlibWrittenFile) 
121              else: 
122       
123                  cmd = "diff --ignore-all-space --ignore-blank-lines %s %s > %s" % ( pystarlibWrittenFile, wattosWrittenFile, diffPystarWattosFile) 
124                  os.system(cmd) 
125                  if not os.path.exists(diffPystarWattosFile): 
126                      print("WARNING: failed to diff file: ", pystarlibWrittenFile, wattosWrittenFile) 
127       
128                  cmd = "diff --ignore-all-space --ignore-blank-lines %s %s > %s" % ( orgWattosWrittenFile, wattosWrittenFile, diffOrgWattosWattosFile) 
129                  os.system(cmd) 
130                  if not os.path.exists(diffOrgWattosWattosFile): 
131                      print("WARNING: failed to diff file: ", orgWattosWrittenFile, wattosWrittenFile) 
132          except: 
133       
134              pass 
135       
136      try: 
137          os.unlink(entry+".zip") 
138          os.unlink(orgWattosWrittenFile) 
139          os.unlink(pystarlibWrittenFile) 
140      except: 
141          pass 
 142       
143       
145      """ No need to test all entries for the unit testing frame work""" 
146   
147      pdbList = ('1edp') 
148      try: 
149          from Wattos.Utils import PDBEntryLists  
150          print("Imported Wattos.Utils; but it's not essential") 
151          pdbList = PDBEntryLists.getBmrbNmrGridEntries()[0:1]  
152      except: 
153          print("Skipping import of Wattos.Utils; it's not needed") 
154       
155      for entry in pdbList: 
156          print(entry) 
157          testEntry(entry) 
 158   
159       
160       
161       
162       
163        
164  """ 
165  Extra Test Routine going over some entries in the NMR Restraints Grid 
166  """ 
175       
176           
177  if __name__ == "__main__": 
178      testAllEntries() 
179   
180   
181      print("Done with STAR.FileTest") 
182