package x2j import ( "fmt" "testing" ) // the basic demo/test case - a small bibliography with mixed element types func TestValuesFromTagPath(t *testing.T) { var doc = ` William H. Gaddis The Recognitions One of the great seminal American novels of the 20th century. Austin Tappan Wright Islandia An example of earlier 20th century American utopian fiction. John Hawkes The Beetle Leg A lyrical novel about the construction of Ft. Peck Dam in Montana. T.E. Porter King's Day A magical novella. ` var doc2 = ` William H. Gaddis The Recognitions One of the great seminal American novels of the 20th century. ` fmt.Println("\nTestValuesFromTagPath()\n",doc) m,_ := DocToMap(doc) fmt.Println("map:",WriteMap(m)) v,_ := ValuesFromTagPath(doc,"doc.books") fmt.Println("path == doc.books: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } v,_ = ValuesFromTagPath(doc,"doc.books.*") fmt.Println("path == doc.books.*: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } v,_ = ValuesFromTagPath(doc,"doc.books.book") fmt.Println("path == doc.books.book: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } v,_ = ValuesFromTagPath(doc2,"doc.books.book") fmt.Println("doc == doc2 / path == doc.books.book: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } v,_ = ValuesFromTagPath(doc,"doc.books.book.*") fmt.Println("path == doc.books.book.*: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } v,_ = ValuesFromTagPath(doc2,"doc.books.book.*") fmt.Println("doc == doc2 / path == doc.books.book.*: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } v,_ = ValuesFromTagPath(doc,"doc.books.*.author") fmt.Println("path == doc.books.*.author: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } v,_ = ValuesFromTagPath(doc,"doc.*.*.author") fmt.Println("path == doc.*.*.author: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } v,_ = ValuesFromTagPath(doc,"doc.*.*.title") fmt.Println("path == doc.*.*.title: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } v,_ = ValuesFromTagPath(doc,"doc.*.*.*") fmt.Println("path == doc.*.*.*: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } v,_ = ValuesFromTagPath(doc,"doc.*.*.*.*") fmt.Println("path == doc.*.*.*.*: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } } // demo how to compensate for irregular tag labels in data // "netid" vs. "idnet" func TestValuesFromTagPath2(t *testing.T) { var doc1 = ` no default:text default:word ` var doc2 = ` yes default:text default:word ` var docs = []string{doc1,doc2} for n,doc := range docs { fmt.Println("\nTestValuesFromTagPath2(), iteration:",n,"\n",doc) m,_ := DocToMap(doc) fmt.Println("map:",WriteMap(m)) v,_ := ValuesFromTagPath(doc,"data.*") fmt.Println("\npath == data.*: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } for key,val := range v[0].(map[string]interface{}) { fmt.Println("\t",key,":",val) } v,_ = ValuesFromTagPath(doc,"data.*.*") fmt.Println("\npath == data.*.*: len(v):",len(v)) for key,val := range v { fmt.Println(key,":",val) } } }