00001
00009
00010
00011
00012
00013 #include <iostream>
00014 #include <gtest/gtest.h>
00015 #include "../../include/ecl/containers/array.hpp"
00016 #include "../../include/ecl/containers/converters.hpp"
00017 #include "../../include/ecl/containers/stencil.hpp"
00018
00019
00020
00021
00022
00023 using ecl::Array;
00024 using ecl::Stencil;
00025
00026
00027
00028
00029
00030 bool debug_output = true;
00031
00032
00033
00034
00035
00036 template <typename Container>
00037 void print(const Container &byte_array) {
00038 if( debug_output ) {
00039 std::cout << byte_array << std::endl;
00040 }
00041 }
00042
00043
00044
00045
00046
00047 typedef Array<char,3> ByteArray;
00048 typedef Array<char> DynamicByteArray;
00049 typedef Stencil< Array<char,3> > ByteStencil;
00050 typedef Stencil< Array<char> > DynamicByteStencil;
00051 typedef Array<signed char,3> SignedByteArray;
00052 typedef Array<signed char> DynamicSignedByteArray;
00053 typedef Stencil< Array<signed char,3> > SignedByteStencil;
00054 typedef Stencil< Array<signed char> > DynamicSignedByteStencil;
00055 typedef Array<unsigned char,3> UnsignedByteArray;
00056 typedef Array<unsigned char> DynamicUnsignedByteArray;
00057 typedef Stencil< Array<unsigned char,3> > UnsignedByteStencil;
00058 typedef Stencil< Array<unsigned char> > DynamicUnsignedByteStencil;
00059
00060
00061
00062
00063
00064 TEST(ConverterTests,fromArray) {
00065 ByteArray byte_array;
00066 byte_array << 0x01, 0x02, 0x03;
00067 ecl::Converter<int,ByteArray> toInt;
00068 if( debug_output ) { std::cout << "Conversion: " << toInt(byte_array) << std::endl; }
00069 EXPECT_EQ(197121,toInt(byte_array));
00070 UnsignedByteArray unsigned_byte_array;
00071 unsigned_byte_array << 0x01, 0x02, 0x03;
00072 ecl::Converter<int,UnsignedByteArray> utoInt;
00073 if( debug_output ) { std::cout << "Conversion: " << utoInt(unsigned_byte_array) << std::endl; }
00074 EXPECT_EQ(197121,utoInt(unsigned_byte_array));
00075 SignedByteArray signed_byte_array;
00076 signed_byte_array << 0x01, 0x02, 0x03;
00077 ecl::Converter<int,SignedByteArray> stoInt;
00078 if( debug_output ) { std::cout << "Conversion: " << stoInt(signed_byte_array) << std::endl; }
00079 EXPECT_EQ(197121,stoInt(signed_byte_array));
00080 }
00081
00082 TEST(ConverterTests,toArray) {
00083
00084 ecl::int32 i = 197121;
00085 ecl::Converter<DynamicByteArray,ecl::int32> toByteArray;
00086 ecl::Converter<DynamicSignedByteArray,ecl::int32> toSignedByteArray;
00087 ecl::Converter<DynamicUnsignedByteArray,ecl::int32> toUnsignedByteArray;
00088 DynamicByteArray byte_array(4);
00089 DynamicSignedByteArray signed_byte_array(4);
00090 DynamicUnsignedByteArray unsigned_byte_array(4);
00091 toByteArray(byte_array, i);
00092 toSignedByteArray(signed_byte_array,i);
00093 toUnsignedByteArray(unsigned_byte_array, i);
00094 print(byte_array);
00095 print(signed_byte_array);
00096 print(unsigned_byte_array);
00097 EXPECT_EQ(1,byte_array[0]);
00098 EXPECT_EQ(2,byte_array[1]);
00099 EXPECT_EQ(3,byte_array[2]);
00100 EXPECT_EQ(1,signed_byte_array[0]);
00101 EXPECT_EQ(2,signed_byte_array[1]);
00102 EXPECT_EQ(3,signed_byte_array[2]);
00103 EXPECT_EQ(1,unsigned_byte_array[0]);
00104 EXPECT_EQ(2,unsigned_byte_array[1]);
00105 EXPECT_EQ(3,unsigned_byte_array[2]);
00106
00107 }
00108 TEST(ConverterTests,fromStencil) {
00109 ByteArray byte_array;
00110 SignedByteArray signed_byte_array;
00111 UnsignedByteArray unsigned_byte_array;
00112 byte_array << 0x01, 0x02, 0x03;
00113 signed_byte_array << 0x01, 0x02, 0x03;
00114 unsigned_byte_array << 0x01, 0x02, 0x03;
00115 ecl::Converter<int,ByteStencil> toInt;
00116 ecl::Converter<int,SignedByteStencil> stoInt;
00117 ecl::Converter<int,UnsignedByteStencil> utoInt;
00118 int i = toInt(byte_array.stencil(0,2));
00119 int si = stoInt(signed_byte_array.stencil(0,2));
00120 int ui = utoInt(unsigned_byte_array.stencil(0,2));
00121 if( debug_output ) { std::cout << "Conversion: " << std::dec << i << std::endl; }
00122 if( debug_output ) { std::cout << "Conversion: " << std::dec << si << std::endl; }
00123 if( debug_output ) { std::cout << "Conversion: " << std::dec << ui << std::endl; }
00124 EXPECT_EQ(513,i);
00125 EXPECT_EQ(513,si);
00126 EXPECT_EQ(513,ui);
00127 }
00128 TEST(ConverterTests,toStencil) {
00129 Array<char,20> byte_array = Array<char,20>::Constant(0x00);
00130 Stencil< Array<char, 20> > stencil = byte_array.stencil(2,4);
00131 ecl::Converter< Stencil< Array<char, 20> >, ecl::int32 > fromInt;
00132 stencil = fromInt(stencil, 197121);
00133 print(byte_array);
00134 print(stencil);
00135 EXPECT_EQ(1,stencil[0]);
00136 EXPECT_EQ(2,stencil[1]);
00137 EXPECT_EQ(3,stencil[2]);
00138 }
00139
00140
00141
00142
00143 int main(int argc, char **argv) {
00144 testing::InitGoogleTest(&argc,argv);
00145 return RUN_ALL_TESTS();
00146 }
00147