brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 1785df2 Raw
77 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <regex>10 11// class regex_token_iterator<BidirectionalIterator, charT, traits>12 13// const value_type& operator*() const;14 15#include <regex>16#include <cassert>17#include <iterator>18 19#include "test_macros.h"20 21int main(int, char**)22{23    {24        std::regex phone_numbers("\\d{3}-\\d{4}");25        const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end";26        std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1,27                                     phone_numbers, -1);28        assert(i != std::cregex_token_iterator());29        assert((*i).str() == "start ");30        ++i;31        assert(i != std::cregex_token_iterator());32        assert((*i).str() == ", ");33        ++i;34        assert(i != std::cregex_token_iterator());35        assert((*i).str() == ", ");36        ++i;37        assert(i != std::cregex_token_iterator());38        assert((*i).str() == " end");39        ++i;40        assert(i == std::cregex_token_iterator());41    }42    {43        std::regex phone_numbers("\\d{3}-\\d{4}");44        const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end";45        std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1,46                                     phone_numbers);47        assert(i != std::cregex_token_iterator());48        assert((*i).str() == "555-1234");49        ++i;50        assert(i != std::cregex_token_iterator());51        assert((*i).str() == "555-2345");52        ++i;53        assert(i != std::cregex_token_iterator());54        assert((*i).str() == "555-3456");55        ++i;56        assert(i == std::cregex_token_iterator());57    }58    {59        std::regex phone_numbers("\\d{3}-(\\d{4})");60        const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end";61        std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1,62                                     phone_numbers, 1);63        assert(i != std::cregex_token_iterator());64        assert((*i).str() == "1234");65        ++i;66        assert(i != std::cregex_token_iterator());67        assert((*i).str() == "2345");68        ++i;69        assert(i != std::cregex_token_iterator());70        assert((*i).str() == "3456");71        ++i;72        assert(i == std::cregex_token_iterator());73    }74 75  return 0;76}77