示例#1
0
void test ( const CharT *s ) {
    typedef std::basic_string<CharT> String ;
    {
    std::experimental::basic_string_view<CharT> sv1 ( s );
    String                                      str1 = (String) sv1;
    
    assert ( sv1.size() == str1.size ());
    assert ( std::char_traits<CharT>::compare ( sv1.data(), str1.data(),  sv1.size()) == 0 );

#if __cplusplus >= 201103L
    auto str2 = sv1.to_string(min_allocator<CharT>());
    assert ( sv1.size() == str2.size ());
    assert ( std::char_traits<CharT>::compare ( sv1.data(), str2.data(), sv1.size()) == 0 );
#endif
    }

    {
    std::experimental::basic_string_view<CharT> sv1;
    String                                      str1 = (String) sv1;

    assert ( sv1.size() == str1.size ());
    assert ( std::char_traits<CharT>::compare ( sv1.data(), str1.data(), sv1.size()) == 0 );

#if __cplusplus >= 201103L
    auto str2 = sv1.to_string(min_allocator<CharT>());
    assert ( sv1.size() == str2.size ());
    assert ( std::char_traits<CharT>::compare ( sv1.data(), str2.data(), sv1.size()) == 0 );
#endif
    }
}
void test ( const CharT *s, size_t sz ) {
    {
    std::experimental::basic_string_view<CharT> sv1 ( s, sz );
    assert ( sv1.size() == sz );
    assert ( sv1.data() == s );
    }
}
void
test( const CharT *s1, size_t pos1, size_t n1, const CharT *s2, int expected)
{
    typedef std::experimental::basic_string_view<CharT> string_view_t;
    string_view_t sv1 ( s1 );
    test1 ( sv1, pos1, n1, s2, expected );
}
void test ( const CharT *s ) {
    typedef std::basic_string_view<CharT> SV;
//  I'd love to do this, but it would require traits::length() to be noexcept
//  LIBCPP_ASSERT_NOEXCEPT(SV(s));

    SV sv1 ( s );
    assert ( sv1.size() == StrLen( s ));
    assert ( sv1.data() == s );
    }
示例#5
0
void test2 ( const CharT *s, size_t len ) {
    {
    std::basic_string_view<CharT> sv1 ( s );
    assert ( sv1.size() == len );
    assert ( sv1.data() == s );
    assert ( sv1.empty() == (len == 0));
    assert ( sv1.size() == sv1.length());
    assert ( sv1.max_size() > sv1.size());
    }
}
示例#6
0
int main () {
    using string_view = std::experimental::basic_string_view<char, dummy_char_traits>;
    using string      = std::              basic_string     <char>;
    
    {
    string s{"QBCDE"};
    string_view sv1 ( s );
    assert ( sv1.size() == s.size());
    assert ( sv1.data() == s.data());
    }
}
示例#7
0
void test ( const CharT *s, size_t len ) {
    typedef std::experimental::basic_string_view<CharT> SV;
    {
    SV sv1(s);
    SV sv2;

    assert ( sv1.size() == len );
    assert ( sv1.data() == s );
    assert ( sv2.size() == 0 );

    sv1.swap ( sv2 );
    assert ( sv1.size() == 0 );
    assert ( sv2.size() == len );
    assert ( sv2.data() == s );
    }

}
示例#8
0
void test ( const CharT *s, size_t len ) {
    typedef std::experimental::basic_string_view<CharT> SV;
    {
    SV sv1 ( s );
    assert ( sv1.size() == len );
    assert ( sv1.data() == s );

    if ( len > 0 ) {
        sv1.remove_prefix ( 1 );
        assert ( sv1.size() == (len - 1));
        assert ( sv1.data() == (s + 1));
        sv1.remove_prefix ( len - 1 );
    }

    assert ( sv1.size() == 0 );
    sv1.remove_prefix ( 0 );
    assert ( sv1.size() == 0 );
    }
}
matrix2d<T> matrix2d<T>::appendCols(matrix2d<T> &m) {

  matrix2d<T> result(rows_, cols_ + m.cols_);

  std::size_t s1[] = {rows_,cols_}; // shape of left matrix
  std::size_t p1[] = {result.cols_,1}; // position of left matrix in result
  std::size_t s2[] = {m.rows_,m.cols_}; // shape of right matrix
  std::size_t p2[] = {result.cols_,1}; // position or right matrix in result

  std::valarray<std::size_t> sv1(s1, 2);
  std::valarray<std::size_t> pv1(p1, 2);
  std::valarray<std::size_t> sv2(s2, 2);
  std::valarray<std::size_t> pv2(p2, 2);

  result.data_[std::gslice(0, sv1, pv1)] = data_; // copy left matrix into place
  result.data_[std::gslice(cols_, sv2, pv2)] = m.data_; // repeat for m

  return result;
}
示例#10
0
void test ( const CharT *s ) {
    typedef std::experimental::basic_string_view<CharT> string_view_t;
    
    string_view_t sv1 ( s );

    test1(sv1,  0, 0);
    test1(sv1,  1, 0);
    test1(sv1, 20, 0);
    test1(sv1, sv1.size(), 0);
    
    test1(sv1,   0, 3);
    test1(sv1,   2, 3);
    test1(sv1, 100, 3);

    test1(sv1, 0, string_view_t::npos);
    test1(sv1, 2, string_view_t::npos);
    test1(sv1, sv1.size(), string_view_t::npos);

    test1(sv1, sv1.size() + 1, 0);
    test1(sv1, sv1.size() + 1, 1);
    test1(sv1, sv1.size() + 1, string_view_t::npos);
}
示例#11
0
void test ( const CharT *s ) {
    std::experimental::basic_string_view<CharT> sv1 ( s );
    assert ( sv1.size() == StrLen( s ));
    assert ( sv1.data() == s );
    }
示例#12
0
void test ( const std::basic_string<CharT, Traits> &str ) {
    std::basic_string_view<CharT, Traits> sv1 ( str );
    assert ( sv1.size() == str.size());
    assert ( sv1.data() == str.data());
}
static void
run_tests ()
{
  capacity_1::main ();
  cons_1::main ();
  cons_2::main ();
  cons_3::main ();
  element_access_1::main ();
  element_access_empty::main ();
  element_access_front_back::main ();
  inserters_2::main ();
  modifiers_remove_prefix::main ();
  modifiers_remove_suffix::main ();
  modifiers_swap::test01 ();
  operations_compare_1::main ();
  operations_compare_13650::main ();
  operations_copy_1::main ();
  operations_data_1::main ();
  operations_find_1::main ();
  operations_find_2::main ();
  operations_find_3::main ();
  operations_find_4::main ();
  operations_rfind_1::main ();
  operations_rfind_2::main ();
  operations_rfind_3::main ();
  operations_substr_1::main ();
  operators_2::main ();

  constexpr gdb::string_view sv_empty;
  SELF_CHECK (sv_empty.empty ());

  std::string std_string = "fika";
  gdb::string_view sv1 (std_string);
  SELF_CHECK (sv1 == "fika");

  constexpr const char *fika = "fika";
  gdb::string_view sv2 (fika);
  SELF_CHECK (sv2 == "fika");

  constexpr gdb::string_view sv3 (fika, 3);
  SELF_CHECK (sv3 == "fik");

  constexpr gdb::string_view sv4 (sv3);
  SELF_CHECK (sv4 == "fik");

  constexpr gdb::string_view::iterator it_begin = sv4.begin ();
  static_assert (*it_begin == 'f', "");

  constexpr gdb::string_view::iterator it_end = sv4.end ();
  static_assert (*it_end == 'a', "");

  const gdb::string_view::reverse_iterator it_rbegin = sv4.rbegin ();
  SELF_CHECK (*it_rbegin == 'k');

  const gdb::string_view::reverse_iterator it_rend = sv4.rend ();
  SELF_CHECK (*(it_rend - 1) == 'f');

  constexpr gdb::string_view::size_type size = sv4.size ();
  static_assert (size == 3, "");

  constexpr gdb::string_view::size_type length = sv4.length ();
  static_assert (length == 3, "");

  constexpr gdb::string_view::size_type max_size = sv4.max_size ();
  static_assert (max_size > 0, "");

  constexpr bool empty = sv4.empty ();
  static_assert (!empty, "");

  constexpr char c1 = sv4[1];
  static_assert (c1 == 'i', "");

  constexpr char c2 = sv4.at (2);
  static_assert (c2 == 'k', "");

  constexpr char front = sv4.front ();
  static_assert (front == 'f', "");

  constexpr char back = sv4.back ();
  static_assert (back == 'k', "");

  constexpr const char *data = sv4.data ();
  static_assert (data == fika, "");
}