Coverage for kea/Bundle.py: 84%

44 statements  

« prev     ^ index     » next       coverage.py v7.6.9, created at 2024-12-22 16:05 +0800

1import random 

2import string 

3from typing import Dict 

4 

5from hypothesis import strategies as st 

6 

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 = [] 

15 

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 

23 

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) 

29 

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) 

35 

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) 

47 

48 def get_all_data(self): 

49 return self.data_value 

50 

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 

54 

55 def get_random_data(self): 

56 random_item = random.choice(self.data_value) 

57 return random_item