go-ml.dev/pkg/base@v0.0.0-20200610162856-60c38abac71b/tests/rdb_test.go (about)

     1  package tests
     2  
     3  import (
     4  	"database/sql"
     5  	_ "github.com/mattn/go-sqlite3"
     6  	"go-ml.dev/pkg/base/tables/rdb"
     7  	"gotest.tools/assert"
     8  	"os"
     9  	"testing"
    10  )
    11  
    12  func init() {
    13  	_ = os.Remove("/tmp/go-tables-test.sqlite3")
    14  }
    15  
    16  func Test_SQL1(t *testing.T) {
    17  	var err error
    18  	q := TrTable()
    19  	url := "sqlite3:file:/tmp/go-tables-test.sqlite3"
    20  	err = rdb.Write(url, q, rdb.Table("q"), rdb.DropIfExists)
    21  	assert.NilError(t, err)
    22  	x, err := rdb.Read(url, rdb.Query("select * from q"))
    23  	assert.NilError(t, err)
    24  	assertTrData(t, x)
    25  }
    26  
    27  func Test_SQL1b(t *testing.T) {
    28  	var err error
    29  	q := TrTable()
    30  	url := "sqlite3:file:/tmp/go-tables-test.sqlite3"
    31  	err = rdb.Write(url, q, rdb.Table("q"), rdb.DropIfExists)
    32  	assert.NilError(t, err)
    33  	x, err := rdb.Read(url, rdb.Query("select * from q"))
    34  	assert.NilError(t, err)
    35  	assertTrData(t, x)
    36  }
    37  
    38  func Test_SQL2(t *testing.T) {
    39  	var err error
    40  	q := TrTable()
    41  
    42  	db, err := sql.Open("sqlite3", "file:/tmp/go-tables-test.sqlite3")
    43  	assert.NilError(t, err)
    44  	err = rdb.Write(db, q, rdb.Table("q"), rdb.DropIfExists)
    45  	assert.NilError(t, err)
    46  	x, err := rdb.Read(db, rdb.Query("select * from q"))
    47  	assert.NilError(t, err)
    48  
    49  	assertTrData(t, x)
    50  	err = db.Close()
    51  	assert.NilError(t, err)
    52  }
    53  
    54  func Test_SQL3(t *testing.T) {
    55  	var err error
    56  	q := TrTable()
    57  	url := "sqlite3:file:/tmp/go-tables-test.sqlite3"
    58  
    59  	err = rdb.Write(
    60  		url, q, rdb.Table("q2"),
    61  		rdb.DropIfExists,
    62  		rdb.VARCHAR("Name", 256).As("id").PrimaryKey(),
    63  		rdb.DECIMAL("Rate", 3, 1).As("ra"),
    64  		rdb.FLOAT("Age").As("aa"))
    65  
    66  	assert.NilError(t, err)
    67  
    68  	x, err := rdb.Read(url, rdb.Query("select * from q2"),
    69  		rdb.Column("id").As("Name"),
    70  		rdb.FLOAT("ra").As("Rate"),
    71  		rdb.INTEGER("aa").As("Age"))
    72  
    73  	assert.NilError(t, err)
    74  	assertTrData(t, x)
    75  
    76  	y, err := rdb.Read(url, rdb.Table("q2"),
    77  		rdb.FLOAT("ra"),
    78  		rdb.INTEGER("aa"))
    79  	assert.NilError(t, err)
    80  
    81  	for i := 0; i < q.Len(); i++ {
    82  		assert.Assert(t, y.Col("aa").Index(i).Int() == q.Col("Age").Index(i).Int())
    83  	}
    84  }