/*
 * Copyright (C) Tristan Franssen, <tristanfranssen@strawhats.nl>.
 *
 * This software is licensed under the Apache License, Version 2.0 (the "License");
 * You may not use this file except in compliance with the License.
 * You may obtain a copy of the License in the file LICENSE or at
 * http://www.apache.org/licenses/LICENSE-2.0
 */
#ifndef COSMS_CORE_FILE_TEST
#define COSMS_CORE_FILE_TEST

#include "test.h"

COSMS_CORE_TEST_DEFINE(file_open_small_file_read);
COSMS_CORE_TEST_DEFINE(file_open_large_file_read);
COSMS_CORE_TEST_DEFINE(file_open_non_existing_file_read);
COSMS_CORE_TEST_DEFINE(file_open_small_file_write);
COSMS_CORE_TEST_DEFINE(file_open_large_file_write);
COSMS_CORE_TEST_DEFINE(file_open_small_file_append);
COSMS_CORE_TEST_DEFINE(file_open_large_file_append);
COSMS_CORE_TEST_DEFINE(file_open_small_file_read_write);
COSMS_CORE_TEST_DEFINE(file_open_large_file_read_write);

COSMS_CORE_TEST_DEFINE(file_close);
COSMS_CORE_TEST_DEFINE(file_close_non_existing_file);

COSMS_CORE_TEST_DEFINE(file_size_small_file);
COSMS_CORE_TEST_DEFINE(file_size_large);
COSMS_CORE_TEST_DEFINE(file_size_non_existing_file);

COSMS_CORE_TEST_DEFINE(file_read_small_file);
COSMS_CORE_TEST_DEFINE(file_read_large_file);
COSMS_CORE_TEST_DEFINE(file_read_non_existing_file);
COSMS_CORE_TEST_DEFINE(file_read_full_non_existing_file);
COSMS_CORE_TEST_DEFINE(file_read_file_using_wrong_mode);
COSMS_CORE_TEST_DEFINE(file_read_full_file_using_wrong_mode);

COSMS_CORE_TEST_DEFINE(file_write_small_file);
COSMS_CORE_TEST_DEFINE(file_write_large_file);
COSMS_CORE_TEST_DEFINE(file_write_append_small_file);
COSMS_CORE_TEST_DEFINE(file_write_append_large_file);
COSMS_CORE_TEST_DEFINE(file_write_using_wrong_mode);
COSMS_CORE_TEST_DEFINE(file_write_full_file_using_wrong_mode);

COSMS_CORE_TEST_DEFINE(file_delete);

COSMS_CORE_TEST_EXPORT(file, 
    COSMS_CORE_TEST_EXPORT_TEST(file_open_small_file_read),
    COSMS_CORE_TEST_EXPORT_TEST(file_open_large_file_read),
    COSMS_CORE_TEST_EXPORT_TEST(file_open_non_existing_file_read),
    COSMS_CORE_TEST_EXPORT_TEST(file_open_small_file_write),
    COSMS_CORE_TEST_EXPORT_TEST(file_open_large_file_write),
    COSMS_CORE_TEST_EXPORT_TEST(file_open_small_file_append),
    COSMS_CORE_TEST_EXPORT_TEST(file_open_large_file_append),
    COSMS_CORE_TEST_EXPORT_TEST(file_open_small_file_read_write),
    COSMS_CORE_TEST_EXPORT_TEST(file_open_large_file_read_write),

    COSMS_CORE_TEST_EXPORT_TEST(file_close),
    COSMS_CORE_TEST_EXPORT_TEST(file_close_non_existing_file),

    COSMS_CORE_TEST_EXPORT_TEST(file_size_small_file),
    COSMS_CORE_TEST_EXPORT_TEST(file_size_large),
    COSMS_CORE_TEST_EXPORT_TEST(file_size_non_existing_file),

    COSMS_CORE_TEST_EXPORT_TEST(file_read_small_file),
    COSMS_CORE_TEST_EXPORT_TEST(file_read_large_file),
    COSMS_CORE_TEST_EXPORT_TEST(file_read_non_existing_file),
    COSMS_CORE_TEST_EXPORT_TEST(file_read_full_non_existing_file),
    COSMS_CORE_TEST_EXPORT_TEST(file_read_file_using_wrong_mode),
    COSMS_CORE_TEST_EXPORT_TEST(file_read_full_file_using_wrong_mode),

    COSMS_CORE_TEST_EXPORT_TEST(file_write_small_file),
    COSMS_CORE_TEST_EXPORT_TEST(file_write_large_file),
    COSMS_CORE_TEST_EXPORT_TEST(file_write_append_small_file),
    COSMS_CORE_TEST_EXPORT_TEST(file_write_append_large_file),
    COSMS_CORE_TEST_EXPORT_TEST(file_write_using_wrong_mode),
    COSMS_CORE_TEST_EXPORT_TEST(file_write_full_file_using_wrong_mode),

    COSMS_CORE_TEST_EXPORT_TEST(file_delete)
);

#endif