@@ -497,6 +497,25 @@ def test_array(self):
497
497
self .assertEqual (name , 'array_value' )
498
498
self .assertTrue (value is values )
499
499
500
+ def test_geo_point (self ):
501
+ from google .type import latlng_pb2
502
+ from gcloud .datastore .helpers import GeoPoint
503
+
504
+ lat = 42.42
505
+ lng = 99.0007
506
+ geo_pt = GeoPoint (latitude = lat , longitude = lng )
507
+ geo_pt_pb = latlng_pb2 .LatLng (latitude = lat , longitude = lng )
508
+ name , value = self ._callFUT (geo_pt )
509
+ self .assertEqual (name , 'geo_point_value' )
510
+ self .assertEqual (value , geo_pt_pb )
511
+
512
+ def test_null (self ):
513
+ from google .protobuf import struct_pb2
514
+
515
+ name , value = self ._callFUT (None )
516
+ self .assertEqual (name , 'null_value' )
517
+ self .assertEqual (value , struct_pb2 .NULL_VALUE )
518
+
500
519
def test_object (self ):
501
520
self .assertRaises (ValueError , self ._callFUT , object ())
502
521
@@ -586,11 +605,34 @@ def test_array(self):
586
605
items = self ._callFUT (pb )
587
606
self .assertEqual (items , ['Foo' , 'Bar' ])
588
607
608
+ def test_geo_point (self ):
609
+ from google .type import latlng_pb2
610
+ from gcloud .datastore ._generated import entity_pb2
611
+ from gcloud .datastore .helpers import GeoPoint
612
+
613
+ lat = - 3.14
614
+ lng = 13.37
615
+ geo_pt_pb = latlng_pb2 .LatLng (latitude = lat , longitude = lng )
616
+ pb = entity_pb2 .Value (geo_point_value = geo_pt_pb )
617
+ result = self ._callFUT (pb )
618
+ self .assertIsInstance (result , GeoPoint )
619
+ self .assertEqual (result .latitude , lat )
620
+ self .assertEqual (result .longitude , lng )
621
+
622
+ def test_null (self ):
623
+ from google .protobuf import struct_pb2
624
+ from gcloud .datastore ._generated import entity_pb2
625
+
626
+ pb = entity_pb2 .Value (null_value = struct_pb2 .NULL_VALUE )
627
+ result = self ._callFUT (pb )
628
+ self .assertIsNone (result )
629
+
589
630
def test_unknown (self ):
590
631
from gcloud .datastore ._generated import entity_pb2
591
632
592
633
pb = entity_pb2 .Value ()
593
- self .assertEqual (self ._callFUT (pb ), None )
634
+ with self .assertRaises (ValueError ):
635
+ self ._callFUT (pb )
594
636
595
637
596
638
class Test_set_protobuf_value (unittest2 .TestCase ):
@@ -627,23 +669,9 @@ def test_key(self):
627
669
self .assertEqual (value , key .to_protobuf ())
628
670
629
671
def test_none (self ):
630
- from gcloud .datastore .entity import Entity
631
-
632
- entity = Entity ()
633
672
pb = self ._makePB ()
634
-
635
- self ._callFUT (pb , False )
636
- self ._callFUT (pb , 3.1415926 )
637
- self ._callFUT (pb , 42 )
638
- self ._callFUT (pb , (1 << 63 ) - 1 )
639
- self ._callFUT (pb , 'str' )
640
- self ._callFUT (pb , b'str' )
641
- self ._callFUT (pb , u'str' )
642
- self ._callFUT (pb , entity )
643
- self ._callFUT (pb , [u'a' , 0 , 3.14 ])
644
-
645
673
self ._callFUT (pb , None )
646
- self .assertEqual (len ( pb .ListFields ()), 0 )
674
+ self .assertEqual (pb .WhichOneof ( 'value_type' ), 'null_value' )
647
675
648
676
def test_bool (self ):
649
677
pb = self ._makePB ()
@@ -733,6 +761,18 @@ def test_array(self):
733
761
self .assertEqual (marshalled [1 ].integer_value , values [1 ])
734
762
self .assertEqual (marshalled [2 ].double_value , values [2 ])
735
763
764
+ def test_geo_point (self ):
765
+ from google .type import latlng_pb2
766
+ from gcloud .datastore .helpers import GeoPoint
767
+
768
+ pb = self ._makePB ()
769
+ lat = 9.11
770
+ lng = 3.337
771
+ geo_pt = GeoPoint (latitude = lat , longitude = lng )
772
+ geo_pt_pb = latlng_pb2 .LatLng (latitude = lat , longitude = lng )
773
+ self ._callFUT (pb , geo_pt )
774
+ self .assertEqual (pb .geo_point_value , geo_pt_pb )
775
+
736
776
737
777
class Test__prepare_key_for_request (unittest2 .TestCase ):
738
778
@@ -894,6 +934,60 @@ def test_array_value_partially_unset(self):
894
934
self ._callFUT (value_pb , is_list = True )
895
935
896
936
937
+ class TestGeoPoint (unittest2 .TestCase ):
938
+
939
+ def _getTargetClass (self ):
940
+ from gcloud .datastore .helpers import GeoPoint
941
+ return GeoPoint
942
+
943
+ def _makeOne (self , * args , ** kwargs ):
944
+ return self ._getTargetClass ()(* args , ** kwargs )
945
+
946
+ def test_constructor (self ):
947
+ lat = 81.2
948
+ lng = 359.9999
949
+ geo_pt = self ._makeOne (lat , lng )
950
+ self .assertEqual (geo_pt .latitude , lat )
951
+ self .assertEqual (geo_pt .longitude , lng )
952
+
953
+ def test_to_protobuf (self ):
954
+ from google .type import latlng_pb2
955
+
956
+ lat = 0.0001
957
+ lng = 20.03
958
+ geo_pt = self ._makeOne (lat , lng )
959
+ result = geo_pt .to_protobuf ()
960
+ geo_pt_pb = latlng_pb2 .LatLng (latitude = lat , longitude = lng )
961
+ self .assertEqual (result , geo_pt_pb )
962
+
963
+ def test___eq__ (self ):
964
+ lat = 0.0001
965
+ lng = 20.03
966
+ geo_pt1 = self ._makeOne (lat , lng )
967
+ geo_pt2 = self ._makeOne (lat , lng )
968
+ self .assertEqual (geo_pt1 , geo_pt2 )
969
+
970
+ def test___eq__type_differ (self ):
971
+ lat = 0.0001
972
+ lng = 20.03
973
+ geo_pt1 = self ._makeOne (lat , lng )
974
+ geo_pt2 = object ()
975
+ self .assertNotEqual (geo_pt1 , geo_pt2 )
976
+
977
+ def test___ne__same_value (self ):
978
+ lat = 0.0001
979
+ lng = 20.03
980
+ geo_pt1 = self ._makeOne (lat , lng )
981
+ geo_pt2 = self ._makeOne (lat , lng )
982
+ comparison_val = (geo_pt1 != geo_pt2 )
983
+ self .assertFalse (comparison_val )
984
+
985
+ def test___ne__ (self ):
986
+ geo_pt1 = self ._makeOne (0.0 , 1.0 )
987
+ geo_pt2 = self ._makeOne (2.0 , 3.0 )
988
+ self .assertNotEqual (geo_pt1 , geo_pt2 )
989
+
990
+
897
991
class _Connection (object ):
898
992
899
993
_called_project = _called_key_pbs = _lookup_result = None
0 commit comments