// Copyright 2026, University of Freiburg,
// Chair of Algorithms and Data Structures
// Author: Christoph Ullinger <ullingec@cs.uni-freiburg.de>
#include <gtest/gtest.h>
#include "./Array.h"
int multiply(int x, int y) { return x * y; }
template<typename T> T cube(T x) { return multiply(multiply(x, x), x); }
// ____________________________________________________________________________
TEST(ArrayTest, Cube) {
int x = 2;
ASSERT_EQ(cube<int>(x), 8);
ASSERT_EQ(cube(x), 8);
//float y = 2.1;
//ASSERT_EQ(cube<float>(y), 9.261);
}
// ____________________________________________________________________________
TEST(ArrayTest, Array) {
{
int array[3] = {1, 2, 3};
Array<int> ai(array, 3);
ASSERT_EQ(ai.size_ , 3);
ASSERT_EQ(ai[0], 1);
ASSERT_EQ(ai[1], 2);
ASSERT_EQ(ai[2], 3);
//std::cout << ai;
}
{
float array[3] = {1.5, 2.25, 3.14};
Array<float> ai(array, 3);
ASSERT_EQ(ai.size_ , 3);
ASSERT_FLOAT_EQ(ai[0], 1.5);
ASSERT_FLOAT_EQ(ai[1], 2.25);
ASSERT_FLOAT_EQ(ai[2], 3.14);
}
{
bool array[3] = {true, false, true};
Array<bool> ai(array, 3);
ASSERT_EQ(ai.size_ , 3);
ASSERT_TRUE(ai[0]);
ASSERT_FALSE(ai[1]);
ASSERT_TRUE(ai[2]);
}
}
// ____________________________________________________________________________
TEST(ArrayTest, ArrayInt) {
int array[3] = {1, 2, 3};
ArrayInt ai(array, 3);
ASSERT_EQ(ai.size_ , 3);
ASSERT_EQ(ai[0], 1);
ASSERT_EQ(ai[1], 2);
ASSERT_EQ(ai[2], 3);
}
// ____________________________________________________________________________
TEST(ArrayTest, ArrayFloat) {
float array[3] = {1.5, 2.25, 3.14};
ArrayFloat ai(array, 3);
ASSERT_EQ(ai.size_ , 3);
ASSERT_FLOAT_EQ(ai[0], 1.5);
ASSERT_FLOAT_EQ(ai[1], 2.25);
ASSERT_FLOAT_EQ(ai[2], 3.14);
}