Changeset 4102 for trunk/test/utility.cc


Ignore:
Timestamp:
Sep 22, 2021, 9:50:18 AM (2 years ago)
Author:
Peter
Message:

add wrapper function that calls std::string::contains, ::starts_with, and ::ends_with, if available; otherwise use home-brewed code. Add autoconf tests that check if these functions are available in CXX.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/utility.cc

    r3855 r4102  
    5656void test_inverse(test::Suite&);
    5757
     58void test_contains(test::Suite& suite);
    5859void test_dirname(test::Suite& suite);
     60void test_ends_with(test::Suite& suite);
    5961void test_basename(test::Suite& suite);
    6062void test_fnmatch(test::Suite& suite);
     
    6466void test_rename(test::Suite& suite);
    6567void test_replace(test::Suite& suite);
     68void test_starts_with(test::Suite& suite);
    6669void test_symlink(test::Suite& suite);
    6770
     
    243246  test_symlink(suite);
    244247  test_ticket842(suite);
     248  test_starts_with(suite);
     249  test_contains(suite);
     250  test_ends_with(suite);
    245251
    246252  return suite.return_value();
     
    828834    suite.err() << "incorrect data[1].second: " << data[1].second << "\n";
    829835}
     836
     837
     838void test_starts_with(test::Suite& suite)
     839{
     840  std::string name("Jane Doe");
     841  if (!utility::starts_with(name, "Jane")) {
     842    suite.add(false);
     843    suite.err() << "error: 'Jane Doe' does not start with 'Jane'\n";
     844  }
     845  if (!utility::starts_with(name, 'J')) {
     846    suite.add(false);
     847    suite.err() << "error: starts_with(x,x) failed\n";
     848  }
     849  if (!utility::starts_with(name, name)) {
     850    suite.add(false);
     851    suite.err() << "error: starts_with(x,x) failed\n";
     852  }
     853}
     854
     855
     856void test_contains(test::Suite& suite)
     857{
     858  std::string name("Jane Doe");
     859  if (!utility::contains(name, "ne")) {
     860    suite.add(false);
     861    suite.err() << "error: " << name << " does not contain \"ne\"\n";
     862  }
     863  if (!utility::contains(name, name)) {
     864    suite.add(false);
     865    suite.err() << "error: contains(x,x) failed\n";
     866  }
     867  if (!utility::contains(name, 'D')) {
     868    suite.add(false);
     869    suite.err() << "error: contains(string,char) failed\n";
     870  }
     871}
     872
     873
     874void test_ends_with(test::Suite& suite)
     875{
     876  std::string name("Jane Doe");
     877  if (!utility::ends_with(name, name)) {
     878    suite.add(false);
     879    suite.err() << "error: ends_with(x,x) failed\n";
     880  }
     881  if (!utility::ends_with(name, 'e')) {
     882    suite.add(false);
     883    suite.err() << "error: ends_with(x,x) failed\n";
     884  }
     885  if (!utility::ends_with(name, "Doe")) {
     886    suite.add(false);
     887    suite.err() << "error: 'Jane Doe' does not end with 'Doe'\n";
     888  }
     889}
Note: See TracChangeset for help on using the changeset viewer.