def test_future_etree_element(self): d = Doc('a') f = Future() f.set_result(etree.Element('b')) d.put(f) self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a><b/></a>""")
def test_future_list(self): d = Doc('a') f = Future() f.set_result([etree.Comment('ccc'), etree.Element('bbb')]) d.put(f) self.assertXmlAlmostEqual( d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a><!--ccc--><bbb/></a>""" )
def test_failed_future(self): j = JsonBuilder() f = Future() result = RequestResult() result.set_exception(FailedRequestException(reason='error', code='code')) f.set_result(result) j.put(f) self.assertEqual(j.to_string(), """{"error": {"reason": "error", "code": "code"}}""")
def test_future_simple(self): d = Doc('a') f = Future() d.put(f) self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a/>""") f.set_result('test') self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a>test</a>""")
def test_failed_future(self): d = Doc('a') f = Future() result = RequestResult() result.set_exception(FailedRequestException(reason='error', code='code')) f.set_result(result) d.put(f) self.assertXmlAlmostEqual( d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a><error reason="error" code="code"/></a>""" )
def test_future(self): j = JsonBuilder() f = Future() j.put(f) self.assertFalse(j.is_empty()) self.assertEqual(j.to_string(), """{}""") f.set_result({'a': 'b'}) self.assertEqual(j.to_dict()['a'], 'b') self.assertEqual(j.to_string(), """{"a": "b"}""")
def test_nested_future_error_node(self): j = JsonBuilder() f1 = Future() f2 = Future() f1.set_result({'nested': f2}) j.put(f1) self.assertEqual(j.to_string(), """{"nested": null}""") result = RequestResult() result.set_exception(FailedRequestException(reason='error', code='code')) f2.set_result( {'a': result} ) self.assertEqual( j.to_string(), """{"nested": {"a": {"error": {"reason": "error", "code": "code"}}}}""" )
def test_callbacks(self): result = 'result' f = Future() state = { 'callback1': False, 'callback2': False, 'callback3': False, } def callback1(future): state['callback1'] = True self.assertEqual(future.result(), result) def callback2(future): state['callback2'] = True self.assertEqual(future.result(), result) def callback3(future): state['callback3'] = True self.assertEqual(future.result(), result) f.add_done_callback(callback1) f.add_done_callback(callback2) self.assertFalse(state['callback1']) self.assertFalse(state['callback2']) self.assertFalse(state['callback3']) f.set_result(result) self.assertTrue(state['callback1']) self.assertTrue(state['callback2']) self.assertFalse(state['callback3']) f.add_done_callback(callback3) self.assertTrue(state['callback1']) self.assertTrue(state['callback2']) self.assertTrue(state['callback3'])
def test_callbacks(self): result = 'result' f = Future() state = { 'callback1': False, 'callback2': False, 'callback3': False, } def callback1(future): state['callback1'] = True self.assertEqual(future.result(), result) def callback2(future): state['callback2'] = True self.assertEqual(future.result(), result) def callback3(future): state['callback3'] = True self.assertEqual(future.result(), result) f.add_done_callback(callback1) f.add_done_callback(callback2) self.assertFalse(state['callback1']) self.assertFalse(state['callback2']) self.assertFalse(state['callback3']) f.set_result(result) self.assertTrue(state['callback1']) self.assertTrue(state['callback2']) self.assertFalse(state['callback3']) f.add_done_callback(callback3) self.assertTrue(state['callback1']) self.assertTrue(state['callback2']) self.assertTrue(state['callback3'])
def test_nested_future(self): j = JsonBuilder() f1 = Future() f2 = Future() f3 = Future() f1.set_result({'nested': f2}) j.put(f1) self.assertEqual(j.to_string(), """{"nested": null}""") f2.set_result({'a': f3}) f3.set_result(['b', 'c']) self.assertEqual(j.to_string(), """{"nested": {"a": ["b", "c"]}}""")
def test_single_data_set(self): f = Future() f.set_result('first') self.assertRaises(FutureStateException, f.set_result, 'second')
def test_single_data_set(self): f = Future() f.set_result('first') self.assertRaises(FutureStateException, f.set_result, 'second')