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)
}
}
}