From f00c41fd4e6af8cd0db80c118a3bb4abef09604e Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Fri, 18 Oct 2024 17:54:26 -0300 Subject: Shoehorn project into default golang skeleton structure --- tests/functional/json.go | 96 ----------------------------------- tests/functional/json/acudego.go | 98 +++++++++++++++++++++++++++++++++++ tests/functional/json/main.go | 1 + tests/functional/libbuild.go | 19 ------- tests/functional/limit.go | 102 ------------------------------------- tests/functional/limit/acudego.go | 104 ++++++++++++++++++++++++++++++++++++++ tests/functional/limit/main.go | 1 + 7 files changed, 204 insertions(+), 217 deletions(-) delete mode 100644 tests/functional/json.go create mode 100644 tests/functional/json/acudego.go create mode 120000 tests/functional/json/main.go delete mode 100644 tests/functional/libbuild.go delete mode 100644 tests/functional/limit.go create mode 100644 tests/functional/limit/acudego.go create mode 120000 tests/functional/limit/main.go (limited to 'tests/functional') diff --git a/tests/functional/json.go b/tests/functional/json.go deleted file mode 100644 index 352a72c..0000000 --- a/tests/functional/json.go +++ /dev/null @@ -1,96 +0,0 @@ -package main - -import ( - "database/sql" - "database/sql/driver" - "encoding/json" - "errors" - "log" - "os" - - _ "acudego" -) - -type Tag struct { - Name string `json:"name"` - Place string `json:"place"` -} - -func (t *Tag) Scan(value interface{}) error { - return json.Unmarshal([]byte(value.(string)), t) -} - -func (t *Tag) Value() (driver.Value, error) { - b, err := json.Marshal(t) - return string(b), err -} - -func main() { - os.Remove("json.db") - defer os.Remove("json.db") - - db, err := sql.Open("acudego", "json.db") - if err != nil { - log.Fatal(err) - } - defer db.Close() - - _, err = db.Exec(`create table myjsontable (tag jsonb)`) - if err != nil { - log.Fatal(err) - } - - stmt, err := db.Prepare("insert into myjsontable(tag) values(?)") - if err != nil { - log.Fatal(err) - } - defer stmt.Close() - - _, err = stmt.Exec(`{"name": "name1", "place": "right-here"}`) - if err != nil { - log.Fatal(err) - } - - _, err = stmt.Exec(`{"name": "michael", "place": "usa"}`) - if err != nil { - log.Fatal(err) - } - - var place string - err = db.QueryRow("select tag->>'place' from myjsontable where tag->>'name' = 'name1'").Scan(&place) - if err != nil { - log.Fatal(err) - } - - if place != "right-here" { - log.Fatal(errors.New("expected right-here, got: " + place)) - } - - var tag Tag - err = db.QueryRow("select tag from myjsontable where tag->>'name' = 'name1'").Scan(&tag) - if err != nil { - log.Fatal(err) - } - - if tag.Name != "name1" { - log.Fatal(errors.New("expected name1, got: " + tag.Name)) - } - if tag.Place != "right-here" { - log.Fatal(errors.New("expected right-here, got: " + tag.Place)) - } - - tag.Place = "日本" - _, err = db.Exec(`update myjsontable set tag = ? where tag->>'name' == 'name1'`, &tag) - if err != nil { - log.Fatal(err) - } - - err = db.QueryRow("select tag->>'place' from myjsontable where tag->>'name' = 'name1'").Scan(&place) - if err != nil { - log.Fatal(err) - } - - if place != "日本" { - log.Fatal(errors.New("expected 日本, got: " + place)) - } -} diff --git a/tests/functional/json/acudego.go b/tests/functional/json/acudego.go new file mode 100644 index 0000000..8f5e923 --- /dev/null +++ b/tests/functional/json/acudego.go @@ -0,0 +1,98 @@ +package acudego + +import ( + "database/sql" + "database/sql/driver" + "encoding/json" + "errors" + "log" + "os" +) + + + +type Tag struct { + Name string `json:"name"` + Place string `json:"place"` +} + +func (t *Tag) Scan(value interface{}) error { + return json.Unmarshal([]byte(value.(string)), t) +} + +func (t *Tag) Value() (driver.Value, error) { + b, err := json.Marshal(t) + return string(b), err +} + + + +func MainTest() { + os.Remove("json.db") + defer os.Remove("json.db") + + db, err := sql.Open(DriverName, "json.db") + if err != nil { + log.Fatal(err) + } + defer db.Close() + + _, err = db.Exec(`create table myjsontable (tag jsonb)`) + if err != nil { + log.Fatal(err) + } + + stmt, err := db.Prepare("insert into myjsontable(tag) values(?)") + if err != nil { + log.Fatal(err) + } + defer stmt.Close() + + _, err = stmt.Exec(`{"name": "name1", "place": "right-here"}`) + if err != nil { + log.Fatal(err) + } + + _, err = stmt.Exec(`{"name": "michael", "place": "usa"}`) + if err != nil { + log.Fatal(err) + } + + var place string + err = db.QueryRow("select tag->>'place' from myjsontable where tag->>'name' = 'name1'").Scan(&place) + if err != nil { + log.Fatal(err) + } + + if place != "right-here" { + log.Fatal(errors.New("expected right-here, got: " + place)) + } + + var tag Tag + err = db.QueryRow("select tag from myjsontable where tag->>'name' = 'name1'").Scan(&tag) + if err != nil { + log.Fatal(err) + } + + if tag.Name != "name1" { + log.Fatal(errors.New("expected name1, got: " + tag.Name)) + } + if tag.Place != "right-here" { + log.Fatal(errors.New("expected right-here, got: " + tag.Place)) + } + + tag.Place = "日本" + _, err = db.Exec(`update myjsontable set tag = ? where tag->>'name' == 'name1'`, &tag) + if err != nil { + log.Fatal(err) + } + + err = db.QueryRow("select tag->>'place' from myjsontable where tag->>'name' = 'name1'").Scan(&place) + if err != nil { + log.Fatal(err) + } + + if place != "日本" { + log.Fatal(errors.New("expected 日本, got: " + place)) + } +} diff --git a/tests/functional/json/main.go b/tests/functional/json/main.go new file mode 120000 index 0000000..f67563d --- /dev/null +++ b/tests/functional/json/main.go @@ -0,0 +1 @@ +../../main.go \ No newline at end of file diff --git a/tests/functional/libbuild.go b/tests/functional/libbuild.go deleted file mode 100644 index 860aff9..0000000 --- a/tests/functional/libbuild.go +++ /dev/null @@ -1,19 +0,0 @@ -package main - -import ( - "database/sql" - - _ "acudego" -) - -func main() { - db, err := sql.Open("acudego", ":memory:") - if err != nil { - panic(err) - } - - err = db.Close() - if err != nil { - panic(err) - } -} diff --git a/tests/functional/limit.go b/tests/functional/limit.go deleted file mode 100644 index ab726f6..0000000 --- a/tests/functional/limit.go +++ /dev/null @@ -1,102 +0,0 @@ -package main - -import ( - "database/sql" - "fmt" - "log" - "os" - "strings" - - "acudego" -) - -func createBulkInsertQuery(n int, start int) (string, []any) { - values := make([]string, n) - args := make([]any, n*2) - pos := 0 - for i := 0; i < n; i++ { - values[i] = "(?, ?)" - args[pos] = start + i - args[pos+1] = fmt.Sprintf("こんにちは世界%03d", i) - pos += 2 - } - query := fmt.Sprintf( - "insert into mylimittable(id, name) values %s", - strings.Join(values, ", "), - ) - return query, args -} - -func bulkInsert(db *sql.DB, query string, args []any) error { - stmt, err := db.Prepare(query) - if err != nil { - return err - } - - _, err = stmt.Exec(args...) - return err -} - -func main() { - const ( - num = 400 - smallLimit = 100 - bigLimit = 999999 - ) - - const SQL = ` - create table mylimittable (id integer not null primary key, name text); - delete from mylimittable; - ` - - var conn *acudego.SQLiteConn - sql.Register("sqlite3_with_limit", &acudego.SQLiteDriver{ - ConnectHook: func(c *acudego.SQLiteConn) error { - conn = c - return nil - }, - }) - - os.Remove("limit.db") - defer os.Remove("limit.db") - db, err := sql.Open("sqlite3_with_limit", "limit.db") - if err != nil { - log.Fatal(err) - } - defer db.Close() - - _, err = db.Exec(SQL) - if err != nil { - log.Fatal(err) - } - - if conn == nil { - log.Fatal("not set sqlite3 connection") - } - - { - query, args := createBulkInsertQuery(num, 0) - err := bulkInsert(db, query, args) - if err != nil { - log.Fatal(err) - } - } - - conn.SetLimit(acudego.SQLITE_LIMIT_VARIABLE_NUMBER, smallLimit) - { - query, args := createBulkInsertQuery(num, num) - err := bulkInsert(db, query, args) - if err == nil { - log.Fatal("expected failure didn't happen") - } - } - - conn.SetLimit(acudego.SQLITE_LIMIT_VARIABLE_NUMBER, bigLimit) - { - query, args := createBulkInsertQuery(500, num+num) - err := bulkInsert(db, query, args) - if err != nil { - log.Fatal(err) - } - } -} diff --git a/tests/functional/limit/acudego.go b/tests/functional/limit/acudego.go new file mode 100644 index 0000000..d47dc27 --- /dev/null +++ b/tests/functional/limit/acudego.go @@ -0,0 +1,104 @@ +package acudego + +import ( + "database/sql" + "fmt" + "log" + "os" + "strings" +) + + + +func createBulkInsertQuery(n int, start int) (string, []any) { + values := make([]string, n) + args := make([]any, n*2) + pos := 0 + for i := 0; i < n; i++ { + values[i] = "(?, ?)" + args[pos] = start + i + args[pos+1] = fmt.Sprintf("こんにちは世界%03d", i) + pos += 2 + } + query := fmt.Sprintf( + "insert into mylimittable(id, name) values %s", + strings.Join(values, ", "), + ) + return query, args +} + +func bulkInsert(db *sql.DB, query string, args []any) error { + stmt, err := db.Prepare(query) + if err != nil { + return err + } + + _, err = stmt.Exec(args...) + return err +} + + + +func MainTest() { + const ( + num = 400 + smallLimit = 100 + bigLimit = 999999 + ) + + const SQL = ` + create table mylimittable (id integer not null primary key, name text); + delete from mylimittable; + ` + + var conn *SQLiteConn + sql.Register("sqlite3_with_limit", &SQLiteDriver{ + ConnectHook: func(c *SQLiteConn) error { + conn = c + return nil + }, + }) + + os.Remove("limit.db") + defer os.Remove("limit.db") + db, err := sql.Open("sqlite3_with_limit", "limit.db") + if err != nil { + log.Fatal(err) + } + defer db.Close() + + _, err = db.Exec(SQL) + if err != nil { + log.Fatal(err) + } + + if conn == nil { + log.Fatal("not set sqlite3 connection") + } + + { + query, args := createBulkInsertQuery(num, 0) + err := bulkInsert(db, query, args) + if err != nil { + log.Fatal(err) + } + } + + conn.SetLimit(SQLITE_LIMIT_VARIABLE_NUMBER, smallLimit) + { + query, args := createBulkInsertQuery(num, num) + err := bulkInsert(db, query, args) + if err == nil { + log.Fatal("expected failure didn't happen") + } + } + + conn.SetLimit(SQLITE_LIMIT_VARIABLE_NUMBER, bigLimit) + { + query, args := createBulkInsertQuery(500, num+num) + err := bulkInsert(db, query, args) + if err != nil { + log.Fatal(err) + } + } +} diff --git a/tests/functional/limit/main.go b/tests/functional/limit/main.go new file mode 120000 index 0000000..f67563d --- /dev/null +++ b/tests/functional/limit/main.go @@ -0,0 +1 @@ +../../main.go \ No newline at end of file -- cgit v1.2.3