test type

function test_suite = test_type()
    % tests for cosmo_type
    %
    % #   For CoSMoMVPA's copyright information and license terms,   #
    % #   see the COPYING file distributed with CoSMoMVPA.           #
    try % assignment of 'localfunctions' is necessary in Matlab >= 2016
        test_functions = localfunctions();
    catch % no problem; early Matlab versions can use initTestSuite fine
    end
    initTestSuite;

function test_type_basics()
    fn = cosmo_make_temp_filename();
    cleaner = onCleanup(@()delete(fn));

    data = write_data(fn);

    s = cosmo_type(fn);
    assertEqual(s, data);

function test_dim_type_fprintf()
    if cosmo_skip_test_if_no_external('!evalc')
        return
    end

    fn = cosmo_make_temp_filename();
    cleaner = onCleanup(@()delete(fn));

    data = write_data(fn);

    expr = sprintf('cosmo_type(''%s'')', fn);

    s = evalc(expr);
    s_fixed = regexprep(s, 'ans\s*=\s*', '');
    s_fixed = regexprep(s_fixed, '\s*$', '');

    assertEqual(s_fixed, data);

function data = write_data(fn)
    fid = fopen(fn, 'w');
    data = sprintf('foo\nbar%s', cosmo_make_temp_filename());
    fprintf(fid, data);
    fclose(fid);