This commit is contained in:
Lunny Xiao 2020-03-04 10:14:53 +08:00
parent 13f149064b
commit 8e54d77d59
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
6 changed files with 66 additions and 252 deletions

View File

@ -19,14 +19,14 @@ type LevelDBStore struct {
var _ CacheStore = &LevelDBStore{} var _ CacheStore = &LevelDBStore{}
func NewLevelDBStore(dbfile string) *LevelDBStore { func NewLevelDBStore(dbfile string) (*LevelDBStore, error) {
db := &LevelDBStore{} db := &LevelDBStore{}
if h, err := leveldb.OpenFile(dbfile, nil); err != nil { h, err := leveldb.OpenFile(dbfile, nil)
panic(err) if err != nil {
} else { return nil, err
db.store = h
} }
return db db.store = h
return db, nil
} }
func (s *LevelDBStore) Put(key string, value interface{}) error { func (s *LevelDBStore) Put(key string, value interface{}) error {

View File

@ -11,7 +11,9 @@ import (
) )
func TestLevelDBStore(t *testing.T) { func TestLevelDBStore(t *testing.T) {
store := NewLevelDBStore("./level.db") store, err := NewLevelDBStore("./level.db")
assert.NoError(t, err)
var kvs = map[string]interface{}{ var kvs = map[string]interface{}{
"a": "b", "a": "b",
} }

View File

@ -6,6 +6,7 @@ package statements
import ( import (
"database/sql/driver" "database/sql/driver"
"errors"
"fmt" "fmt"
"reflect" "reflect"
"time" "time"
@ -200,8 +201,7 @@ func (statement *Statement) BuildUpdates(bean interface{},
continue continue
} }
} else { } else {
// TODO: how to handler? return nil, nil, errors.New("Not supported multiple primary keys")
panic("not supported")
} }
} }
} else { } else {
@ -209,7 +209,7 @@ func (statement *Statement) BuildUpdates(bean interface{},
if requiredField || !utils.IsStructZero(fieldValue) { if requiredField || !utils.IsStructZero(fieldValue) {
bytes, err := json.DefaultJSONHandler.Marshal(fieldValue.Interface()) bytes, err := json.DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil { if err != nil {
panic(fmt.Sprintf("mashal %v failed", fieldValue.Interface())) return nil, nil, fmt.Errorf("mashal %v failed", fieldValue.Interface())
} }
if col.SQLType.IsText() { if col.SQLType.IsText() {
val = string(bytes) val = string(bytes)

View File

@ -5,7 +5,6 @@
package xorm package xorm
import ( import (
"errors"
"fmt" "fmt"
"sync" "sync"
"testing" "testing"
@ -291,10 +290,7 @@ func TestUpdate1(t *testing.T) {
var ori Userinfo var ori Userinfo
has, err := testEngine.Get(&ori) has, err := testEngine.Get(&ori)
assert.NoError(t, err) assert.NoError(t, err)
if !has { assert.True(t, has)
t.Error(errors.New("not exist"))
panic(errors.New("not exist"))
}
// update by id // update by id
user := Userinfo{Username: "xxx", Height: 1.2} user := Userinfo{Username: "xxx", Height: 1.2}
@ -318,10 +314,7 @@ func TestUpdate1(t *testing.T) {
{ {
user := &Userinfo{Username: "not null data", Height: 180.5} user := &Userinfo{Username: "not null data", Height: 180.5}
_, err := testEngine.Insert(user) _, err := testEngine.Insert(user)
if err != nil { assert.NoError(t, err)
t.Error(err)
panic(err)
}
userID := user.Uid userID := user.Uid
has, err := testEngine.ID(userID). has, err := testEngine.ID(userID).
@ -362,10 +355,7 @@ func TestUpdate1(t *testing.T) {
defer func() { defer func() {
err = testEngine.DropTables(&Article{}) err = testEngine.DropTables(&Article{})
if err != nil { assert.NoError(t, err)
t.Error(err)
panic(err)
}
}() }()
a := &Article{0, "1", "2", "3", "4", "5", 2} a := &Article{0, "1", "2", "3", "4", "5", 2}

View File

@ -5,7 +5,6 @@
package xorm package xorm
import ( import (
"errors"
"fmt" "fmt"
"strings" "strings"
"testing" "testing"
@ -326,36 +325,14 @@ func TestExtends3(t *testing.T) {
Join("LEFT", []string{typeTableName, "type"}, "`type`.`"+mapper("Id")+"`="+msgTableName+".`"+mapper("Id")+"`"). Join("LEFT", []string{typeTableName, "type"}, "`type`.`"+mapper("Id")+"`="+msgTableName+".`"+mapper("Id")+"`").
Find(&list) Find(&list)
assert.NoError(t, err) assert.NoError(t, err)
assert.EqualValues(t, 1, len(list))
if len(list) != 1 { assert.EqualValues(t, list[0].Message.Id, msg.Id)
err = errors.New(fmt.Sprintln("should have 1 message, got", len(list))) assert.EqualValues(t, list[0].Sender.Id, sender.Id)
t.Error(err) assert.EqualValues(t, list[0].Sender.Name, sender.Name)
panic(err) assert.EqualValues(t, list[0].Receiver.Id, receiver.Id)
} assert.EqualValues(t, list[0].Receiver.Name, receiver.Name)
assert.EqualValues(t, list[0].Type.Id, msgtype.Id)
if list[0].Message.Id != msg.Id { assert.EqualValues(t, list[0].Type.Name, msgtype.Name)
err = errors.New(fmt.Sprintln("should message equal", list[0].Message, msg))
t.Error(err)
panic(err)
}
if list[0].Sender.Id != sender.Id || list[0].Sender.Name != sender.Name {
err = errors.New(fmt.Sprintln("should sender equal", list[0].Sender, sender))
t.Error(err)
panic(err)
}
if list[0].Receiver.Id != receiver.Id || list[0].Receiver.Name != receiver.Name {
err = errors.New(fmt.Sprintln("should receiver equal", list[0].Receiver, receiver))
t.Error(err)
panic(err)
}
if list[0].Type.Id != msgtype.Id || list[0].Type.Name != msgtype.Name {
err = errors.New(fmt.Sprintln("should msgtype equal", list[0].Type, msgtype))
t.Error(err)
panic(err)
}
} }
func TestExtends4(t *testing.T) { func TestExtends4(t *testing.T) {
@ -410,30 +387,12 @@ func TestExtends4(t *testing.T) {
Join("LEFT", typeTableName, typeTableName+".`"+mapper("Id")+"`="+msgTableName+".`"+mapper("Id")+"`"). Join("LEFT", typeTableName, typeTableName+".`"+mapper("Id")+"`="+msgTableName+".`"+mapper("Id")+"`").
Find(&list) Find(&list)
assert.NoError(t, err) assert.NoError(t, err)
assert.EqualValues(t, len(list), 1)
if len(list) != 1 { assert.EqualValues(t, list[0].Message.Id, msg.Id)
err = errors.New(fmt.Sprintln("should have 1 message, got", len(list))) assert.EqualValues(t, list[0].MessageUser.Id, sender.Id)
t.Error(err) assert.EqualValues(t, list[0].MessageUser.Name, sender.Name)
panic(err) assert.EqualValues(t, list[0].MessageType.Id, msgtype.Id)
} assert.EqualValues(t, list[0].MessageType.Name, msgtype.Name)
if list[0].Message.Id != msg.Id {
err = errors.New(fmt.Sprintln("should message equal", list[0].Message, msg))
t.Error(err)
panic(err)
}
if list[0].MessageUser.Id != sender.Id || list[0].MessageUser.Name != sender.Name {
err = errors.New(fmt.Sprintln("should sender equal", list[0].MessageUser, sender))
t.Error(err)
panic(err)
}
if list[0].MessageType.Id != msgtype.Id || list[0].MessageType.Name != msgtype.Name {
err = errors.New(fmt.Sprintln("should msgtype equal", list[0].MessageType, msgtype))
t.Error(err)
panic(err)
}
} }
type Size struct { type Size struct {
@ -1240,45 +1199,23 @@ func TestVersion1(t *testing.T) {
ver := &VersionS{Name: "sfsfdsfds"} ver := &VersionS{Name: "sfsfdsfds"}
_, err = testEngine.Insert(ver) _, err = testEngine.Insert(ver)
assert.NoError(t, err) assert.NoError(t, err)
fmt.Println(ver) assert.EqualValues(t, ver.Ver, 1)
if ver.Ver != 1 {
err = errors.New("insert error")
t.Error(err)
panic(err)
}
newVer := new(VersionS) newVer := new(VersionS)
has, err := testEngine.ID(ver.Id).Get(newVer) has, err := testEngine.ID(ver.Id).Get(newVer)
assert.NoError(t, err) assert.NoError(t, err)
assert.True(t, has)
if !has { assert.EqualValues(t, newVer.Ver, 1)
t.Error(fmt.Errorf("no version id is %v", ver.Id))
panic(err)
}
fmt.Println(newVer)
if newVer.Ver != 1 {
err = errors.New("insert error")
t.Error(err)
panic(err)
}
newVer.Name = "-------" newVer.Name = "-------"
_, err = testEngine.ID(ver.Id).Update(newVer) _, err = testEngine.ID(ver.Id).Update(newVer)
assert.NoError(t, err) assert.NoError(t, err)
if newVer.Ver != 2 { assert.EqualValues(t, newVer.Ver, 2)
err = errors.New("update should set version back to struct")
t.Error(err)
}
newVer = new(VersionS) newVer = new(VersionS)
has, err = testEngine.ID(ver.Id).Get(newVer) has, err = testEngine.ID(ver.Id).Get(newVer)
assert.NoError(t, err) assert.NoError(t, err)
fmt.Println(newVer) assert.EqualValues(t, newVer.Ver, 2)
if newVer.Ver != 2 {
err = errors.New("update error")
t.Error(err)
panic(err)
}
} }
func TestVersion2(t *testing.T) { func TestVersion2(t *testing.T) {
@ -1296,15 +1233,8 @@ func TestVersion2(t *testing.T) {
} }
_, err = testEngine.Insert(vers) _, err = testEngine.Insert(vers)
assert.NoError(t, err) assert.NoError(t, err)
fmt.Println(vers)
for _, v := range vers { for _, v := range vers {
if v.Ver != 1 { assert.EqualValues(t, v.Ver, 1)
err := errors.New("version should be 1")
t.Error(err)
panic(err)
}
} }
} }
@ -1327,45 +1257,23 @@ func TestVersion3(t *testing.T) {
ver := &VersionUintS{Name: "sfsfdsfds"} ver := &VersionUintS{Name: "sfsfdsfds"}
_, err = testEngine.Insert(ver) _, err = testEngine.Insert(ver)
assert.NoError(t, err) assert.NoError(t, err)
fmt.Println(ver) assert.EqualValues(t, ver.Ver, 1)
if ver.Ver != 1 {
err = errors.New("insert error")
t.Error(err)
panic(err)
}
newVer := new(VersionUintS) newVer := new(VersionUintS)
has, err := testEngine.ID(ver.Id).Get(newVer) has, err := testEngine.ID(ver.Id).Get(newVer)
assert.NoError(t, err) assert.NoError(t, err)
assert.True(t, has)
if !has { assert.EqualValues(t, newVer.Ver, 1)
t.Error(fmt.Errorf("no version id is %v", ver.Id))
panic(err)
}
fmt.Println(newVer)
if newVer.Ver != 1 {
err = errors.New("insert error")
t.Error(err)
panic(err)
}
newVer.Name = "-------" newVer.Name = "-------"
_, err = testEngine.ID(ver.Id).Update(newVer) _, err = testEngine.ID(ver.Id).Update(newVer)
assert.NoError(t, err) assert.NoError(t, err)
if newVer.Ver != 2 { assert.EqualValues(t, newVer.Ver, 2)
err = errors.New("update should set version back to struct")
t.Error(err)
}
newVer = new(VersionUintS) newVer = new(VersionUintS)
has, err = testEngine.ID(ver.Id).Get(newVer) has, err = testEngine.ID(ver.Id).Get(newVer)
assert.NoError(t, err) assert.NoError(t, err)
fmt.Println(newVer) assert.EqualValues(t, newVer.Ver, 2)
if newVer.Ver != 2 {
err = errors.New("update error")
t.Error(err)
panic(err)
}
} }
func TestVersion4(t *testing.T) { func TestVersion4(t *testing.T) {
@ -1383,14 +1291,7 @@ func TestVersion4(t *testing.T) {
} }
_, err = testEngine.Insert(vers) _, err = testEngine.Insert(vers)
assert.NoError(t, err) assert.NoError(t, err)
fmt.Println(vers)
for _, v := range vers { for _, v := range vers {
if v.Ver != 1 { assert.EqualValues(t, v.Ver, 1)
err := errors.New("version should be 1")
t.Error(err)
panic(err)
}
} }
} }

View File

@ -77,16 +77,8 @@ func TestNullStructInsert(t *testing.T) {
if true { if true {
item := new(NullType) item := new(NullType)
_, err := testEngine.Insert(item) _, err := testEngine.Insert(item)
if err != nil { assert.NoError(t, err)
t.Error(err) assert.EqualValues(t, item.Id, 1)
panic(err)
}
fmt.Println(item)
if item.Id != 1 {
err = errors.New("insert error")
t.Error(err)
panic(err)
}
} }
if true { if true {
@ -97,16 +89,8 @@ func TestNullStructInsert(t *testing.T) {
IsMan: sql.NullBool{Bool: true, Valid: true}, IsMan: sql.NullBool{Bool: true, Valid: true},
} }
_, err := testEngine.Insert(&item) _, err := testEngine.Insert(&item)
if err != nil { assert.NoError(t, err)
t.Error(err) assert.EqualValues(t, item.Id, 2)
panic(err)
}
fmt.Println(item)
if item.Id != 2 {
err = errors.New("insert error")
t.Error(err)
panic(err)
}
} }
if true { if true {
@ -125,11 +109,7 @@ func TestNullStructInsert(t *testing.T) {
} }
_, err := testEngine.Insert(&items) _, err := testEngine.Insert(&items)
if err != nil { assert.NoError(t, err)
t.Error(err)
panic(err)
}
fmt.Println(items)
} }
} }
@ -171,30 +151,16 @@ func TestNullStructUpdate(t *testing.T) {
item.Height = sql.NullFloat64{Float64: 0, Valid: false} // update to NULL item.Height = sql.NullFloat64{Float64: 0, Valid: false} // update to NULL
affected, err := testEngine.ID(2).Cols("age", "height", "is_man").Update(item) affected, err := testEngine.ID(2).Cols("age", "height", "is_man").Update(item)
if err != nil { assert.NoError(t, err)
t.Error(err) assert.EqualValues(t, affected, 1)
panic(err)
}
if affected != 1 {
err := errors.New("update failed")
t.Error(err)
panic(err)
}
} }
if true { // 测试In update if true { // 测试In update
item := new(NullType) item := new(NullType)
item.Age = sql.NullInt64{Int64: 23, Valid: true} item.Age = sql.NullInt64{Int64: 23, Valid: true}
affected, err := testEngine.In("id", 3, 4).Cols("age", "height", "is_man").Update(item) affected, err := testEngine.In("id", 3, 4).Cols("age", "height", "is_man").Update(item)
if err != nil { assert.NoError(t, err)
t.Error(err) assert.EqualValues(t, affected, 2)
panic(err)
}
if affected != 2 {
err := errors.New("update failed")
t.Error(err)
panic(err)
}
} }
if true { // 测试where if true { // 测试where
@ -204,10 +170,7 @@ func TestNullStructUpdate(t *testing.T) {
item.Age = sql.NullInt64{Int64: 34, Valid: true} item.Age = sql.NullInt64{Int64: 34, Valid: true}
_, err := testEngine.Where("age > ?", 34).Update(item) _, err := testEngine.Where("age > ?", 34).Update(item)
if err != nil { assert.NoError(t, err)
t.Error(err)
panic(err)
}
} }
if true { // 修改全部时,插入空值 if true { // 修改全部时,插入空值
@ -219,10 +182,7 @@ func TestNullStructUpdate(t *testing.T) {
} }
_, err := testEngine.AllCols().ID(6).Update(item) _, err := testEngine.AllCols().ID(6).Update(item)
if err != nil { assert.NoError(t, err)
t.Error(err)
panic(err)
}
fmt.Println(item) fmt.Println(item)
} }
@ -263,63 +223,33 @@ func TestNullStructFind(t *testing.T) {
if true { if true {
item := new(NullType) item := new(NullType)
has, err := testEngine.ID(1).Get(item) has, err := testEngine.ID(1).Get(item)
if err != nil { assert.NoError(t, err)
t.Error(err) assert.True(t, has)
panic(err) assert.EqualValues(t, item.Id, 1)
} assert.False(t, item.Name.Valid)
if !has { assert.False(t, item.Age.Valid)
t.Error(errors.New("no find id 1")) assert.False(t, item.Height.Valid)
panic(err) assert.False(t, item.IsMan.Valid)
}
fmt.Println(item)
if item.Id != 1 || item.Name.Valid || item.Age.Valid || item.Height.Valid ||
item.IsMan.Valid {
err = errors.New("insert error")
t.Error(err)
panic(err)
}
} }
if true { if true {
item := new(NullType) item := new(NullType)
item.Id = 2 item.Id = 2
has, err := testEngine.Get(item) has, err := testEngine.Get(item)
if err != nil { assert.NoError(t, err)
t.Error(err) assert.True(t, has)
panic(err)
}
if !has {
t.Error(errors.New("no find id 2"))
panic(err)
}
fmt.Println(item)
} }
if true { if true {
item := make([]NullType, 0) item := make([]NullType, 0)
err := testEngine.ID(2).Find(&item) err := testEngine.ID(2).Find(&item)
if err != nil { assert.NoError(t, err)
t.Error(err)
panic(err)
}
fmt.Println(item)
} }
if true { if true {
item := make([]NullType, 0) item := make([]NullType, 0)
err := testEngine.Asc("age").Find(&item) err := testEngine.Asc("age").Find(&item)
if err != nil { assert.NoError(t, err)
t.Error(err)
panic(err)
}
for k, v := range item {
fmt.Println(k, v)
}
} }
} }
@ -334,10 +264,7 @@ func TestNullStructIterate(t *testing.T) {
fmt.Println(i, nultype) fmt.Println(i, nultype)
return nil return nil
}) })
if err != nil { assert.NoError(t, err)
t.Error(err)
panic(err)
}
} }
} }
@ -348,10 +275,7 @@ func TestNullStructCount(t *testing.T) {
if true { if true {
item := new(NullType) item := new(NullType)
total, err := testEngine.Where("age IS NOT NULL").Count(item) total, err := testEngine.Where("age IS NOT NULL").Count(item)
if err != nil { assert.NoError(t, err)
t.Error(err)
panic(err)
}
fmt.Println(total) fmt.Println(total)
} }
} }
@ -367,10 +291,7 @@ func TestNullStructRows(t *testing.T) {
for rows.Next() { for rows.Next() {
err = rows.Scan(item) err = rows.Scan(item)
if err != nil { assert.NoError(t, err)
t.Error(err)
panic(err)
}
fmt.Println(item) fmt.Println(item)
} }
} }