You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.8 KiB
66 lines
1.8 KiB
import uuid
|
|
|
|
import pytest
|
|
|
|
from kazoo.testing import KazooTestCase
|
|
|
|
|
|
class KazooCounterTests(KazooTestCase):
|
|
def _makeOne(self, **kw):
|
|
path = "/" + uuid.uuid4().hex
|
|
return self.client.Counter(path, **kw)
|
|
|
|
def test_int_counter(self):
|
|
counter = self._makeOne()
|
|
assert counter.value == 0
|
|
counter += 2
|
|
counter + 1
|
|
assert counter.value == 3
|
|
counter -= 3
|
|
counter - 1
|
|
assert counter.value == -1
|
|
|
|
def test_int_curator_counter(self):
|
|
counter = self._makeOne(support_curator=True)
|
|
assert counter.value == 0
|
|
counter += 2
|
|
counter + 1
|
|
assert counter.value == 3
|
|
counter -= 3
|
|
counter - 1
|
|
assert counter.value == -1
|
|
counter += 1
|
|
counter += 2147483647
|
|
assert counter.value == 2147483647
|
|
counter -= 2147483647
|
|
counter -= 2147483647
|
|
assert counter.value == -2147483647
|
|
|
|
def test_float_counter(self):
|
|
counter = self._makeOne(default=0.0)
|
|
assert counter.value == 0.0
|
|
counter += 2.1
|
|
assert counter.value == 2.1
|
|
counter -= 3.1
|
|
assert counter.value == -1.0
|
|
|
|
def test_errors(self):
|
|
counter = self._makeOne()
|
|
with pytest.raises(TypeError):
|
|
counter.__add__(2.1)
|
|
with pytest.raises(TypeError):
|
|
counter.__add__(b"a")
|
|
with pytest.raises(TypeError):
|
|
counter = self._makeOne(default=0.0, support_curator=True)
|
|
|
|
def test_pre_post_values(self):
|
|
counter = self._makeOne()
|
|
assert counter.value == 0
|
|
assert counter.pre_value is None
|
|
assert counter.post_value is None
|
|
counter += 2
|
|
assert counter.pre_value == 0
|
|
assert counter.post_value == 2
|
|
counter -= 3
|
|
assert counter.pre_value == 2
|
|
assert counter.post_value == -1
|