/*
 * test.d
 * Copyright (C) 2019 Victor Porton <porton@narod.ru>
 *
 * 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 GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

module test;

import std.stdio;
import libcomcom_wrapper;

void main(string[] args)
{
    // Tests
    libComComInitializer();
    scope(exit) libComComDestructor();

    assert(runCommand("cat", ["cat"], "qwe", 5000) == "qwe");

    {
        char[] buf = new char[1000000];
        for(int i=0; i<1000000; ++i)
            buf[i] = cast(char) (i % 3);
        assert(runCommand("cat", ["cat"], cast(const) buf, 5000) == buf);
    }

    {
        char[] buf = new char[1000000];
        for(int i=0; i<1000000; ++i)
            buf[i] = cast(char) (i % 3);
        string output = runCommand("dd",
                                   ["dd", "bs=100000", "count=10", "iflag=fullblock"],
                                   cast(const) buf,
                                   5000);
        assert(output == buf);
    }

    writeln("Tests passed.");
}