os/ossrv/stdcpp/tsrc/Boost_test/multi_array/src/range1.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
// range1.cpp - test of index_range
sl@0
    15
//
sl@0
    16
/*
sl@0
    17
 * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
sl@0
    18
*/
sl@0
    19
sl@0
    20
sl@0
    21
#include "boost/multi_array/index_range.hpp"
sl@0
    22
sl@0
    23
#include "boost/test/minimal.hpp"
sl@0
    24
sl@0
    25
#include "boost/array.hpp"
sl@0
    26
#include <cstddef>
sl@0
    27
sl@0
    28
#ifdef __SYMBIAN32__
sl@0
    29
#include "std_log_result.h"
sl@0
    30
#define LOG_FILENAME_LINE __FILE__, __LINE__
sl@0
    31
#endif
sl@0
    32
sl@0
    33
int
sl@0
    34
test_main(int,char*[])
sl@0
    35
{
sl@0
    36
  typedef boost::detail::multi_array::index_range<int,std::size_t> range;
sl@0
    37
sl@0
    38
  {
sl@0
    39
    // typical range creation and extraction
sl@0
    40
    range r1(-3,5);
sl@0
    41
    BOOST_CHECK(r1.start() == -3);
sl@0
    42
    BOOST_CHECK(r1.finish() == 5);
sl@0
    43
    BOOST_CHECK(r1.stride() == 1);
sl@0
    44
    BOOST_CHECK(!r1.is_degenerate());
sl@0
    45
    BOOST_CHECK(r1.get_start(0) == -3);
sl@0
    46
    BOOST_CHECK(r1.get_finish(100) == 5);
sl@0
    47
  }
sl@0
    48
sl@0
    49
  {
sl@0
    50
    range r2(-3,5,2);
sl@0
    51
    BOOST_CHECK(r2.start() == -3);
sl@0
    52
    BOOST_CHECK(r2.finish() == 5);
sl@0
    53
    BOOST_CHECK(r2.stride() == 2);
sl@0
    54
    BOOST_CHECK(!r2.is_degenerate());
sl@0
    55
  }
sl@0
    56
sl@0
    57
  {
sl@0
    58
    // degenerate creation
sl@0
    59
    range r3(5);
sl@0
    60
    BOOST_CHECK(r3.start() == 5);
sl@0
    61
    BOOST_CHECK(r3.finish() == 6);
sl@0
    62
    BOOST_CHECK(r3.stride() == 1);
sl@0
    63
    BOOST_CHECK(r3.is_degenerate());
sl@0
    64
  }
sl@0
    65
sl@0
    66
  {
sl@0
    67
    // default range creation
sl@0
    68
    range r4;
sl@0
    69
    BOOST_CHECK(r4.get_start(0) == 0);
sl@0
    70
    BOOST_CHECK(r4.get_finish(100) == 100);
sl@0
    71
    BOOST_CHECK(r4.stride() == 1);
sl@0
    72
  }
sl@0
    73
sl@0
    74
  {
sl@0
    75
    // create a range using the setter methods
sl@0
    76
    range r5 = range().stride(2).start(-3).finish(7);
sl@0
    77
    BOOST_CHECK(r5.start() == -3);
sl@0
    78
    BOOST_CHECK(r5.stride() == 2);
sl@0
    79
    BOOST_CHECK(r5.finish() == 7);
sl@0
    80
  }
sl@0
    81
sl@0
    82
  // try out all the comparison operators
sl@0
    83
  {
sl@0
    84
    range r6 = -3 <= range().stride(2) < 7;
sl@0
    85
    BOOST_CHECK(r6.start() == -3);
sl@0
    86
    BOOST_CHECK(r6.stride() == 2);
sl@0
    87
    BOOST_CHECK(r6.finish() == 7);
sl@0
    88
  }
sl@0
    89
sl@0
    90
  {
sl@0
    91
    range r7 = -3 < range() <= 7;
sl@0
    92
    BOOST_CHECK(r7.start() == -2);
sl@0
    93
    BOOST_CHECK(r7.stride() == 1);
sl@0
    94
    BOOST_CHECK(r7.finish() == 8);
sl@0
    95
  }
sl@0
    96
sl@0
    97
  // arithmetic operators
sl@0
    98
  {
sl@0
    99
    range r8 = range(0,5) + 2;
sl@0
   100
    BOOST_CHECK(r8.start() == 2);
sl@0
   101
    BOOST_CHECK(r8.stride() == 1);
sl@0
   102
    BOOST_CHECK(r8.finish() == 7);
sl@0
   103
  }
sl@0
   104
sl@0
   105
  {
sl@0
   106
    range r9 = range(0,5) - 2;
sl@0
   107
    BOOST_CHECK(r9.start() == -2);
sl@0
   108
    BOOST_CHECK(r9.stride() == 1);
sl@0
   109
    BOOST_CHECK(r9.finish() == 3);
sl@0
   110
  }
sl@0
   111
#ifdef __SYMBIAN32__
sl@0
   112
if(boost::minimal_test::errors_counter() != 0)
sl@0
   113
   assert_failed = true;
sl@0
   114
   	testResultXml("range1");
sl@0
   115
	close_log_file();
sl@0
   116
#endif
sl@0
   117
sl@0
   118
  return boost::exit_success;
sl@0
   119
}