@@ -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