#encoding: utf-8

testutils_src = """
utils/jsonism.c
utils/value_utils.c
utils/coll_utils.c
""".split()

testserverutils_src = """
server-utils/ipc_call.c
server-utils/mlib_utils.c
""".split()

test_xmmstypes_src = """
xmmsv/t_coll.c
xmmsv/t_xmmsv.c
xmmsv/t_xmmsv_serialization.c
""".split()

test_server_src = """
server/t_streamtype.c
""".split()

test_mlib_src = """
server/t_medialib.c
""".split()

test_playlist_src = """
server/t_playlist.c
""".split()

test_collection_src = """
server/t_collection.c
""".split()

test_xform_src = """
server/t_xform.c
""".split()

mlib_runner_src = """
server/medialib-runner.c
""".split()

test_cli_src = """
client/t_command_trie.c
"""

def configure(conf):
    conf.load("unittest", tooldir="waftools")
    conf.check_cc(header_name="CUnit/CUnit.h")
    conf.check_cc(lib="cunit", uselib_store="cunit")
    conf.check_cc(lib="ncurses", uselib_store="ncurses", mandatory=False)

def build(bld):
    bld(features = "c",
        target = "testutils_json",
        source = "utils/json.c",
        uselib = "DISABLE_MISSINGPROTOTYPES DISABLE_WRITESTRINGS",
        install_path = None,
        )

    bld(features = 'c',
        target = 'memorystatus',
        source = ['runner/memory_status.c'],
        includes = 'utils',
        uselib = 'valgrind DISABLE_UNUSEDBUTSETVARIABLE',
        defines = ["HAVE_VALGRIND=%d" % int(bld.env.have_valgrind)],
        install_path = None,
    )

    bld(features = "c cstlib",
        target = "testutils",
        source = testutils_src,
        use = "testutils_json",
        includes = ". ../src/include ../src/includepriv",
        uselib = "glib2",
        install_path = None
        )

    bld(features = 'c cprogram test',
        target = 'test_xmmstypes',
        source = test_xmmstypes_src,
        includes = '. .. runner ../src ../src/include',
        use = 'xmmstypes xmmsutils',
        uselib = 'cunit ncurses DISABLE_WRITESTRINGS',
        install_path = None
        )

    if bld.env.BUILD_XMMS2D:
        bld(features = "c cstlib",
            target = "testserverutils",
            source = testserverutils_src,
            includes = ". ../src/include ../src/includepriv",
            uselib = "glib2",
            use = "xmms2core",
            install_path = None
            )

        bld(features = 'c cprogram test',
            target = 'test_server',
            source = test_server_src,
            includes = '. .. runner ../src ../src/includepriv ../src/include',
            use = 'xmms2core',
            uselib = 'cunit ncurses DISABLE_WRITESTRINGS',
            install_path = None
            )

        bld(features = "c cprogram test",
            target = "test_medialib",
            source = test_mlib_src,
            includes = '. .. runner ../src ../src/includepriv ../src/include',
            use = "testutils testserverutils",
            uselib = "cunit ncurses DISABLE_WRITESTRINGS",
            install_path = None
            )

        bld(features = "c cprogram test",
            target = "test_playlist",
            source = test_playlist_src,
            includes = '. .. runner ../src ../src/includepriv ../src/include',
            use = "testutils testserverutils",
            uselib = "cunit ncurses DISABLE_WRITESTRINGS",
            install_path = None
            )

        bld(features = "c cprogram test",
            target = "test_collection",
            source = test_collection_src,
            includes = '. .. runner ../src ../src/includepriv ../src/include',
            use = "testutils testserverutils",
            uselib = "cunit ncurses DISABLE_WRITESTRINGS",
            install_path = None
            )

        bld(features = "c cprogram test",
            target = "test_xform",
            source = test_xform_src,
            includes = '. .. runner ../src ../src/includepriv ../src/include',
            use = "testutils testserverutils",
            uselib = "cunit ncurses DISABLE_WRITESTRINGS",
            install_path = None
            )

        bld(features = "c cprogram test",
            target = "medialib-runner",
            source = mlib_runner_src,
            includes = '. .. runner ../src ../src/includepriv ../src/include',
            use = "testutils testserverutils memorystatus",
            install_path = None,
            ut_cwd = ".."
            )

    if "src/clients/nycli" in bld.env.XMMS_OPTIONAL_BUILD:
        bld(features = 'c cprogram test',
            target = 'test_cli',
            source = test_cli_src,
            includes = '. .. runner ../src/include ../src/clients/nycli',
            use = 'xmmsutils xmmscli',
            uselib = 'cunit ncurses DISABLE_WRITESTRINGS',
            install_path = None
            )

def options(o):
    o.load("unittest", tooldir="waftools")
