import six import pytest from library.pymemcache.test.utils import MockMemcacheClient @pytest.mark.unit() def test_get_set(): client = MockMemcacheClient() assert client.get(b"hello") is None client.set(b"hello", 12) assert client.get(b"hello") == 12 @pytest.mark.unit() def test_get_set_unicide_key(): client = MockMemcacheClient() assert client.get(u"hello") is None client.set(b"hello", 12) assert client.get(u"hello") == 12 @pytest.mark.unit() def test_get_set_non_ascii_value(): client = MockMemcacheClient() assert client.get(b"hello") is None # This is the value of msgpack.packb('non_ascii') non_ascii_str = b'\xa9non_ascii' client.set(b"hello", non_ascii_str) assert client.get(b"hello") == non_ascii_str @pytest.mark.unit() def test_get_many_set_many(): client = MockMemcacheClient() client.set(b"h", 1) result = client.get_many([b"h", b"e", b"l", b"o"]) assert result == {b"h": 1} # Convert keys into bytes d = dict((k.encode('ascii'), v) for k, v in six.iteritems(dict(h=1, e=2, z=3))) client.set_many(d) assert client.get_many([b"h", b"e", b"z", b"o"]) == d @pytest.mark.unit() def test_get_many_set_many_non_ascii_values(): client = MockMemcacheClient() # These are the values of calling msgpack.packb() on '1', '2', and '3' non_ascii_1 = b'\xa11' non_ascii_2 = b'\xa12' non_ascii_3 = b'\xa13' client.set(b"h", non_ascii_1) result = client.get_many([b"h", b"e", b"l", b"o"]) assert result == {b"h": non_ascii_1} # Convert keys into bytes d = dict((k.encode('ascii'), v) for k, v in six.iteritems( dict(h=non_ascii_1, e=non_ascii_2, z=non_ascii_3) )) client.set_many(d) assert client.get_many([b"h", b"e", b"z", b"o"]) == d @pytest.mark.unit() def test_add(): client = MockMemcacheClient() client.add(b"k", 2) assert client.get(b"k") == 2 client.add(b"k", 25) assert client.get(b"k") == 2 @pytest.mark.unit() def test_delete(): client = MockMemcacheClient() client.add(b"k", 2) assert client.get(b"k") == 2 client.delete(b"k") assert client.get(b"k") is None @pytest.mark.unit() def test_incr_decr(): client = MockMemcacheClient() client.add(b"k", 2) client.incr(b"k", 4) assert client.get(b"k") == 6 client.decr(b"k", 2) assert client.get(b"k") == 4 @pytest.mark.unit() def test_prepand_append(): client = MockMemcacheClient() client.set(b"k", '1') client.append(b"k", 'a') client.prepend(b"k", 'p') assert client.get(b"k") == b'p1a'