#
# LSST Data Management System
# Copyright 2015 LSST Corporation.
#
# This product includes software developed by the
# LSST Project (http://www.lsst.org/).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.    See the
# GNU General Public License for more details.
#
# You should have received a copy of the LSST License Statement and
# the GNU General Public License along with this program.  If not,
# see <http://www.lsstcorp.org/LegalNotices/>.
#

import unittest
import os
import lsst.utils.tests
from lsst.daf.persistence import FsScanner

# Define the root of the tests relative to this file
ROOT = os.path.abspath(os.path.dirname(__file__))


class FsScannerTestCase(unittest.TestCase):

    def test1(self):
        template = '%(visit)d%(state)1s.fits.fz[%(extension)d]'
        scanner = FsScanner(template)
        res = scanner.processPath(os.path.join(ROOT, 'testFsScanner'))
        self.assertEqual(res, {'1038843o.fits.fz': {'state': 'o', 'visit': 1038843}})

    def test2(self):
        template = 'raw_v%(visit)d_f%(filter)1s.fits.gz'
        scanner = FsScanner(template)
        res = scanner.processPath(os.path.join(ROOT, 'testFsScanner'))
        self.assertEqual(res, {'raw_v1_fg.fits.gz': {'visit': 1, 'filter': 'g'}})


class TestMemory(lsst.utils.tests.MemoryTestCase):
    pass


def setup_module(module):
    lsst.utils.tests.init()


if __name__ == "__main__":
    lsst.utils.tests.init()
    unittest.main()
