# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-

"""
Copyright (c) 2014-2017, Regents of the University of California

This file is part of NDN DeLorean, An Authentication System for Data Archives in
Named Data Networking.  See AUTHORS.md for complete list of NDN DeLorean authors
and contributors.

NDN DeLorean 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.

NDN DeLorean 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 GNU General Public License along with NDN
DeLorean, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
"""

top = '..'

def build(bld):
    # Unit tests
    if bld.env['WITH_TESTS']:
        # main()
        unit_test_main = bld(
            target='unit-tests-main',
            name='unit-tests-main',
            features='cxx',
            use='core-objects',
            source='main.cpp',
            install_path=None,
          )

        # common test modules
        unit_test_base = bld(
            target='unit-tests-base',
            name='unit-tests-base',
            features='cxx',
            source=bld.path.ant_glob(['*.cpp'], excl='main.cpp'),
            use='core-objects',
            headers='../common.hpp boost-test.hpp',
            install_path=None,
            defines=['TEST_HOME_PATH=\"%s/home-tests\"' %(bld.bldnode)],
          )

        # unit tests
        unit_tests = bld.program(
            target='../unit-tests',
            features='cxx cxxprogram',
            source=bld.path.ant_glob(['core/**/*.t.cpp', 'daemon/**/*.t.cpp']),
            use='core-objects daemon-objects unit-tests-base unit-tests-main',
            includes='.',
            install_path=None,
            defines=['TEST_DB_PATH=\"%s/db-tests\"' %(bld.bldnode),
                     'TEST_KEYCHAIN_PATH=\"%s/keychain-tests\"' %(bld.bldnode),
                     'TEST_LOGGER_PATH=\"%s/logger-tests\"' %(bld.bldnode)],
          )
