Coverage for kea/Bundle.py: 84%
44 statements
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-22 16:05 +0800
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-22 16:05 +0800
1import random
2import string
3from typing import Dict
5from hypothesis import strategies as st
7class Bundle():
8 _bundles_: Dict[str, "Bundle"] = {}
9 def __init__(self, data_name: str = None) -> None:
10 """
11 Initialize a Bundle.
12 """
13 self.data_name = data_name
14 self.data_value = []
16 def __new__(cls, data_name: str = None):
17 if data_name in cls._bundles_:
18 return cls._bundles_[data_name]
19 else:
20 instance = super().__new__(cls)
21 cls._bundles_[data_name] = instance
22 return instance
24 def add(self, value = None):
25 if value is None:
26 raise ValueError("the value of " + self.data_name + " cannot be None")
27 self.data_value.append(value)
28 print(self.data_name, self.data_value)
30 def delete(self, value = None):
31 if value is None:
32 raise ValueError("the value of " + self.data_name + " cannot be None")
33 self.data_value.remove(value)
34 print(self.data_name, self.data_value)
36 def update(self, value = None, new_value = None):
37 if new_value is None:
38 raise ValueError("the new name of " + self.data_name + " cannot be None")
39 if value is None:
40 raise ValueError("the old name of " + self.data_name + " cannot be None")
41 try:
42 self.data_value.remove(value)
43 self.data_value.append(new_value)
44 except KeyError:
45 print(f"'{value}' is not a object of Bundle.")
46 print(self.data_name, self.data_value)
48 def get_all_data(self):
49 return self.data_value
51 def get_random_text(self, value_max_len = 10):
52 text = st.text(alphabet=string.ascii_letters, min_size=1, max_size=value_max_len).example()
53 return text
55 def get_random_data(self):
56 random_item = random.choice(self.data_value)
57 return random_item