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{}
func NewLevelDBStore(dbfile string) *LevelDBStore {
func NewLevelDBStore(dbfile string) (*LevelDBStore, error) {
db := &LevelDBStore{}
if h, err := leveldb.OpenFile(dbfile, nil); err != nil {
panic(err)
} else {
db.store = h
h, err := leveldb.OpenFile(dbfile, nil)
if err != nil {
return nil, err
}
return db
db.store = h
return db, nil
}
func (s *LevelDBStore) Put(key string, value interface{}) error {

View File

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

View File

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

View File

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

View File

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

View File

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