OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [regexp/] [syntax/] [prog_test.go] - Rev 747

Compare with Previous | Blame | View Log

// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package syntax_test

import (
        . "regexp/syntax"
        "testing"
)

var compileTests = []struct {
        Regexp string
        Prog   string
}{
        {"a", `  0      fail
  1*    rune1 "a" -> 2
  2     match
`},
        {"[A-M][n-z]", `  0     fail
  1*    rune "AM" -> 2
  2     rune "nz" -> 3
  3     match
`},
        {"", `  0       fail
  1*    nop -> 2
  2     match
`},
        {"a?", `  0     fail
  1     rune1 "a" -> 3
  2*    alt -> 1, 3
  3     match
`},
        {"a??", `  0    fail
  1     rune1 "a" -> 3
  2*    alt -> 3, 1
  3     match
`},
        {"a+", `  0     fail
  1*    rune1 "a" -> 2
  2     alt -> 1, 3
  3     match
`},
        {"a+?", `  0    fail
  1*    rune1 "a" -> 2
  2     alt -> 3, 1
  3     match
`},
        {"a*", `  0     fail
  1     rune1 "a" -> 2
  2*    alt -> 1, 3
  3     match
`},
        {"a*?", `  0    fail
  1     rune1 "a" -> 2
  2*    alt -> 3, 1
  3     match
`},
        {"a+b+", `  0   fail
  1*    rune1 "a" -> 2
  2     alt -> 1, 3
  3     rune1 "b" -> 4
  4     alt -> 3, 5
  5     match
`},
        {"(a+)(b+)", `  0       fail
  1*    cap 2 -> 2
  2     rune1 "a" -> 3
  3     alt -> 2, 4
  4     cap 3 -> 5
  5     cap 4 -> 6
  6     rune1 "b" -> 7
  7     alt -> 6, 8
  8     cap 5 -> 9
  9     match
`},
        {"a+|b+", `  0  fail
  1     rune1 "a" -> 2
  2     alt -> 1, 6
  3     rune1 "b" -> 4
  4     alt -> 3, 6
  5*    alt -> 1, 3
  6     match
`},
        {"A[Aa]", `  0  fail
  1*    rune1 "A" -> 2
  2     rune "A"/i -> 3
  3     match
`},
        {"(?:(?:^).)", `  0     fail
  1*    empty 4 -> 2
  2     anynotnl -> 3
  3     match
`},
}

func TestCompile(t *testing.T) {
        for _, tt := range compileTests {
                re, _ := Parse(tt.Regexp, Perl)
                p, _ := Compile(re)
                s := p.String()
                if s != tt.Prog {
                        t.Errorf("compiled %#q:\n--- have\n%s---\n--- want\n%s---", tt.Regexp, s, tt.Prog)
                }
        }
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.