@@ -98,19 +98,31 @@ def test_ctor(self):
9898 (["d" , "c" , "b" , "a" ], "b" , ["d" , "c" ]),
9999 ],
100100 )
101- def test_revise_request_rowset_keys (self , in_keys , last_key , expected ):
101+ @pytest .mark .parametrize ("with_range" , [True , False ])
102+ def test_revise_request_rowset_keys_with_range (
103+ self , in_keys , last_key , expected , with_range
104+ ):
102105 from google .cloud .bigtable_v2 .types import RowSet as RowSetPB
103106 from google .cloud .bigtable_v2 .types import RowRange as RowRangePB
107+ from google .cloud .bigtable .data .exceptions import _RowSetComplete
104108
105109 in_keys = [key .encode ("utf-8" ) for key in in_keys ]
106110 expected = [key .encode ("utf-8" ) for key in expected ]
107111 last_key = last_key .encode ("utf-8" )
108112
109- sample_range = RowRangePB (start_key_open = last_key )
110- row_set = RowSetPB (row_keys = in_keys , row_ranges = [sample_range ])
111- revised = self ._get_target_class ()._revise_request_rowset (row_set , last_key )
112- assert revised .row_keys == expected
113- assert revised .row_ranges == [sample_range ]
113+ if with_range :
114+ sample_range = [RowRangePB (start_key_open = last_key )]
115+ else :
116+ sample_range = []
117+ row_set = RowSetPB (row_keys = in_keys , row_ranges = sample_range )
118+ if not with_range and expected == []:
119+ # expect exception if we are revising to an empty rowset
120+ with pytest .raises (_RowSetComplete ):
121+ self ._get_target_class ()._revise_request_rowset (row_set , last_key )
122+ else :
123+ revised = self ._get_target_class ()._revise_request_rowset (row_set , last_key )
124+ assert revised .row_keys == expected
125+ assert revised .row_ranges == sample_range
114126
115127 @pytest .mark .parametrize (
116128 "in_ranges,last_key,expected" ,
@@ -157,9 +169,13 @@ def test_revise_request_rowset_keys(self, in_keys, last_key, expected):
157169 ),
158170 ],
159171 )
160- def test_revise_request_rowset_ranges (self , in_ranges , last_key , expected ):
172+ @pytest .mark .parametrize ("with_key" , [True , False ])
173+ def test_revise_request_rowset_ranges (
174+ self , in_ranges , last_key , expected , with_key
175+ ):
161176 from google .cloud .bigtable_v2 .types import RowSet as RowSetPB
162177 from google .cloud .bigtable_v2 .types import RowRange as RowRangePB
178+ from google .cloud .bigtable .data .exceptions import _RowSetComplete
163179
164180 # convert to protobuf
165181 next_key = (last_key + "a" ).encode ("utf-8" )
@@ -172,10 +188,20 @@ def test_revise_request_rowset_ranges(self, in_ranges, last_key, expected):
172188 RowRangePB (** {k : v .encode ("utf-8" ) for k , v in r .items ()}) for r in expected
173189 ]
174190
175- row_set = RowSetPB (row_ranges = in_ranges , row_keys = [next_key ])
176- revised = self ._get_target_class ()._revise_request_rowset (row_set , last_key )
177- assert revised .row_keys == [next_key ]
178- assert revised .row_ranges == expected
191+ if with_key :
192+ row_keys = [next_key ]
193+ else :
194+ row_keys = []
195+
196+ row_set = RowSetPB (row_ranges = in_ranges , row_keys = row_keys )
197+ if not with_key and expected == []:
198+ # expect exception if we are revising to an empty rowset
199+ with pytest .raises (_RowSetComplete ):
200+ self ._get_target_class ()._revise_request_rowset (row_set , last_key )
201+ else :
202+ revised = self ._get_target_class ()._revise_request_rowset (row_set , last_key )
203+ assert revised .row_keys == row_keys
204+ assert revised .row_ranges == expected
179205
180206 @pytest .mark .parametrize ("last_key" , ["a" , "b" , "c" ])
181207 def test_revise_request_full_table (self , last_key ):
0 commit comments