This file is indexed.

/usr/include/wibble/regexp.test.h is in libwibble-dev 1.1-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/* -*- C++ -*- (c) 2007 Petr Rockai <me@mornfall.net>
               (c) 2007 Enrico Zini <enrico@enricozini.org> */

#include <wibble/test.h>
#include <wibble/regexp.h>

namespace {

using namespace std;
using namespace wibble;

struct TestRegexp {

    Test basicMatch() {
        Regexp re("^fo\\+bar()$");
        assert(re.match("fobar()"));
        assert(re.match("foobar()"));
        assert(re.match("fooobar()"));
        assert(!re.match("fbar()"));
        assert(!re.match(" foobar()"));
        assert(!re.match("foobar() "));
    }

    Test extendedMatch() {
        ERegexp re("^fo+bar()$");
        assert(re.match("fobar"));
        assert(re.match("foobar"));
        assert(re.match("fooobar"));
        assert(!re.match("fbar"));
        assert(!re.match(" foobar"));
        assert(!re.match("foobar "));
    }

    Test capture() {
        ERegexp re("^f(o+)bar([0-9]*)$", 3);
        assert(re.match("fobar"));
        assert_eq(re[0], string("fobar"));
        assert_eq(re[1], string("o"));
        assert_eq(re[2], string(""));
        assert_eq(re.matchStart(0), 0u);
        assert_eq(re.matchEnd(0), 5u);
        assert_eq(re.matchLength(0), 5u);
        assert_eq(re.matchStart(1), 1u);
        assert_eq(re.matchEnd(1), 2u);
        assert_eq(re.matchLength(1), 1u);

        assert(re.match("foobar42"));
        assert_eq(re[0], string("foobar42"));
        assert_eq(re[1], string("oo"));
        assert_eq(re[2], string("42"));
    }

    Test tokenize() {
        string str("antani blinda la supercazzola!");
        Tokenizer tok(str, "[a-z]+", REG_EXTENDED);
        Tokenizer::const_iterator i = tok.begin();

        assert(i != tok.end());
        assert_eq(*i, "antani");
        ++i;
        assert(i != tok.end());
        assert_eq(*i, "blinda");
        ++i;
        assert(i != tok.end());
        assert_eq(*i, "la");
        ++i;
        assert(i != tok.end());
        assert_eq(*i, "supercazzola");
        ++i;
        assert(i == tok.end());
    }

    Test splitter()
    {
        Splitter splitter("[ \t]+or[ \t]+", REG_EXTENDED | REG_ICASE);
        Splitter::const_iterator i = splitter.begin("a or b OR c   or     dadada");
        assert_eq(*i, "a");
        assert_eq(i->size(), 1u);
        ++i;
        assert_eq(*i, "b");
        assert_eq(i->size(), 1u);
        ++i;
        assert_eq(*i, "c");
        assert_eq(i->size(), 1u);
        ++i;
        assert_eq(*i, "dadada");
        assert_eq(i->size(), 6u);
        ++i;
        assert(i == splitter.end());
    }

    Test emptySplitter()
    {
        Splitter splitter("Z*", REG_EXTENDED | REG_ICASE);
        Splitter::const_iterator i = splitter.begin("ciao");
        assert_eq(*i, "c");
        assert_eq(i->size(), 1u);
        ++i;
        assert_eq(*i, "i");
        assert_eq(i->size(), 1u);
        ++i;
        assert_eq(*i, "a");
        assert_eq(i->size(), 1u);
        ++i;
        assert_eq(*i, "o");
        assert_eq(i->size(), 1u);
        ++i;
        assert(i == splitter.end());
    }

};

}

// vim:set ts=4 sw=4: