Go to the documentation of this file.00001
00008
00009
00010
00011
00012 #include <iostream>
00013 #include <gtest/gtest.h>
00014 #include "../../include/ecl/containers/array.hpp"
00015 #include "../../include/ecl/containers/push_and_pop.hpp"
00016
00017
00018
00019
00020
00021 using ecl::Array;
00022 using ecl::StandardException;
00023 using ecl::ContainerConcept;
00024 using ecl::PushAndPop;
00025
00026
00027 TEST(PushAndPopTests,constructors)
00028 {
00029 PushAndPop<int> pp_dynamic(4, 2);
00030 EXPECT_EQ(2, pp_dynamic[0]);
00031 EXPECT_EQ(2, pp_dynamic[1]);
00032 EXPECT_EQ(2, pp_dynamic[2]);
00033 EXPECT_EQ(2, pp_dynamic[3]);
00034
00035 PushAndPop<int, 4> pp_fixed(2);
00036 EXPECT_EQ(2, pp_fixed[0]);
00037 EXPECT_EQ(2, pp_fixed[1]);
00038 EXPECT_EQ(2, pp_fixed[2]);
00039 EXPECT_EQ(2, pp_fixed[3]);
00040 }
00041
00042 TEST(PushAndPopTests, pop_and_push )
00043 {
00044 PushAndPop<double> pp_dynamic(4);
00045 for (int i = 0; i < 4; i++)
00046 {
00047 pp_dynamic.push_back((double)i);
00048 }
00049
00050 EXPECT_EQ(0.0, pp_dynamic[0]);
00051 EXPECT_EQ(1.0, pp_dynamic[1]);
00052 EXPECT_EQ(2.0, pp_dynamic[2]);
00053 EXPECT_EQ(3.0, pp_dynamic[3]);
00054
00055 pp_dynamic.pop_front();
00056 pp_dynamic.pop_front();
00057 EXPECT_EQ(2, pp_dynamic.size());
00058
00059
00060 EXPECT_EQ(2.0, pp_dynamic[0]);
00061 EXPECT_EQ(3.0, pp_dynamic[1]);
00062 }
00063
00064 TEST(PushAndPopTests, push_back_only )
00065 {
00066 PushAndPop<unsigned int, 3> pp;
00067 for (unsigned int i = 0; i < 4; i++)
00068 {
00069 pp.push_back(i);
00070 }
00071
00072 EXPECT_EQ( 3, pp.size());
00073
00074 for (unsigned int i = 4; i < 8; i++)
00075 {
00076 pp.push_back(i);
00077 EXPECT_EQ( 3, pp.size());
00078 }
00079
00080 PushAndPop<unsigned int> pp_dynamic(3, 1);
00081 for (unsigned int i = 0; i < 4; i++)
00082 {
00083 pp_dynamic.push_back(i);
00084 }
00085
00086 EXPECT_EQ( 3, pp_dynamic.size());
00087
00088 for (unsigned int i = 4; i < 8; i++)
00089 {
00090 pp_dynamic.push_back(i);
00091 EXPECT_EQ( 3, pp_dynamic.size());
00092 }
00093 }
00094
00095 TEST(PushAndPopTests, pop_front_only )
00096 {
00097
00098 PushAndPop<unsigned int, 3> pp;
00099 for (unsigned int i = 0; i < 2; i++)
00100 {
00101 pp.push_back(i);
00102 }
00103
00104 EXPECT_EQ( 2, pp.size());
00105
00106 for (unsigned int i = 0; i < 2; i++)
00107 {
00108 pp.pop_front();
00109 EXPECT_EQ( (2-1-i), pp.size());
00110 }
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120 PushAndPop<unsigned int> pp_dynamic(3, 1);
00121 for (unsigned int i = 0; i < 2; i++)
00122 {
00123 pp_dynamic.push_back(i);
00124 }
00125
00126 EXPECT_EQ( 2, pp_dynamic.size());
00127
00128 for (unsigned int i = 0; i < 2; i++)
00129 {
00130 pp_dynamic.pop_front();
00131 EXPECT_EQ( (2-1-i), pp_dynamic.size());
00132 }
00133
00134
00135
00136
00137
00138
00139
00140 }
00141
00142 TEST(PushAndPopTests,concepts)
00143 {
00144 typedef PushAndPop<unsigned char> UnsignedByteBuffer;
00145 ecl_compile_time_concept_check (ContainerConcept<UnsignedByteBuffer> );
00146 typedef PushAndPop<char> ByteBuffer;
00147 ecl_compile_time_concept_check (ContainerConcept<ByteBuffer> );
00148 SUCCEED();
00149
00150 }
00151
00152
00153
00154
00155
00156 int main(int argc, char **argv)
00157 {
00158
00159 testing::InitGoogleTest(&argc, argv);
00160 std::cout << "dude" << std::endl;
00161 return RUN_ALL_TESTS();
00162 }