package x2j import ( "encoding/json" "fmt" "os" "testing" ) func TestX2j(t *testing.T) { fmt.Println("\n================================ x2j_test.go ...") fmt.Println("\n=================== TestX2j ...") fi, fierr := os.Stat("x2j_test.xml") if fierr != nil { fmt.Println("fierr:",fierr.Error()) return } fh, fherr := os.Open("x2j_test.xml") if fherr != nil { fmt.Println("fherr:",fherr.Error()) return } defer fh.Close() buf := make([]byte,fi.Size()) _, nerr := fh.Read(buf) if nerr != nil { fmt.Println("nerr:",nerr.Error()) return } doc := string(buf) fmt.Println("\nXML doc:\n",doc) // test DocToMap() with recast mm, mmerr := DocToMap(doc,true) if mmerr != nil { println("mmerr:",mmerr.Error()) return } println("\nDocToMap(), recast==true:\n",WriteMap(mm)) // test DocToJsonIndent() with recast s,serr := DocToJsonIndent(doc,true) if serr != nil { fmt.Println("serr:",serr.Error()) } fmt.Println("\nDocToJsonIndent, recast==true:\n",s) } func TestGetValue(t *testing.T) { fmt.Println("\n=================== TestGetValue ...") // test MapValue() doc := `barworld` fmt.Println("\nRead doc:",doc) fmt.Println("Looking for value: entry.vars") mm,mmerr := DocToMap(doc) if mmerr != nil { fmt.Println("merr:",mmerr.Error()) } v,verr := MapValue(mm,"entry.vars",nil) if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } fmt.Println("Looking for value: entry.vars.foo2.hello") v,verr = MapValue(mm,"entry.vars.foo2.hello",nil) if verr != nil { fmt.Println("verr:",verr.Error()) } else { fmt.Println(v.(string)) } fmt.Println("Looking with error in path: entry.var") v,verr = MapValue(mm,"entry.var",nil) fmt.Println("verr:",verr.Error()) // test DocValue() fmt.Println("DocValue() for tag path entry.vars") v,verr = DocValue(doc,"entry.vars") if verr != nil { fmt.Println("verr:",verr.Error()) } j,_ := json.MarshalIndent(v,""," ") fmt.Println(string(j)) } func TestGetValueWithAttr(t *testing.T) { fmt.Println("\n=================== TestGetValueWithAttr ...") doc := ` bar world universe ` fmt.Println("\nRead doc:",doc) fmt.Println("Looking for value: entry.vars") mm,mmerr := DocToMap(doc) if mmerr != nil { fmt.Println("merr:",mmerr.Error()) } v,verr := MapValue(mm,"entry.vars",nil) if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } fmt.Println("\nMapValue(): Looking for value: entry.vars.foo item=2") a,aerr := NewAttributeMap("item:2") if aerr != nil { fmt.Println("aerr:",aerr.Error()) } v,verr = MapValue(mm,"entry.vars.foo",a) if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } fmt.Println("\nMapValue(): Looking for hello item:4") a,_ = NewAttributeMap("item:4") v,verr = MapValue(mm,"hello",a) if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } fmt.Println("\nDocValue(): Looking for entry.vars.foo.hello item:4") v,verr = DocValue(doc,"entry.vars.foo.hello","item:4") if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } fmt.Println("\nDocValue(): Looking for empty nil") v,verr = DocValue(doc,"") if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } // test 'recast' switch fmt.Println("\ntesting recast switch...") mm,mmerr = DocToMap(doc,true) if mmerr != nil { fmt.Println("merr:",mmerr.Error()) } fmt.Println("MapValue(): Looking for value: entry.vars.foo item=2") a,aerr = NewAttributeMap("item:2") if aerr != nil { fmt.Println("aerr:",aerr.Error()) } v,verr = MapValue(mm,"entry.vars.foo",a,true) if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } } func TestStuff_1(t *testing.T) { fmt.Println("\n=================== TestStuff_1 ...") doc := ` val2 val2 val3 ` fmt.Println(doc) m,merr := DocToMap(doc) if merr != nil { fmt.Println("merr:",merr.Error()) } else { fmt.Println(WriteMap(m)) } fmt.Println("\nDocValue(): tag") v,verr := DocValue(doc,"doc.tag") if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } fmt.Println("\nDocValue(): item:2 instance:2") v,verr = DocValue(doc,"doc.tag","item:2","instance:2") if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } } func TestStuff_2(t *testing.T) { fmt.Println("\n=================== TestStuff_2 ...") doc := ` val2 val2 val3` fmt.Println(doc) m,merr := DocToMap(doc) if merr != nil { fmt.Println("merr:",merr.Error()) } else { fmt.Println(WriteMap(m)) } fmt.Println("\nDocValue(): tag") v,verr := DocValue(doc,"tag") if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } fmt.Println("\nDocValue(): item:2 instance:2") v,verr = DocValue(doc,"tag","item:2","instance:2") if verr != nil { fmt.Println("verr:",verr.Error()) } else { j, jerr := json.MarshalIndent(v,""," ") if jerr != nil { fmt.Println("jerr:",jerr.Error()) } else { fmt.Println(string(j)) } } } func procMap(m map[string]interface{}) bool { fmt.Println("procMap:",WriteMap(m)) return true } func procMapToJson(m map[string]interface{}) bool { b,_ := json.MarshalIndent(m,""," ") fmt.Println("procMap:",string(b)) return true } func procErr(err error) bool { fmt.Println("procError err:",err.Error()) return true } func TestBulk(t *testing.T) { fmt.Println("\n=================== TestBulkBuffer ...") fmt.Println("\nBulk Message Processing Tests") // if err := XmlMsgsFromFile("x2m_bulk.xml",procMap,procErr); err != nil { if err := XmlMsgsFromFile("x2m_bulk.xml",procMapToJson,procErr); err != nil { fmt.Println("XmlMsgsFromFile err:",err.Error()) } } func TestTagAndKey(t *testing.T) { fmt.Println("\n=================== TestTagAndKey ...") var doc string doc = `
one
two.one two.two
one
two
` fmt.Println("\nTestTagAndKey()\n",doc) v,verr := ValuesForTag(doc,"parts") if verr != nil { fmt.Println("verr:",verr.Error()) } fmt.Println("tag: parts :: len:",len(v),"v:",v) v, _ = ValuesForTag(doc,"not_a_tag") if v == nil { fmt.Println("no 'not_a_tag' tag") } else { fmt.Println("key: not_a_tag :: len:",len(v),"v:",v) } m,merr := DocToMap(doc) if merr != nil { fmt.Println("merr:",merr.Error()) } v = ValuesForKey(m,"section") fmt.Println("key: section :: len:",len(v),"v:",v) v = ValuesForKey(m,"not_a_key") if v == nil { fmt.Println("no 'not_a_key' key") } else { fmt.Println("key: not_a-key :: len:",len(v),"v:",v) } } // ---------------- x2j_fast.go ---------------- /* func Test_F_DocToMap(t *testing.T) { var doc string = `
one
two.one two.two
one
two
` fmt.Println("\nF_DocToMap()") fmt.Println(doc) m,err := F_DocToMap(doc) if err != nil { fmt.Println("err:",err.Error()) } fmt.Println(WriteMap(m),"\n") } */