...

Source file src/github.com/clbanning/mxj/v2/json_test.go

Documentation: github.com/clbanning/mxj/v2

     1  package mxj
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"io"
     7  	"testing"
     8  )
     9  
    10  var jdata = []byte(`{ "key1":"string", "key2":34, "key3":true, "key4":"unsafe: <>&", "key5":null }`)
    11  var jdata2 = []byte(`{ "key1":"string", "key2":34, "key3":true, "key4":"unsafe: <>&" },
    12  	{ "key":"value in new JSON string" }`)
    13  
    14  func TestJsonHeader(t *testing.T) {
    15  	fmt.Println("\n----------------  json_test.go ...")
    16  }
    17  
    18  func TestNewMapJson(t *testing.T) {
    19  
    20  	m, merr := NewMapJson(jdata)
    21  	if merr != nil {
    22  		t.Fatal("NewMapJson, merr:", merr.Error())
    23  	}
    24  
    25  	fmt.Println("NewMapJson, jdata:", string(jdata))
    26  	fmt.Printf("NewMapJson, m    : %#v\n", m)
    27  }
    28  
    29  func TestNewMapJsonNumber(t *testing.T) {
    30  
    31  	JsonUseNumber = true
    32  
    33  	m, merr := NewMapJson(jdata)
    34  	if merr != nil {
    35  		t.Fatal("NewMapJson, merr:", merr.Error())
    36  	}
    37  
    38  	fmt.Println("NewMapJson, jdata:", string(jdata))
    39  	fmt.Printf("NewMapJson, m    : %#v\n", m)
    40  
    41  	JsonUseNumber = false
    42  }
    43  
    44  func TestNewMapJsonError(t *testing.T) {
    45  
    46  	m, merr := NewMapJson(jdata[:len(jdata)-2])
    47  	if merr == nil {
    48  		t.Fatal("NewMapJsonError, m:", m)
    49  	}
    50  
    51  	fmt.Println("NewMapJsonError, jdata :", string(jdata[:len(jdata)-2]))
    52  	fmt.Println("NewMapJsonError, merror:", merr.Error())
    53  
    54  	newData := []byte(`{ "this":"is", "in":error }`)
    55  	m, merr = NewMapJson(newData)
    56  	if merr == nil {
    57  		t.Fatal("NewMapJsonError, m:", m)
    58  	}
    59  
    60  	fmt.Println("NewMapJsonError, newData :", string(newData))
    61  	fmt.Println("NewMapJsonError, merror  :", merr.Error())
    62  }
    63  
    64  func TestNewMapJsonReader(t *testing.T) {
    65  
    66  	rdr := bytes.NewBuffer(jdata2)
    67  
    68  	for {
    69  		m, jb, merr := NewMapJsonReaderRaw(rdr)
    70  		if merr != nil && merr != io.EOF {
    71  			t.Fatal("NewMapJsonReader, merr:", merr.Error())
    72  		}
    73  		if merr == io.EOF {
    74  			break
    75  		}
    76  
    77  		fmt.Println("NewMapJsonReader, jb:", string(jb))
    78  		fmt.Printf("NewMapJsonReader, m : %#v\n", m)
    79  	}
    80  }
    81  
    82  func TestNewMapJsonReaderNumber(t *testing.T) {
    83  
    84  	JsonUseNumber = true
    85  
    86  	rdr := bytes.NewBuffer(jdata2)
    87  
    88  	for {
    89  		m, jb, merr := NewMapJsonReaderRaw(rdr)
    90  		if merr != nil && merr != io.EOF {
    91  			t.Fatal("NewMapJsonReader, merr:", merr.Error())
    92  		}
    93  		if merr == io.EOF {
    94  			break
    95  		}
    96  
    97  		fmt.Println("NewMapJsonReader, jb:", string(jb))
    98  		fmt.Printf("NewMapJsonReader, m : %#v\n", m)
    99  	}
   100  
   101  	JsonUseNumber = false
   102  }
   103  
   104  func TestJson(t *testing.T) {
   105  
   106  	m, _ := NewMapJson(jdata)
   107  
   108  	j, jerr := m.Json()
   109  	if jerr != nil {
   110  		t.Fatal("Json, jerr:", jerr.Error())
   111  	}
   112  
   113  	fmt.Println("Json, jdata:", string(jdata))
   114  	fmt.Println("Json, j    :", string(j))
   115  
   116  	j, _ = m.Json(true)
   117  	fmt.Println("Json, j safe:", string(j))
   118  }
   119  
   120  func TestJsonWriter(t *testing.T) {
   121  	mv := Map(map[string]interface{}{"this": "is a", "float": 3.14159, "and": "a", "bool": true})
   122  
   123  	w := new(bytes.Buffer)
   124  	raw, err := mv.JsonWriterRaw(w)
   125  	if err != nil {
   126  		t.Fatal("err:", err.Error())
   127  	}
   128  
   129  	b := make([]byte, w.Len())
   130  	_, err = w.Read(b)
   131  	if err != nil {
   132  		t.Fatal("err:", err.Error())
   133  	}
   134  
   135  	fmt.Println("JsonWriter, raw:", string(raw))
   136  	fmt.Println("JsonWriter, b  :", string(b))
   137  }
   138  

View as plain text