17026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//===----------------------------------------------------------------------===// 27026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// 37026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// The LLVM Compiler Infrastructure 47026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 77026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// 87026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant//===----------------------------------------------------------------------===// 97026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant 107026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// <regex> 117026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant 127026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// template <class charT, class traits = regex_traits<charT>> class basic_regex; 137026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant 147026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant// basic_regex& assign(const basic_regex& that); 157026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant 167026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant#include <regex> 177026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant#include <cassert> 186dfff1c9b9147641601574c953e208ece17f27d8Marshall Clow#include "test_macros.h" 197026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant 207026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnantint main() 217026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant{ 227026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant std::regex r1("(a([bc]))"); 237026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant std::regex r2; 247026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant r2.assign(r1); 257026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant assert(r2.flags() == std::regex::ECMAScript); 267026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant assert(r2.mark_count() == 2); 27083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow assert(std::regex_search("ab", r2)); 2884acb1ec3f7d5e0f37d7176697c2fa876c413407Eric Fiselier 29e3a71a295ed9412bb34ab125c98380498a608b1aAsiri Rathnayake#ifndef TEST_HAS_NO_EXCEPTIONS 30083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow bool caught = false; 31083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow try { r2.assign("(def", std::regex::extended); } 32083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow catch(std::regex_error &) { caught = true; } 33083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow assert(caught); 34083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow assert(r2.flags() == std::regex::ECMAScript); 35083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow assert(r2.mark_count() == 2); 36083e011d6c9e37e58ae96082b8993be7d3b2f8ceMarshall Clow assert(std::regex_search("ab", r2)); 37e3a71a295ed9412bb34ab125c98380498a608b1aAsiri Rathnayake#endif 387026a17a482a9f7fdd9fc41aead6a167167efb1bHoward Hinnant} 39