| 
					
				 | 
			
			
				@@ -0,0 +1,247 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package glom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"fmt" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"strings" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"testing" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestGlomArray(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var data []interface{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data = append(data, "Goose") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1 := make(map[string]interface{}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1a := make(map[string]interface{}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1a["name"] = "Ducky" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1a["age"] = 62 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1a["race"] = "Duck" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1b := make(map[string]interface{}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1b["name"] = "Sir Meow" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1b["age"] = 12 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1b["race"] = "Cat" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var animals []interface{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	animals = append(animals, test1a) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	animals = append(animals, test1b) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1["animals"] = animals 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data = append(data, test1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		HJSON Representation of data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		data = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"Goose" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				"animals": [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					{"name": "Ducky", "age": 62, "race": "Duck"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					{"name": "Sir Meow", "age": 12, "race": "Cat"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test, err := Glom(data, "1.animals.1.name") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Unexpected Error: \"%v\"", err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else if test != "Sir Meow" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Failed getting 'Sir Meow' got \"%v\"", test) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestGetPossible(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var data []string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data = append(data, "One") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data = append(data, "Two") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data = append(data, "Three") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data = append(data, "Four") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	result := getPossible(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if len(result) != len(data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Expected even size, %d != %d", len(result), len(data)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestStruct(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	type Animal struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Name     string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Lifespan int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cat := Animal{"Cat", 12} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	dog := Animal{"Dog", 13} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var data []Animal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data = append(data, cat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data = append(data, dog) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test, err := Glom(data, "1.*") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("TestStruct 1/3: Unexpected Error: \"%v\"", err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if fmt.Sprintf("%v", test) != fmt.Sprintf("%v", dog) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			t.Errorf("TestStruct 1/3: Failed getting '%v' got '%v'", dog, test) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test2, err2 := Glom(cat, "Lifespan") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err2 != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("TestStruct 2/3: Unexpected Error: \"%v\"", err2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if test2 != cat.Lifespan { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			t.Errorf("TestStruct 2/3: Failed getting '%v' got '%v'", cat.Lifespan, test2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data2 := make(map[string]Animal) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data2["Squirrel"] = Animal{"Squirrel", 999} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data2["Hamster"] = Animal{"Hamster", 4} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test3, err3 := Glom(data2, "Squirrel.Name") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err3 != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("TestStruct 3/3: Unexpected Error: \"%v\"", err3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if test3 != "Squirrel" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			t.Errorf("TestStruct 3/3: Failed getting 'Squirrel' got '%v'", test3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestListPossible(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var list []string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list = append(list, "One") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list = append(list, "Two") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	list = append(list, "Three") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	result := list_possible(list) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if strings.Join(result, ", ") != "'One', 'Two', 'Three'" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Failed getting \"%s\" got \"%v\"", "'One', 'Two', 'Three'", strings.Join(result, ", ")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestFail(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data := make(map[string]interface{}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data["Duck"] = "Quack" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data["Cheese"] = 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data["Mouse"] = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test, err := Glom(data, "Moose") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Expected Error, got '%v'", test) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestMapToInter(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m := make(map[string]string) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m["Duck"] = "Quack" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m["Cheese"] = "Yes Please!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m["Mouse"] = "true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var s []string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s = append(s, "Duck") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s = append(s, "Cheese") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s = append(s, "Mouse") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var m2 map[string]int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err1 := mapToInterface(m) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err1 != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Unexpected Error given map: %v", err1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test2, err2 := mapToInterface(s) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err2 == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Expected Error given slice, got '%v'", test2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test3, err3 := mapToInterface(m2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err3 == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Expected Error given invalid/empty map, got '%v'", test3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestSliceToInter(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m := make(map[string]string) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m["Duck"] = "Quack" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m["Cheese"] = "Yes Please!" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m["Mouse"] = "true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var s []string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s = append(s, "Duck") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s = append(s, "Cheese") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	s = append(s, "Mouse") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var m2 map[string]int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var s2 []int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1, err1 := sliceToInterface(m) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err1 == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Expected Error given map, got '%v'", test1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err2 := sliceToInterface(s) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err2 != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Unexpected Error given slice: %v", err2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test3, err3 := sliceToInterface(m2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err3 == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Expected Error given invalid/empty map, got '%v'", test3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test4, err4 := sliceToInterface(s2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err4 == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Expected Error given invalid/empty slice, got '%v'", test4) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestEdgeCasesMapNextLvl(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// This doesn't work, I thought it would but it does not 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var m map[string]int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m2 := make(map[string]int) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m2["Cheese"] = 6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m2["C"] = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m2["h"] = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m2["e"] = 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m2["s"] = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test1, err1 := next_level(m, "failwhale") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err1 == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Expected Error given invalid/empty map, got '%v'", test1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	test2, err2 := next_level(m2, "n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err2 == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Expected Error given map but invalid key, got '%v'", test2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestEdgeCasesGlom(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// This is just a generic test, nothing fancy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data := make(map[string]interface{}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl2 := make(map[string]interface{}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl2["Duck"] = "Quack" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl2["Cheese"] = 6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl2["Mouse"] = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data["part1"] = lvl2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var lvl1 []interface{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl1 = append(lvl1, "Pig") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl1 = append(lvl1, "Chicken") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl1 = append(lvl1, "Cow") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl1 = append(lvl1, "Dog") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl1 = append(lvl1, "Cat") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl1 = append(lvl1, "Horse") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl1 = append(lvl1, true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lvl1 = append(lvl1, 42) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	data["part2"] = lvl1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err1 := Glom(data, "part1.Mouse") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err1 != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Unexpected Error (part1.Mouse = true): %v", err1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err2 := Glom(data, "part2.3") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err2 != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Errorf("Unexpected Error (part2.3 = 'Dog'): %v", err2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |