Skip to content

Commit 2522dc2

Browse files
Extending tests to demonstrate multi-geopoint field
1 parent 47cd3ee commit 2522dc2

File tree

1 file changed

+60
-42
lines changed

1 file changed

+60
-42
lines changed

mapping/mapping_test.go

Lines changed: 60 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1181,62 +1181,80 @@ func TestMappingArrayOfStringGeoPoints(t *testing.T) {
11811181
locFieldMapping := NewGeoPointFieldMapping()
11821182

11831183
thingMapping := NewDocumentMapping()
1184-
thingMapping.AddFieldMappingsAt("name", nameFieldMapping)
11851184
thingMapping.AddFieldMappingsAt("points", locFieldMapping)
11861185

11871186
mapping := NewIndexMapping()
11881187
mapping.DefaultMapping = thingMapping
11891188

1190-
docSrc := map[string]interface{}{
1191-
"name": "hello",
1192-
"points": []string {
1193-
"1.0, 2.0",
1194-
"3.0, 4.0",
1195-
"5.0, 6.0",
1189+
docs := []map[string]interface{}{
1190+
{
1191+
// string: "lat,lon"
1192+
"points": []string{
1193+
"1.0, 2.0",
1194+
"3.0, 4.0",
1195+
"5.0, 6.0",
1196+
},
1197+
},
1198+
{
1199+
// slice: {lon, lat}
1200+
"points": [][]float64{
1201+
{2.0, 1.0},
1202+
{4.0, 3.0},
1203+
{6.0, 5.0},
1204+
},
1205+
},
1206+
{
1207+
// struct: {"lon/lng": .., "lat": ..}
1208+
"points": []map[string]interface{}{
1209+
{"lon": 2.0, "lat": 1.0},
1210+
{"lng": 4.0, "lat": 3.0},
1211+
{"lng": 6.0, "lat": 5.0},
1212+
},
11961213
},
11971214
}
11981215

1199-
doc := document.NewDocument("x")
1200-
err := mapping.MapDocument(doc, docSrc)
1201-
if err != nil {
1202-
t.Fatal(err)
1203-
}
1216+
for _, docSrc := range docs {
1217+
doc := document.NewDocument("x")
1218+
err := mapping.MapDocument(doc, docSrc)
1219+
if err != nil {
1220+
t.Fatal(err)
1221+
}
12041222

1205-
// points here in lon, lat order (consistent with previous test)
1206-
expectPoints := map[string][]float64{
1207-
"first": {2.0, 1.0},
1208-
"second": {4.0, 3.0},
1209-
"third": {6.0, 5.0},
1210-
}
1223+
// points here in lon, lat order
1224+
expectPoints := map[string][]float64{
1225+
"first": {2.0, 1.0},
1226+
"second": {4.0, 3.0},
1227+
"third": {6.0, 5.0},
1228+
}
12111229

1212-
for _, f := range doc.Fields {
1213-
if f.Name() == "points" {
1214-
geoF, ok := f.(*document.GeoPointField)
1215-
if !ok {
1216-
t.Errorf("expected a geopoint field!")
1217-
}
1218-
lon, err := geoF.Lon()
1219-
if err != nil {
1220-
t.Errorf("error in fetching lon, err: %v", err)
1221-
}
1222-
lat, err := geoF.Lat()
1223-
if err != nil {
1224-
t.Errorf("error in fetching lat, err: %v", err)
1225-
}
1226-
// round obtained lon, lat to 2 decimal places
1227-
roundLon, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", lon), 64)
1228-
roundLat, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", lat), 64)
1230+
for _, f := range doc.Fields {
1231+
if f.Name() == "points" {
1232+
geoF, ok := f.(*document.GeoPointField)
1233+
if !ok {
1234+
t.Errorf("expected a geopoint field!")
1235+
}
1236+
lon, err := geoF.Lon()
1237+
if err != nil {
1238+
t.Errorf("error in fetching lon, err: %v", err)
1239+
}
1240+
lat, err := geoF.Lat()
1241+
if err != nil {
1242+
t.Errorf("error in fetching lat, err: %v", err)
1243+
}
1244+
// round obtained lon, lat to 2 decimal places
1245+
roundLon, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", lon), 64)
1246+
roundLat, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", lat), 64)
12291247

1230-
for key, point := range expectPoints {
1231-
if roundLon == point[0] && roundLat == point[1] {
1232-
delete(expectPoints, key)
1248+
for key, point := range expectPoints {
1249+
if roundLon == point[0] && roundLat == point[1] {
1250+
delete(expectPoints, key)
1251+
}
12331252
}
12341253
}
12351254
}
1236-
}
12371255

1238-
if len(expectPoints) > 0 {
1239-
t.Errorf("some points not found: %v", expectPoints)
1256+
if len(expectPoints) > 0 {
1257+
t.Errorf("some points not found: %v", expectPoints)
1258+
}
12401259
}
1241-
12421260
}

0 commit comments

Comments
 (0)