summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gobang.go13
-rw-r--r--tests/gobang.go33
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()