44 template <
typename TayType>
 
   46            const std::string& tag,
 
   53   Ordinal count = x.
size();
 
   54   Ordinal bytes = SerT::fromCountToIndirectBytes(count, &x[0]);
 
   55   char *charBuffer = 
new char[bytes];
 
   56   SerT::serialize(count, &x[0], bytes, charBuffer);
 
   59   Ordinal count2 = SerT::fromIndirectBytesToCount(bytes, charBuffer);
 
   61   SerT::deserialize(bytes, charBuffer, count2, &x2[0]);
 
   66   bool success = (count == count2);
 
   67   out << tag << 
" serialize/deserialize count test";
 
   72   out << 
":  \n\tExpected:  " << count << 
", \n\tGot:       " << count2 << 
"."  
   76   for (Ordinal i=0; i<count; i++) {
 
   78     out << tag << 
" serialize/deserialize taylor test " << i;
 
   83     out << 
":  \n\tExpected:  " << x[i] << 
", \n\tGot:       " << x2[i] 
 
   85     success = success && success2;
 
   91 template <
typename TayType, 
typename Serializer>
 
   94            const std::string& tag,
 
  100   Ordinal count = x.
size();
 
  101   Ordinal bytes = serializer.fromCountToIndirectBytes(count, &x[0]);
 
  102   char *charBuffer = 
new char[bytes];
 
  103   serializer.serialize(count, &x[0], bytes, charBuffer);
 
  106   Ordinal sz = serializer.getSerializerSize();
 
  107   for (Ordinal i=0; i<count; i++)
 
  108     x[i].resize(sz-1, 
true);
 
  111   Ordinal count2 = serializer.fromIndirectBytesToCount(bytes, charBuffer);
 
  113   serializer.deserialize(bytes, charBuffer, count2, &x2[0]);
 
  115   delete [] charBuffer;
 
  118   bool success = (count == count2);
 
  119   out << tag << 
" serialize/deserialize count test";
 
  124   out << 
":  \n\tExpected:  " << count << 
", \n\tGot:       " << count2 << 
"."  
  128   for (Ordinal i=0; i<count; i++) {
 
  130     out << tag << 
" serialize/deserialize taylor test " << i;
 
  135     out << 
":  \n\tExpected:  " << x[i] << 
", \n\tGot:       " << x2[i] 
 
  137     success = success && success2;
 
  143 template <
typename TayType, 
typename Serializer>
 
  146            const std::string& tag,
 
  152   Ordinal count = x.
size();
 
  153   Ordinal bytes = serializer.fromCountToIndirectBytes(count, &x[0]);
 
  154   char *charBuffer = 
new char[bytes];
 
  155   serializer.serialize(count, &x[0], bytes, charBuffer);
 
  158   Ordinal sz = serializer.getSerializerSize();
 
  159   typedef typename Serializer::value_serializer_type VST;
 
  161   Ordinal sz_inner = vs->getSerializerSize();
 
  162   for (Ordinal i=0; i<count; i++) {
 
  164     for (Ordinal j=0; j<sz; j++)
 
  165       x[i].fastAccessCoeff(j).
resize(sz_inner-1, 
true);
 
  166     x[i].val().
resize(sz_inner-1, 
true);
 
  170   Ordinal count2 = serializer.fromIndirectBytesToCount(bytes, charBuffer);
 
  172   serializer.deserialize(bytes, charBuffer, count2, &x2[0]);
 
  174   delete [] charBuffer;
 
  177   bool success = (count == count2);
 
  178   out << tag << 
" serialize/deserialize count test";
 
  183   out << 
":  \n\tExpected:  " << count << 
", \n\tGot:       " << count2 << 
"."  
  187   for (Ordinal i=0; i<count; i++) {
 
  189     out << tag << 
" serialize/deserialize taylor test " << i;
 
  194     out << 
":  \n\tExpected:  " << x[i] << 
", \n\tGot:       " << x2[i] 
 
  196     success = success && success2;
 
  202 #define TAY_SERIALIZATION_TESTS(TayType, TAY)       \ 
  203   TEUCHOS_UNIT_TEST( TAY##_Serialization, Uniform ) {     \ 
  206     ValueTypeSerializer<int,TayType> tts(       \ 
  207       rcp(new ValueTypeSerializer<int,double>), p+1);     \ 
  208     Teuchos::Array<TayType> x(n);         \ 
  209     for (int i=0; i<n; i++) {           \ 
  210       x[i] = TayType(p, rnd.number());          \ 
  211       for (int j=0; j<=p; j++)            \ 
  212   x[i].fastAccessCoeff(j) = rnd.number();       \ 
  214     bool success1 = testSerialization(          \ 
  215       x, std::string(#TAY) + " Uniform", out);        \ 
  216     bool success2 = testSerializationObject(        \ 
  217       tts, x, std::string(#TAY) + " Uniform TTS", out);     \ 
  218     success = success1 && success2;         \ 
  221   TEUCHOS_UNIT_TEST( TAY##_Serialization, Empty ) {     \ 
  223     ValueTypeSerializer<int,TayType> tts(       \ 
  224       rcp(new ValueTypeSerializer<int,double>), 7);     \ 
  225     Teuchos::Array<TayType> x(n);         \ 
  226     for (int i=0; i<n; i++) {           \ 
  227       x[i] = TayType(rnd.number());         \ 
  229     bool success1 = testSerialization(          \ 
  230       x, std::string(#TAY) + " Empty", out);        \ 
  231     bool success2 = testSerializationObject(        \ 
  232       tts, x, std::string(#TAY) + " Empty TTS", out);     \ 
  233     success = success1 && success2;         \ 
  236   TEUCHOS_UNIT_TEST( TAY##_Serialization, Mixed ) {     \ 
  238     int p[] = { 5, 0, 8, 8, 3, 0 };         \ 
  239     ValueTypeSerializer<int,TayType> tts(       \ 
  240       rcp(new ValueTypeSerializer<int,double>), 9);     \ 
  241     Teuchos::Array<TayType> x(n);         \ 
  242     for (int i=0; i<n; i++) {           \ 
  243       x[i] = TayType(p[i], rnd.number());       \ 
  244       for (int j=0; j<=p[i]; j++)         \ 
  245   x[i].fastAccessCoeff(j) = rnd.number();       \ 
  247     bool success1 = testSerialization(          \ 
  248       x, std::string(#TAY) + " Mixed", out);        \ 
  249     bool success2 = testSerializationObject(        \ 
  250       tts, x, std::string(#TAY) + " Mixed TTS", out);     \ 
  251     success = success1 && success2;         \ 
  254   TEUCHOS_UNIT_TEST( TAY##_Serialization, NestedUniform ) {   \ 
  255     typedef Sacado::mpl::apply<TayType,TayType>::type TayTayType; \ 
  259     RCP< ValueTypeSerializer<int,TayType> > tts =     \ 
  260       rcp(new ValueTypeSerializer<int,TayType>(       \ 
  261       rcp(new ValueTypeSerializer<int,double>), p1+1));   \ 
  262      ValueTypeSerializer<int,TayTayType> ttts(tts, p2+1);   \ 
  263     Teuchos::Array<TayTayType> x(n);          \ 
  264     for (int i=0; i<n; i++) {           \ 
  265       TayType f(p1, rnd.number());          \ 
  266       for (int k=0; k<=p1; k++)           \ 
  267   f.fastAccessCoeff(k) = rnd.number();        \ 
  268       x[i] = TayTayType(p2, f);           \ 
  269       for (int j=0; j<=p2; j++) {         \ 
  270   TayType g(p1, rnd.number());          \ 
  271   for (int k=0; k<=p1; k++)         \ 
  272     g.fastAccessCoeff(k) = rnd.number();        \ 
  273   x[i].fastAccessCoeff(j) = g;          \ 
  276     bool success1 = testSerialization(          \ 
  277       x, std::string(#TAY) + " Nested Uniform", out);     \ 
  278     bool success2 = testNestedSerializationObject(      \ 
  279       ttts, x, std::string(#TAY) + " Nested Uniform TTS", out);   \ 
  280     success = success1 && success2;         \ 
  283   TEUCHOS_UNIT_TEST( TAY##_Serialization, NestedEmptyInner ) {    \ 
  284     typedef Sacado::mpl::apply<TayType,TayType>::type TayTayType; \ 
  288     RCP< ValueTypeSerializer<int,TayType> > tts =     \ 
  289       rcp(new ValueTypeSerializer<int,TayType>(       \ 
  290       rcp(new ValueTypeSerializer<int,double>), p1+1));   \ 
  291      ValueTypeSerializer<int,TayTayType> ttts(tts, p2+1);   \ 
  292     Teuchos::Array<TayTayType> x(n);          \ 
  293     for (int i=0; i<n; i++) {           \ 
  294       TayType f(p1, rnd.number());          \ 
  295       for (int k=0; k<=p1; k++)           \ 
  296   f.fastAccessCoeff(k) = rnd.number();        \ 
  297       x[i] = TayTayType(p2, f);           \ 
  298       for (int j=0; j<=p2; j++)           \ 
  299   x[i].fastAccessCoeff(j) =  rnd.number();      \ 
  301     bool success1 = testSerialization(          \ 
  302       x, std::string(#TAY) + " Nested Empty Inner", out);   \ 
  303     bool success2 = testNestedSerializationObject(      \ 
  304       ttts, x, std::string(#TAY) + " Nested Empty Inner TTS", out); \ 
  305     success = success1 && success2;         \ 
  308   TEUCHOS_UNIT_TEST( TAY##_Serialization, NestedEmptyOuter ) {    \ 
  309     typedef Sacado::mpl::apply<TayType,TayType>::type TayTayType; \ 
  312     RCP< ValueTypeSerializer<int,TayType> > tts =     \ 
  313       rcp(new ValueTypeSerializer<int,TayType>(       \ 
  314       rcp(new ValueTypeSerializer<int,double>), p1+1));   \ 
  315     ValueTypeSerializer<int,TayTayType> ttts(tts, 5);     \ 
  316     Teuchos::Array<TayTayType> x(n);          \ 
  317     for (int i=0; i<n; i++) {           \ 
  318       TayType f(p1, rnd.number());          \ 
  319       for (int k=0; k<=p1; k++)           \ 
  320   f.fastAccessCoeff(k) = rnd.number();        \ 
  321       x[i] = TayTayType(f);           \ 
  323     bool success1 = testSerialization(          \ 
  324       x, std::string(#TAY) + " Nested Empty Outer", out);   \ 
  325     bool success2 = testNestedSerializationObject(      \ 
  326       ttts, x, std::string(#TAY) + " Nested Empty Outer TTS", out); \ 
  327     success = success1 && success2;         \ 
  330   TEUCHOS_UNIT_TEST( TAY##_Serialization, NestedEmptyAll ) {    \ 
  331     typedef Sacado::mpl::apply<TayType,TayType>::type TayTayType; \ 
  333     RCP< ValueTypeSerializer<int,TayType> > tts =     \ 
  334       rcp(new ValueTypeSerializer<int,TayType>(       \ 
  335       rcp(new ValueTypeSerializer<int,double>), 5));    \ 
  336     ValueTypeSerializer<int,TayTayType> ttts(tts, 5);     \ 
  337     Teuchos::Array<TayTayType> x(n);          \ 
  338     for (int i=0; i<n; i++) {           \ 
  339       x[i] = rnd.number();            \ 
  341     bool success1 = testSerialization(          \ 
  342       x, std::string(#TAY) + " Nested Empty All", out);     \ 
  343     bool success2 = testNestedSerializationObject(      \ 
  344       ttts, x, std::string(#TAY) + " Nested Empty All TTS", out); \ 
  345     success = success1 && success2;         \ 
  352 int main( 
int argc, 
char* argv[] ) {
 
bool testNestedSerializationObject(const Serializer &serializer, Teuchos::Array< FadType > &x, const std::string &tag, Teuchos::FancyOStream &out)
 
static KOKKOS_INLINE_FUNCTION bool eval(const T &x, const T &y)
 
#define TAY_SERIALIZATION_TESTS(TayType, TAY)
 
bool testSerialization(const Teuchos::Array< FadType > &x, const std::string &tag, Teuchos::FancyOStream &out)
 
bool testSerializationObject(const Serializer &serializer, Teuchos::Array< FadType > &x, const std::string &tag, Teuchos::FancyOStream &out)
 
static int runUnitTestsFromMain(int argc, char *argv[])
 
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
 
void resize(size_type new_size, const value_type &x=value_type())
 
Sacado::Random< double > rnd