| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // Copyright 2012 Gary Burd
- //
- // Licensed under the Apache License, Version 2.0 (the "License"): you may
- // not use this file except in compliance with the License. You may obtain
- // a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- // License for the specific language governing permissions and limitations
- // under the License.
- package redisx_test
- import (
- "github.com/garyburd/redigo/redisx"
- "reflect"
- "testing"
- )
- var scanStructTests = []struct {
- title string
- reply []string
- value interface{}
- }{
- {"basic",
- []string{"i", "-1234", "u", "5678", "s", "hello", "p", "world", "b", "", "Bt", "1", "Bf", "0"},
- &struct {
- I int `redis:"i"`
- U uint `redis:"u"`
- S string `redis:"s"`
- P []byte `redis:"p"`
- B bool `redis:"b"`
- Bt bool
- Bf bool
- }{
- -1234, 5678, "hello", []byte("world"), false, true, false,
- },
- },
- }
- func TestScanStruct(t *testing.T) {
- for _, tt := range scanStructTests {
- var reply []interface{}
- for _, v := range tt.reply {
- reply = append(reply, []byte(v))
- }
- value := reflect.New(reflect.ValueOf(tt.value).Type().Elem())
- if err := redisx.ScanStruct(reply, value.Interface()); err != nil {
- t.Fatalf("ScanStruct(%s) returned error %v", tt.title, err)
- }
- if !reflect.DeepEqual(value.Interface(), tt.value) {
- t.Fatalf("ScanStruct(%s) returned %v, want %v", tt.title, value.Interface(), tt.value)
- }
- }
- }
- var formatStructTests = []struct {
- title string
- args []interface{}
- value interface{}
- }{
- {"basic",
- []interface{}{"i", int(-1234), "u", uint(5678), "s", "hello", "p", []byte("world"), "Bt", true, "Bf", false},
- &struct {
- I int `redis:"i"`
- U uint `redis:"u"`
- S string `redis:"s"`
- P []byte `redis:"p"`
- Bt bool
- Bf bool
- }{
- -1234, 5678, "hello", []byte("world"), true, false,
- },
- },
- }
- func TestFormatStruct(t *testing.T) {
- for _, tt := range formatStructTests {
- args := redisx.AppendStruct(nil, tt.value)
- if !reflect.DeepEqual(args, tt.args) {
- t.Fatalf("FormatStruct(%s) returned %v, want %v", tt.title, args, tt.args)
- }
- }
- }
|