1// Copyright 2012-present Oliver Eilhard. All rights reserved. 2// Use of this source code is governed by a MIT-license. 3// See http://olivere.mit-license.org/license.txt for details. 4 5package elastic 6 7import ( 8 "encoding/json" 9 "testing" 10) 11 12func TestGeoPolygonQuery(t *testing.T) { 13 q := NewGeoPolygonQuery("person.location") 14 q = q.AddPoint(40, -70) 15 q = q.AddPoint(30, -80) 16 point, err := GeoPointFromString("20,-90") 17 if err != nil { 18 t.Fatalf("GeoPointFromString failed: %v", err) 19 } 20 q = q.AddGeoPoint(point) 21 src, err := q.Source() 22 if err != nil { 23 t.Fatal(err) 24 } 25 data, err := json.Marshal(src) 26 if err != nil { 27 t.Fatalf("marshaling to JSON failed: %v", err) 28 } 29 got := string(data) 30 expected := `{"geo_polygon":{"person.location":{"points":[{"lat":40,"lon":-70},{"lat":30,"lon":-80},{"lat":20,"lon":-90}]}}}` 31 if got != expected { 32 t.Errorf("expected\n%s\n,got:\n%s", expected, got) 33 } 34} 35 36func TestGeoPolygonQueryFromGeoPoints(t *testing.T) { 37 q := NewGeoPolygonQuery("person.location") 38 q = q.AddGeoPoint(&GeoPoint{Lat: 40, Lon: -70}) 39 q = q.AddGeoPoint(GeoPointFromLatLon(30, -80)) 40 point, err := GeoPointFromString("20,-90") 41 if err != nil { 42 t.Fatalf("GeoPointFromString failed: %v", err) 43 } 44 q = q.AddGeoPoint(point) 45 src, err := q.Source() 46 if err != nil { 47 t.Fatal(err) 48 } 49 data, err := json.Marshal(src) 50 if err != nil { 51 t.Fatalf("marshaling to JSON failed: %v", err) 52 } 53 got := string(data) 54 expected := `{"geo_polygon":{"person.location":{"points":[{"lat":40,"lon":-70},{"lat":30,"lon":-80},{"lat":20,"lon":-90}]}}}` 55 if got != expected { 56 t.Errorf("expected\n%s\n,got:\n%s", expected, got) 57 } 58} 59