123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package object
- import (
- "errors"
- "testing"
- )
- func TestString(t *testing.T) {
- o := Object{
- "good": "value",
- "bad": float64(25),
- // deliberately absent: "absent": "value",
- }
- str, err := o.GetString("good")
- if err != nil {
- t.Fatalf("Problem extracting string: %v", err)
- }
- if str != "value" {
- t.Fatalf(`Expected "value" not %v`, str)
- }
- _, err = o.GetString("bad")
- if !errors.Is(err, ErrKeyWrongType) {
- t.Fatalf(`Expected ErrKeyWrongType, not %v`, err)
- }
- _, err = o.GetString("absent")
- if !errors.Is(err, ErrKeyNotPresent) {
- t.Fatalf(`Expected ErrKeyNotPresent, not %v`, err)
- }
- }
- func TestNumber(t *testing.T) {
- o := Object{
- "good": float64(25),
- "bad": "value",
- // deliberately absent: "absent": "value",
- }
- num, err := o.GetNumber("good")
- if err != nil {
- t.Fatalf("Problem extracting number: %v", err)
- }
- if num != 25 {
- t.Fatalf(`Expected 25 not %v`, num)
- }
- _, err = o.GetNumber("bad")
- if !errors.Is(err, ErrKeyWrongType) {
- t.Fatalf(`Expected ErrKeyWrongType, not %v`, err)
- }
- _, err = o.GetNumber("absent")
- if !errors.Is(err, ErrKeyNotPresent) {
- t.Fatalf(`Expected ErrKeyNotPresent, not %v`, err)
- }
- }
- func TestObject(t *testing.T) {
- o := Object{
- "good": map[string]any{},
- "bad": "value",
- // deliberately absent: "absent": "value",
- }
- obj, err := o.GetObject("good")
- if err != nil {
- t.Fatalf("Problem extracting Object: %v", err)
- }
- if len(obj) != 0 {
- t.Fatalf(`Expected empty map, not %v`, obj)
- }
- _, err = o.GetObject("bad")
- if !errors.Is(err, ErrKeyWrongType) {
- t.Fatalf(`Expected ErrKeyWrongType, not %v`, err)
- }
- _, err = o.GetObject("absent")
- if !errors.Is(err, ErrKeyNotPresent) {
- t.Fatalf(`Expected ErrKeyNotPresent, not %v`, err)
- }
- }
- func TestList(t *testing.T) {
- o := Object{
- "multiple": []any{"first", "second"},
- "single": "one",
- // deliberately absent: "absent": "value",
- }
- list, err := o.GetList("multiple")
- if err != nil {
- t.Fatalf("Problem extracting list: %v", err)
- }
- if len(list) != 2 {
- t.Fatalf(`Expected 2 elements, but didn't get them: %v`, list)
- }
- list, err = o.GetList("single")
- if err != nil {
- t.Fatalf("Problem extracting list: %v", err)
- }
- if len(list) != 1 {
- t.Fatalf(`Expected 1 element to auto-convert to list, but didn't: %v`, list)
- }
- _, err = o.GetList("absent")
- if !errors.Is(err, ErrKeyNotPresent) {
- t.Fatalf(`Expected ErrKeyNotPresent, not %v`, err)
- }
- }
|