Refactored cpl-query Iterable & Enumerable #129

This commit is contained in:
2022-12-01 21:09:39 +01:00
parent e8ae635c88
commit f0f79e7e3b
19 changed files with 390 additions and 916 deletions

View File

@@ -6,4 +6,4 @@ if not os.getcwd().endswith('unittests'):
PLAYGROUND_PATH = os.path.abspath(os.path.join(os.getcwd(), f'{base}test_cli_playground'))
TRANSLATION_PATH = os.path.abspath(os.path.join(os.getcwd(), f'{base}unittests_translation'))
CLI_PATH = os.path.abspath(os.path.join(os.getcwd(), f'{base}../src/cpl_cli/main.py'))
CLI_PATH = os.path.abspath(os.path.join(os.getcwd(), f'../../src/cpl_cli/main.py'))

View File

@@ -11,7 +11,16 @@ from unittests_query.models import User, Address
class EnumerableQueryTestCase(unittest.TestCase):
def setUp(self) -> None:
self._tests = Enumerable(User)
users = []
for i in range(0, 100):
users.append(User(
String.random_string(string.ascii_letters, 8).lower(),
Address(
String.random_string(string.ascii_letters, 10).lower(),
randint(1, 10)
)
))
self._t_user = User(
'Test user',
Address(
@@ -27,22 +36,10 @@ class EnumerableQueryTestCase(unittest.TestCase):
)
)
self._generate_test_data()
users.append(self._t_user)
users.append(self._t_user2)
def _generate_test_data(self):
for i in range(0, 100):
user = User(
String.random_string(string.ascii_letters, 8).lower(),
Address(
String.random_string(string.ascii_letters, 10).lower(),
randint(1, 10)
)
)
self._tests.add(user)
self._tests.add(self._t_user)
self._tests.add(self._t_user2)
self._tests = Enumerable(User, users)
def test_any(self):
results = []

View File

@@ -6,17 +6,9 @@ from cpl_query.enumerable.enumerable import Enumerable
class EnumerableTestCase(unittest.TestCase):
def setUp(self) -> None:
self._list = Enumerable(int)
def _clear(self):
self._list.clear()
self.assertEqual(self._list, [])
self._list = Enumerable(int, list(range(1, 4)))
def test_append(self):
self._list.add(1)
self._list.add(2)
self._list.add(3)
self.assertEqual(self._list.to_list(), [1, 2, 3])
self.assertRaises(Exception, lambda v: self._list.add(v), '3')
@@ -38,30 +30,7 @@ class EnumerableTestCase(unittest.TestCase):
n += 1
def test_get(self):
self._list.add(1)
self._list.add(2)
self._list.add(3)
self.assertEqual(self._list.element_at(2), [1, 2, 3][2])
def test_count(self):
self._list.add(1)
self._list.add(2)
self._list.add(3)
self.assertEqual(self._list.count(), 3)
def test_remove(self):
old_values = self._list._values
self._list.add(1)
self.assertNotEqual(old_values, self._list._values)
self._list.add(2)
self._list.add(3)
self.assertEqual(self._list.to_list(), [1, 2, 3])
self.assertRaises(Exception, lambda v: self._list.add(v), '3')
old_values = self._list._values
self._list.remove(3)
self.assertNotEqual(old_values, self._list._values)
self.assertEqual(self._list.to_list(), [1, 2])
self.assertRaises(Exception, lambda v: self._list.add(v), '3')

View File

@@ -113,7 +113,7 @@ class IterableQueryTestCase(unittest.TestCase):
addresses.append(u.address.nr)
res2 = self._tests.distinct(lambda x: x.address.nr).select(lambda x: x.address.nr)
res2 = self._tests.distinct(lambda x: x.address.nr).select(lambda x: x.address.nr).to_list()
self.assertEqual(addresses, res2)
def test_element_at(self):
@@ -199,7 +199,7 @@ class IterableQueryTestCase(unittest.TestCase):
groups[v].append(v)
elements.append(v)
r1, r2 = list(groups.values()), elements.group_by()
r1, r2 = list(groups.values()), elements.group_by().select(lambda l: l.to_list()).to_list()
self.assertEqual(r1, r2)
def test_for_each(self):

View File

@@ -4,9 +4,15 @@ class User:
self.name = name
self.address = address
def __repr__(self):
return f'<{type(self).__name__} {self.name} {self.address}>'
class Address:
def __init__(self, street, nr):
self.street = street
self.nr = nr
self.nr = nr
def __repr__(self):
return f'<{type(self).__name__} {self.street} {self.nr}>'