diff --git a/src/include/db_exception.h b/src/include/db_exception.h index aee8033..6957466 100644 --- a/src/include/db_exception.h +++ b/src/include/db_exception.h @@ -14,4 +14,6 @@ class DbException : public std::runtime_error { private: std::string what_message; }; + + } diff --git a/test/tuple_desc_test.cpp b/test/tuple_desc_test.cpp index 100ee32..c2b0602 100644 --- a/test/tuple_desc_test.cpp +++ b/test/tuple_desc_test.cpp @@ -1,2 +1,191 @@ #include +#include +#include "field.h" +#include "utility.h" + +namespace buzzdb { +class TupleDescTest : public ::testing::Test { + protected: + TupleDescTest() : { + } +}; + +class CombineTest : public TupleDescTest { + protected: + CombineTest() : { + TupleDesc td1 = Utility.GetTupleDesc(1, "td1"); + TupleDesc td2 = Utility.GetTupleDesc(2, "td2"); + TupleDesc td3; + } + + private: + // Ensures that combined's field names = td1's field names + td2's field names + static bool CombineStringArrays(TupleDesc td1, TupleDesc td2, TupleDesc combined); +}; + +bool CombineTest::CombineStringArrays(TupleDesc td1, TupleDesc td2, TupleDesc combined) { + for (int i=0; i type_array; + type_array.push_back(Field::Type::INTEGER); + + TupleDesc single_int = TupleDesc(type_array); + TupleDesc single_int2 = TupleDesc(type_array); + + type_array.push_back(Field::Type::STRING); + TupleDesc intstring = TupleDesc(type_array); + } +}; + +TEST(CombineTest, CombineTupleDescWorkCorrectly) { + // td1 + td2 = td3 + td3 = TupleDesc.Combine(td1, td2) + EXPECT_EQ(3, td3.get_number_fields()); + EXPECT_EQ(3*Field.get_length(Field::Type::INTEGER), td3.get_size()); + + for (int i=0; i<3; ++i) { + EXPECT_EQ(Field::Type::INTEGER, td3.get_field_type(i)); + } + + EXPECT_EQ(CombineTest.CombineStringArrays(td1, td2, td3), true); + + // td2 + td1 = td3 + td3 = TupleDesc.Combine(td2, td1) + EXPECT_EQ(3, td3.get_number_fields()); + EXPECT_EQ(3*Field.get_length(Field::Type::INTEGER), td3.get_size()); + + for (int i=0; i<3; ++i) { + EXPECT_EQ(Field::Type::INTEGER, td3.get_field_type(i)); + } + + EXPECT_EQ(CombineTest.CombineStringArrays(td2, td1, td3), true); + + // td2 + td2 = td3 + td3 = TupleDesc.Combine(td2, td2) + EXPECT_EQ(4, td3.get_number_fields()); + EXPECT_EQ(4*Field.get_length(Field::Type::INTEGER), td3.get_size()); + + for (int i=0; i<4; ++i) { + EXPECT_EQ(Field::Type::INTEGER, td3.get_field_type(i)); + } + + EXPECT_EQ(CombineTest.CombineStringArrays(td2, td2, td3), true); +} + +TEST(GetTypeTest, GetTypeCorrectly) { + int lengths[3] = {1, 2, 1000}; + for (int len: lengths) { + TupleDesc td = Utility.GetTupleDesc(len); + for (int i=0; i