'''
unexplained behavior: py.test generative test appears to repeat tests

USE:
   > py.test test_PNG_colorization
   
NOTES:
   o Requires installation of py.test (http://codespeak.net/py/dist/test.html)

AUTHOR:
   jim.vickroy@noaa.gov
'''

from   __future__ import absolute_import

class Image(object):
   _palettes_ = {
      'Flame' : ['OPEN'], # no filter
      'Green' : ['PTHK_0'],
      'Blue'  : ['BE12A_0'],
      'Gray'  : ['AL12_1'],
      }
   def __init__(self):
      self.info = dict()
   def __str__(self):
      return self.__class__.__name__


source = Image()



def process(source):
   filter = source.info['wavelnth']
   processed = Image()
   processed.info = source.info
   for palette, filters in Image._palettes_.items():
      if filter in filters:
         processed.info['palette'] = palette
         break
   else:
      raise NotImplementedError('no palette defined for the %s filter' % filter)
   return processed


def test_filters():
   for filter, palette in zip(('OPEN','PTHK_0','BE12A_0','AL12_1'), ('Flame','Green','Blue','Gray')):
      source.info['wavelnth'] = filter
      processed = process(source)
      print 'yielding:',check,processed,palette
      yield check, processed, palette                                          # NOTE: this does not work as expected
      #~ assert processed.info['palette'] == palette, processed.info['palette'] # NOTE: this works as expected!
      
      
def check(image,palette):
   print 'checking %s palette' % image
   assert image.info['palette'] == palette, image.info['palette']
