2017-03-27 07:45:15 +00:00
|
|
|
// Copyright 2017 The Xorm Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
package xorm
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestArrayField(t *testing.T) {
|
|
|
|
assert.NoError(t, prepareEngine())
|
|
|
|
|
|
|
|
type ArrayStruct struct {
|
|
|
|
Id int64
|
2017-04-10 15:10:59 +00:00
|
|
|
Name [20]byte `xorm:"char(80)"`
|
2017-03-27 07:45:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
assert.NoError(t, testEngine.Sync2(new(ArrayStruct)))
|
|
|
|
|
|
|
|
var as = ArrayStruct{
|
|
|
|
Name: [20]byte{
|
|
|
|
96, 96, 96, 96, 96,
|
|
|
|
96, 96, 96, 96, 96,
|
|
|
|
96, 96, 96, 96, 96,
|
|
|
|
96, 96, 96, 96, 96,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
cnt, err := testEngine.Insert(&as)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, 1, cnt)
|
|
|
|
|
|
|
|
var arr ArrayStruct
|
|
|
|
has, err := testEngine.Id(1).Get(&arr)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, true, has)
|
|
|
|
assert.Equal(t, as.Name, arr.Name)
|
|
|
|
|
|
|
|
var arrs []ArrayStruct
|
|
|
|
err = testEngine.Find(&arrs)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, 1, len(arrs))
|
|
|
|
assert.Equal(t, as.Name, arrs[0].Name)
|
|
|
|
|
|
|
|
var newName = [20]byte{
|
|
|
|
90, 96, 96, 96, 96,
|
|
|
|
96, 96, 96, 96, 96,
|
|
|
|
96, 96, 96, 96, 96,
|
|
|
|
96, 96, 96, 96, 96,
|
|
|
|
}
|
|
|
|
|
|
|
|
cnt, err = testEngine.ID(1).Update(&ArrayStruct{
|
|
|
|
Name: newName,
|
|
|
|
})
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, 1, cnt)
|
|
|
|
|
|
|
|
var newArr ArrayStruct
|
|
|
|
has, err = testEngine.ID(1).Get(&newArr)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, true, has)
|
|
|
|
assert.Equal(t, newName, newArr.Name)
|
|
|
|
|
|
|
|
cnt, err = testEngine.ID(1).Delete(new(ArrayStruct))
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, 1, cnt)
|
|
|
|
|
|
|
|
var cfgArr ArrayStruct
|
|
|
|
has, err = testEngine.ID(1).Get(&cfgArr)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, false, has)
|
|
|
|
}
|
2017-04-12 07:39:59 +00:00
|
|
|
|
|
|
|
func TestGetBytes(t *testing.T) {
|
|
|
|
assert.NoError(t, prepareEngine())
|
|
|
|
|
|
|
|
type Varbinary struct {
|
2017-05-17 08:16:39 +00:00
|
|
|
Data []byte `xorm:"VARBINARY(250)"`
|
2017-04-12 07:39:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
err := testEngine.Sync2(new(Varbinary))
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
cnt, err := testEngine.Insert(&Varbinary{
|
|
|
|
Data: []byte("test"),
|
|
|
|
})
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, 1, cnt)
|
|
|
|
|
|
|
|
var b Varbinary
|
|
|
|
has, err := testEngine.Get(&b)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, true, has)
|
|
|
|
assert.Equal(t, "test", string(b.Data))
|
|
|
|
}
|