SVN / public / code / vorlesung-08 / ArrayTest.cpp

Revision 8201
Date
Committercu1017
Download
// 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);
}