def test_binary_set(self): """ Store and retrieve a binary set """ self.make_table() item = { 'id': 'a', 'datas': set([Binary('a'), Binary('b')]), } self.dynamo.put_item('foobar', item) ret = list(self.dynamo.scan('foobar'))[0] self.assertEqual(ret, item)
def test_binary_set(self): """Store and retrieve a binary set""" self.make_table() item = { "id": "a", "datas": set([Binary("a"), Binary("b")]), } self.dynamo.put_item("foobar", item) ret = list(self.dynamo.scan("foobar"))[0] self.assertEqual(ret, item)
def resolve(val): """ Convert a pyparsing value to the python type """ name = val.getName() if name == 'number': try: return int(val.number) except ValueError: return Decimal(val.number) elif name == 'str': return unwrap(val.str) elif name == 'null': return None elif name == 'binary': return Binary(val.binary[2:-1]) elif name == 'set': if val.set == '()': return set() return set([resolve(v) for v in val.set]) elif name == 'bool': return val.bool == 'TRUE' elif name == 'list': return [resolve(v) for v in val.list] elif name == 'dict': dict_val = {} for k, v in val.dict: dict_val[resolve(k)] = resolve(v) return dict_val elif name == 'ts_function': return dt_to_ts(eval_function(val.ts_function)) elif name == 'ts_expression': return dt_to_ts(eval_expression(val)) else: raise SyntaxError("Unable to resolve value '%s'" % val)
def resolve(val): """ Convert a pyparsing value to the python type """ name = val.getName() if name == "number": try: return int(val.number) except ValueError: return Decimal(val.number) elif name == "str": return unwrap(val.str) elif name == "null": return None elif name == "binary": return Binary(val.binary[2:-1]) elif name == "set": if val.set == "()": return set() return set([resolve(v) for v in val.set]) elif name == "bool": return val.bool == "TRUE" elif name == "list": return [resolve(v) for v in val.list] elif name == "dict": dict_val = {} for k, v in val.dict: dict_val[resolve(k)] = resolve(v) return dict_val elif name == "ts_function": return dt_to_ts(eval_function(val.ts_function)) elif name == "ts_expression": return dt_to_ts(eval_expression(val)) else: raise SyntaxError("Unable to resolve value '%s'" % val)
def test_binary_bytes(self): """Store and retrieve bytes as a binary""" self.make_table() data = {"a": 1, "b": 2} self.dynamo.put_item("foobar", {"id": "a", "data": Binary(dumps(data))}) item = list(self.dynamo.scan("foobar"))[0] self.assertEqual(loads(item["data"].value), data)
def test_binary_bytes(self): """ Store and retrieve bytes as a binary """ self.make_table() data = {'a': 1, 'b': 2} self.dynamo.put_item('foobar', {'id': 'a', 'data': Binary(dumps(data))}) item = list(self.dynamo.scan('foobar'))[0] self.assertEqual(loads(item['data'].value), data)
def test_binary_force_string(self): """ Binary must wrap a string type """ with self.assertRaises(TypeError): Binary(2)
def test_binary_converts_unicode(self): """ Binary will convert unicode to bytes """ b = Binary('a') self.assertTrue(isinstance(b.value, six.binary_type))
def test_binary_repr(self): """ Binary repr should wrap the contained value """ self.assertEqual(repr(Binary('a')), 'Binary(%s)' % b'a')
def test_binary_equal(self): """ Binary should eq other Binaries and also raw bytestrings """ self.assertEqual(Binary('a'), Binary('a')) self.assertEqual(Binary('a'), b'a') self.assertFalse(Binary('a') != Binary('a'))
def test_binary(self): """ Store and retrieve a binary """ self.make_table() self.dynamo.put_item('foobar', {'id': 'a', 'data': Binary('abc')}) item = list(self.dynamo.scan('foobar'))[0] self.assertEqual(item['data'].value, b'abc')
def test_insert_binary(self): """ INSERT can insert binary values """ self.query("CREATE TABLE foobar (id BINARY HASH KEY)") self.query("INSERT INTO foobar (id) VALUES (b'a')") items = list(self.dynamo.scan('foobar')) self.assertEqual(items, [{'id': Binary(b'a')}])
def ddb_dump(self, value): return Binary(value)
def test_binary_converts_unicode(self): """Binary will convert unicode to bytes""" b = Binary("a") self.assertTrue(isinstance(b.value, bytes))
def test_binary_repr(self): """Binary repr should wrap the contained value""" self.assertEqual(repr(Binary("a")), "Binary(%r)" % b"a")
def test_binary(self): """Store and retrieve a binary""" self.make_table() self.dynamo.put_item("foobar", {"id": "a", "data": Binary("abc")}) item = list(self.dynamo.scan("foobar"))[0] self.assertEqual(item["data"].value, b"abc")