| Conditions | 6 |
| Total Lines | 25 |
| Code Lines | 15 |
| Lines | 0 |
| Ratio | 0 % |
| Tests | 11 |
| CRAP Score | 6.3541 |
| Changes | 0 | ||
| 1 | package decode |
||
| 18 | func (vd *valueDecoder) DecodeValue(reader io.Reader, v interface{}) error { |
||
| 19 | 1 | valuePtr := reflect.ValueOf(v) |
|
| 20 | 1 | value := valuePtr.Elem() |
|
| 21 | |||
| 22 | 1 | if !value.CanSet() { |
|
| 23 | return ErrCantSetValue |
||
| 24 | } |
||
| 25 | |||
| 26 | 1 | bval, err := readValue(vd.binnType, reader) |
|
| 27 | 1 | if err != nil { |
|
| 28 | return err |
||
| 29 | } |
||
| 30 | |||
| 31 | 1 | converted, err := decodeItem(value.Type(), vd.binnType, bval) |
|
| 32 | 1 | if err != nil { |
|
| 33 | return err |
||
| 34 | } |
||
| 35 | |||
| 36 | 1 | if value.Kind() != reflect.ValueOf(converted).Kind() && value.Kind() != reflect.Interface { |
|
| 37 | 1 | return &UnknownValueError{reflect.ValueOf(converted).Kind(), value.Kind()} |
|
| 38 | } |
||
| 39 | |||
| 40 | 1 | value.Set(reflect.ValueOf(converted)) |
|
| 41 | |||
| 42 | 1 | return nil |
|
| 43 | } |
||
| 44 |