#include <gtest/gtest.h>

#include <stdint.h>
#include <string.h>


extern "C" void test_clean(void);
extern "C" void test_compare(void);
extern "C" void test_compilability(void);
extern "C" void test_copy(void);
extern "C" void test_interp(void);
extern "C" void test_memcmp(void);
extern "C" void test_overflow(void);
extern "C" void test_safe_indexing_negative(void);
extern "C" void test_safe_indexing(void);
extern "C" void test_scl_memset(void);
extern "C" void test_size(void);
extern "C" void test_string(void);


class SclTest : public ::testing::Test {
protected:
  virtual void SetUp() { }

  virtual void TearDown() { }
};

TEST_F(SclTest, SclTests_Clean) {
  EXPECT_NO_FATAL_FAILURE(test_clean());
}

TEST_F(SclTest, SclTests_Compare) {
  EXPECT_NO_FATAL_FAILURE(test_compare());
}

TEST_F(SclTest, SclTests_Compilability) {
  EXPECT_NO_FATAL_FAILURE(test_compilability());
}

TEST_F(SclTest, SclTests_Copy) {
  EXPECT_NO_FATAL_FAILURE(test_copy());
}

TEST_F(SclTest, SclTests_Interp) {
  EXPECT_NO_FATAL_FAILURE(test_interp());
}

TEST_F(SclTest, SclTests_BigTestMemcmp) {
  EXPECT_NO_FATAL_FAILURE(test_memcmp());
}

TEST_F(SclTest, SclTests_Overflow) {
  EXPECT_NO_FATAL_FAILURE(test_overflow());
}

TEST_F(SclTest, SclTests_SafeIndexingNegative) {
  EXPECT_NO_FATAL_FAILURE(test_safe_indexing_negative());
}

TEST_F(SclTest, SclTests_SafeIndexing) {
  EXPECT_NO_FATAL_FAILURE(test_safe_indexing());
}

TEST_F(SclTest, SclTests_SclMemset) {
  EXPECT_NO_FATAL_FAILURE(test_scl_memset());
}

TEST_F(SclTest, SclTests_Size) {
  EXPECT_NO_FATAL_FAILURE(test_size());
}

TEST_F(SclTest, SclTests_String) {
  EXPECT_NO_FATAL_FAILURE(test_string());
}
