diff options
-rw-r--r-- | src/gobang.go | 13 | ||||
-rw-r--r-- | tests/gobang.go | 33 |
2 files changed, 45 insertions, 1 deletions
diff --git a/src/gobang.go b/src/gobang.go index f13fc80..e46b468 100644 --- a/src/gobang.go +++ b/src/gobang.go @@ -9,6 +9,7 @@ import ( "math/big" "os" "reflect" + "regexp" "runtime" "runtime/debug" "slices" @@ -44,7 +45,9 @@ type CopyResult struct { -// Local variables +const ( + SQLiteNow = "strftime('%Y-%m-%dT%H:%M:%f000000Z', 'now')" +) var ( level LogLevel = LevelInfo @@ -52,10 +55,18 @@ var ( hostname string SourceInfoSkip = 3 + + ErrBadSQLTablePrefix = errors.New("Invalid table prefix") ) + +var _SQLTablePrefixRE = regexp.MustCompilePOSIX("^[a-zA-Z][_a-zA-z0-9]*$") +func ValidSQLTablePrefix(prefix string) bool { + return _SQLTablePrefixRE.MatchString(prefix) +} + func SomeError(errs []error) error { for _, err := range errs { if err != nil { diff --git a/tests/gobang.go b/tests/gobang.go index 518748e..8d85933 100644 --- a/tests/gobang.go +++ b/tests/gobang.go @@ -13,6 +13,38 @@ import ( +func test_ValidSQLTablePrefix() { + TestStart("ValidSQLTablePrefix()") + + Testing("simple identifiers are good", func() { + input := []string{ + "simple", + "id", + "g00d", + "VERY_GOOD", + } + + for _, given := range input { + AssertEqual(ValidSQLTablePrefix(given), true) + } + }) + + Testing("nothing fancy is allowed", func() { + input := []string{ + "a-table", + "0t", + "", + "thing\"", + "*symbol", + "symbol*", + } + + for _, given := range input { + AssertEqual(ValidSQLTablePrefix(given), false) + } + }) +} + func test_SomeError() { TestStart("SomeError()") @@ -926,6 +958,7 @@ func test_setHostname() { func MainTest() { + test_ValidSQLTablePrefix() test_SomeError() test_SomeFnError() test_Random() |