os/ossrv/stdcpp/tsrc/Boost_test/multi_array/src/assign.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright 2002 The Trustees of Indiana University.
sl@0
     2
sl@0
     3
// Use, modification and distribution is subject to the Boost Software 
sl@0
     4
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
sl@0
     5
// http://www.boost.org/LICENSE_1_0.txt)
sl@0
     6
sl@0
     7
//  Boost.MultiArray Library
sl@0
     8
//  Authors: Ronald Garcia
sl@0
     9
//           Jeremy Siek
sl@0
    10
//           Andrew Lumsdaine
sl@0
    11
//  See http://www.boost.org/libs/multi_array for documentation.
sl@0
    12
sl@0
    13
// 
sl@0
    14
// assign.cpp - Test out operator=() on the different types
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
#include "generative_tests.hpp"
sl@0
    18
#include "boost/array.hpp"
sl@0
    19
#include "boost/multi_array.hpp"
sl@0
    20
#include "boost/cstdlib.hpp"
sl@0
    21
#include <algorithm>
sl@0
    22
#include <iostream>
sl@0
    23
sl@0
    24
bool equal(const int& a, const int& b)
sl@0
    25
{
sl@0
    26
  return a == b;
sl@0
    27
}
sl@0
    28
sl@0
    29
template <typename ArrayA, typename ArrayB>
sl@0
    30
bool equal(const ArrayA& A, const ArrayB& B)
sl@0
    31
{
sl@0
    32
  typename ArrayA::const_iterator ia;
sl@0
    33
  typename ArrayB::const_iterator ib = B.begin();
sl@0
    34
  for (ia = A.begin(); ia != A.end(); ++ia, ++ib)
sl@0
    35
    if (!equal(*ia, *ib))
sl@0
    36
      return false;
sl@0
    37
  return true;
sl@0
    38
}
sl@0
    39
sl@0
    40
sl@0
    41
template <typename Array>
sl@0
    42
void access(Array& A, const mutable_array_tag&) {
sl@0
    43
  assign(A);
sl@0
    44
  typedef boost::multi_array<int,3> array3;
sl@0
    45
sl@0
    46
  int insert[] = {
sl@0
    47
    99,98,97,96,
sl@0
    48
    95,94,93,92,
sl@0
    49
    91,90,89,88,
sl@0
    50
sl@0
    51
    87,86,85,84,
sl@0
    52
    83,82,81,80,
sl@0
    53
    79,78,77,76
sl@0
    54
  };
sl@0
    55
  const int insert_size = 2*3*4;
sl@0
    56
  array3 filler(boost::extents[2][3][4]);
sl@0
    57
  filler.assign(insert,insert+insert_size);
sl@0
    58
sl@0
    59
sl@0
    60
  A = filler;
sl@0
    61
sl@0
    62
  BOOST_CHECK(equal(A,filler));
sl@0
    63
  ++tests_run;
sl@0
    64
}
sl@0
    65
sl@0
    66
template <typename Array>
sl@0
    67
void access(Array&, const const_array_tag&) {
sl@0
    68
}
sl@0
    69
sl@0
    70
sl@0
    71
int test_main(int,char*[]) {
sl@0
    72
sl@0
    73
#ifdef __SYMBIAN32__
sl@0
    74
if(boost::minimal_test::errors_counter() != 0)
sl@0
    75
   assert_failed = true;
sl@0
    76
   	testResultXml("assign");
sl@0
    77
	close_log_file();
sl@0
    78
#endif
sl@0
    79
sl@0
    80
  return run_generative_tests();
sl@0
    81
  
sl@0
    82
}