session_get_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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 age2 int64
  39. has, err = testEngine.Table("get_var").Cols("age").
  40. Where("age > ?", 20).
  41. And("age < ?", 30).
  42. Get(&age2)
  43. assert.NoError(t, err)
  44. assert.Equal(t, true, has)
  45. assert.EqualValues(t, 28, age2)
  46. var money float64
  47. has, err = testEngine.Table("get_var").Cols("money").Get(&money)
  48. assert.NoError(t, err)
  49. assert.Equal(t, true, has)
  50. assert.Equal(t, "1.5", fmt.Sprintf("%.1f", money))
  51. var valuesString = make(map[string]string)
  52. has, err = testEngine.Table("get_var").Get(&valuesString)
  53. assert.NoError(t, err)
  54. assert.Equal(t, true, has)
  55. assert.Equal(t, 5, len(valuesString))
  56. assert.Equal(t, "1", valuesString["id"])
  57. assert.Equal(t, "hi", valuesString["msg"])
  58. assert.Equal(t, "28", valuesString["age"])
  59. assert.Equal(t, "1.5", valuesString["money"])
  60. var valuesInter = make(map[string]interface{})
  61. has, err = testEngine.Table("get_var").Where("id = ?", 1).Select("*").Get(&valuesInter)
  62. assert.NoError(t, err)
  63. assert.Equal(t, true, has)
  64. assert.Equal(t, 5, len(valuesInter))
  65. assert.EqualValues(t, 1, valuesInter["id"])
  66. assert.Equal(t, "hi", fmt.Sprintf("%s", valuesInter["msg"]))
  67. assert.EqualValues(t, 28, valuesInter["age"])
  68. assert.Equal(t, "1.5", fmt.Sprintf("%v", valuesInter["money"]))
  69. var valuesSliceString = make([]string, 5)
  70. has, err = testEngine.Table("get_var").Get(&valuesSliceString)
  71. assert.NoError(t, err)
  72. assert.Equal(t, true, has)
  73. assert.Equal(t, "1", valuesSliceString[0])
  74. assert.Equal(t, "hi", valuesSliceString[1])
  75. assert.Equal(t, "28", valuesSliceString[2])
  76. assert.Equal(t, "1.5", valuesSliceString[3])
  77. var valuesSliceInter = make([]interface{}, 5)
  78. has, err = testEngine.Table("get_var").Get(&valuesSliceInter)
  79. assert.NoError(t, err)
  80. assert.Equal(t, true, has)
  81. v1, err := convertInt(valuesSliceInter[0])
  82. assert.NoError(t, err)
  83. assert.EqualValues(t, 1, v1)
  84. assert.Equal(t, "hi", fmt.Sprintf("%s", valuesSliceInter[1]))
  85. v3, err := convertInt(valuesSliceInter[2])
  86. assert.NoError(t, err)
  87. assert.EqualValues(t, 28, v3)
  88. v4, err := convertFloat(valuesSliceInter[3])
  89. assert.NoError(t, err)
  90. assert.Equal(t, "1.5", fmt.Sprintf("%v", v4))
  91. }