session_get_test.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // Copyright 2017 The Xorm Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package xorm
  5. import (
  6. "fmt"
  7. "testing"
  8. "time"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestGetVar(t *testing.T) {
  12. assert.NoError(t, prepareEngine())
  13. type GetVar struct {
  14. Id int64 `xorm:"autoincr pk"`
  15. Msg string `xorm:"varchar(255)"`
  16. Age int
  17. Money float32
  18. Created time.Time `xorm:"created"`
  19. }
  20. assert.NoError(t, testEngine.Sync2(new(GetVar)))
  21. var data = GetVar{
  22. Msg: "hi",
  23. Age: 28,
  24. Money: 1.5,
  25. }
  26. _, err := testEngine.InsertOne(data)
  27. assert.NoError(t, err)
  28. var msg string
  29. has, err := testEngine.Table("get_var").Cols("msg").Get(&msg)
  30. assert.NoError(t, err)
  31. assert.Equal(t, true, has)
  32. assert.Equal(t, "hi", msg)
  33. var age int
  34. has, err = testEngine.Table("get_var").Cols("age").Get(&age)
  35. assert.NoError(t, err)
  36. assert.Equal(t, true, has)
  37. assert.Equal(t, 28, age)
  38. var money float64
  39. has, err = testEngine.Table("get_var").Cols("money").Get(&money)
  40. assert.NoError(t, err)
  41. assert.Equal(t, true, has)
  42. assert.Equal(t, "1.5", fmt.Sprintf("%.1f", money))
  43. var valuesString = make(map[string]string)
  44. has, err = testEngine.Table("get_var").Get(&valuesString)
  45. assert.NoError(t, err)
  46. assert.Equal(t, true, has)
  47. assert.Equal(t, 5, len(valuesString))
  48. assert.Equal(t, "1", valuesString["id"])
  49. assert.Equal(t, "hi", valuesString["msg"])
  50. assert.Equal(t, "28", valuesString["age"])
  51. assert.Equal(t, "1.5", valuesString["money"])
  52. var valuesInter = make(map[string]interface{})
  53. has, err = testEngine.Table("get_var").Where("id = ?", 1).Select("*").Get(&valuesInter)
  54. assert.NoError(t, err)
  55. assert.Equal(t, true, has)
  56. assert.Equal(t, 5, len(valuesInter))
  57. assert.EqualValues(t, 1, valuesInter["id"])
  58. assert.Equal(t, "hi", fmt.Sprintf("%s", valuesInter["msg"]))
  59. assert.EqualValues(t, 28, valuesInter["age"])
  60. assert.Equal(t, "1.5", fmt.Sprintf("%v", valuesInter["money"]))
  61. var valuesSliceString = make([]string, 5)
  62. has, err = testEngine.Table("get_var").Get(&valuesSliceString)
  63. assert.NoError(t, err)
  64. assert.Equal(t, true, has)
  65. assert.Equal(t, "1", valuesSliceString[0])
  66. assert.Equal(t, "hi", valuesSliceString[1])
  67. assert.Equal(t, "28", valuesSliceString[2])
  68. assert.Equal(t, "1.5", valuesSliceString[3])
  69. var valuesSliceInter = make([]interface{}, 5)
  70. has, err = testEngine.Table("get_var").Get(&valuesSliceInter)
  71. assert.NoError(t, err)
  72. assert.Equal(t, true, has)
  73. assert.EqualValues(t, 1, valuesSliceInter[0])
  74. assert.Equal(t, "hi", fmt.Sprintf("%s", valuesSliceInter[1]))
  75. assert.EqualValues(t, 28, valuesSliceInter[2])
  76. assert.Equal(t, "1.5", fmt.Sprintf("%v", valuesSliceInter[3]))
  77. }