@@ -270,3 +270,77 @@ def test_enitity_trigger_converter_encode(self):
270270
271271 self .assertEqual (result .type , "json" )
272272 self .assertEqual (result .python_value , {'dummy_key' : 'dummy_value' })
273+
274+ def test_durable_client_converter_has_trigger_support (self ):
275+ self .assertFalse (DurableClientConverter .has_trigger_support ())
276+
277+ def test_durable_client_converter_check_input_type_annotation (self ):
278+ self .assertTrue (DurableClientConverter .check_input_type_annotation (str ))
279+ self .assertTrue (DurableClientConverter .check_input_type_annotation (bytes ))
280+ self .assertFalse (DurableClientConverter .check_input_type_annotation (int ))
281+
282+ def test_durable_client_converter_check_output_type_annotation (self ):
283+ self .assertTrue (DurableClientConverter .check_output_type_annotation (str ))
284+ self .assertTrue (DurableClientConverter .check_output_type_annotation (bytes ))
285+ self .assertTrue (DurableClientConverter .check_output_type_annotation (bytearray ))
286+ self .assertFalse (DurableClientConverter .check_output_type_annotation (int ))
287+
288+ def test_durable_client_converter_encode (self ):
289+ datum = DurableClientConverter .encode (obj = "hello" , expected_type = str )
290+ self .assertEqual (datum .type , "string" )
291+ self .assertEqual (datum .value , "hello" )
292+
293+ datum = DurableClientConverter .encode (obj = b"data" , expected_type = bytes )
294+ self .assertEqual (datum .type , "bytes" )
295+ self .assertEqual (datum .value , b"data" )
296+
297+ datum = DurableClientConverter .encode (obj = None , expected_type = None )
298+ self .assertIsNone (datum .type )
299+ self .assertIsNone (datum .value )
300+
301+ datum = DurableClientConverter .encode (obj = {"a" : 1 }, expected_type = dict )
302+ self .assertEqual (datum .type , "dict" )
303+ self .assertEqual (datum .value , {"a" : 1 })
304+
305+ datum = DurableClientConverter .encode (obj = [1 , 2 ], expected_type = list )
306+ self .assertEqual (datum .type , "list" )
307+ self .assertEqual (datum .value , [1 , 2 ])
308+
309+ datum = DurableClientConverter .encode (obj = 42 , expected_type = int )
310+ self .assertEqual (datum .type , "int" )
311+ self .assertEqual (datum .value , 42 )
312+
313+ datum = DurableClientConverter .encode (obj = 3.14 , expected_type = float )
314+ self .assertEqual (datum .type , "double" )
315+ self .assertEqual (datum .value , 3.14 )
316+
317+ datum = DurableClientConverter .encode (obj = True , expected_type = bool )
318+ self .assertEqual (datum .type , "bool" )
319+ self .assertTrue (datum .value )
320+
321+ with self .assertRaises (NotImplementedError ):
322+ DurableClientConverter .encode (obj = set ([1 , 2 ]), expected_type = set )
323+
324+ def test_durable_client_converter_decode (self ):
325+ data = Datum (type = "string" , value = "abc" )
326+ result = DurableClientConverter .decode (data = data , trigger_metadata = None )
327+ self .assertEqual (result , "abc" )
328+
329+ data = Datum (type = "bytes" , value = b"123" )
330+ result = DurableClientConverter .decode (data = data , trigger_metadata = None )
331+ self .assertEqual (result , b"123" )
332+
333+ data = Datum (type = "json" , value = {"key" : "val" })
334+ result = DurableClientConverter .decode (data = data , trigger_metadata = None )
335+ self .assertEqual (result , {"key" : "val" })
336+
337+ data = Datum (type = None , value = None )
338+ result = DurableClientConverter .decode (data = data , trigger_metadata = None )
339+ self .assertIsNone (result )
340+
341+ result = DurableClientConverter .decode (data = None , trigger_metadata = None )
342+ self .assertIsNone (result )
343+
344+ data = Datum (type = "weird" , value = "???" )
345+ with self .assertRaises (ValueError ):
346+ DurableClientConverter .decode (data = data , trigger_metadata = None )
0 commit comments