class TestFileSequenceCheckerFileExcludePattern(unittest.TestCase):
    ''' text cases for the file excludes list used (internally) in preparedircontents(). '''

    def setUp(self):
        self.fsc = FileSequenceChecker()
        self.result = {
            DIRS['fileexcludes']: 
            [{
                'fileext': u'.png',
                'filename': u'Name20.',
                'filename2': u'',
                'order': 'normal',
                'seqnum': u'01'
            }, 
            {
                'fileext': u'.png',
                'filename': u'Name20.',
                'filename2': u'',
                'order': 'normal',
                'seqnum': u'06'
            }]
        }
    
    def testFileExcludes(self):
        ''' test if fileexcludes are excluded from the prepared dir contents. '''
        self.fsc.setfileexcludes(['ExcludeMe']) # extends self.fsc.fileexcludes
        self.fsc._prepare_dir_contents(DIRS['fileexcludes'])
        self.assertEqual(self.fsc._dircontents, self.result)
class TestFileSequenceCheckerExcludePattern(unittest.TestCase):
    ''' test cases for the exclude pattern facility. '''
    
    def setUp(self):
        self.fsc = FileSequenceChecker()
        self.result = {
            DIRS['reverse']: 
            [{
              'fileext': u'.png', 
              'seqnum': u'12', 
              'order': 'reverse', 
              'filename2': u'v', 
              'filename': u'_Write'
            }, {
              'fileext': u'.png', 
              'seqnum': u'15', 
              'order': 'reverse', 
              'filename2': u'v', 
              'filename': u'_Write'
            }]
        }
        
    def testExcludePatternMatches(self):
        ''' test setexcludepattern() '''
        self.fsc.setexcludepattern(ur'Write30')
        self.fsc._prepare_dir_contents(DIRS['reverse'])
        self.assertEqual(self.fsc._dircontents, self.result)
        # now set exclude pattern to something else 
        # and ensure we do not match our expected result
        self.fsc.setexcludepattern(ur'Write60')
        self.fsc._prepare_dir_contents(DIRS['reverse'])
        self.assertNotEqual(self.fsc._dircontents, self.result)
class TestFileSequenceCheckerIncludePattern(unittest.TestCase):
    ''' test cases for the include pattern facility '''

    def setUp(self):
        self.fsc = FileSequenceChecker()
        self.result = {
            DIRS['normal']:
            [{
              'fileext': u'.bmp', 
              'seqnum': u'002', 
              'order': 'normal', 
              'filename2': u'', 
              'filename': u'line.'
            }, {
              'fileext': u'.bmp', 
              'seqnum': u'003', 
              'order': 'normal', 
              'filename2': u'', 
              'filename': u'line.'
            }, {
              'fileext': u'.bmp', 
              'seqnum': u'010', 
              'order': 'normal', 
              'filename2': u'', 
              'filename': u'line.'
            }]
        }
    
    def testIncludePatternMatches(self):
        ''' test setincludepattern() '''
        self.fsc.setincludepattern(ur'line')
        self.fsc._prepare_dir_contents(DIRS['normal'])
        self.assertEqual(self.fsc._dircontents, self.result)
        # now set include pattern to something else 
        # and ensure we do not match our expected result
        self.fsc.setincludepattern(ur'x')
        self.fsc._prepare_dir_contents(DIRS['normal'])
        self.assertNotEqual(self.fsc._dircontents, self.result)