|
1 | 1 | import pytest |
2 | 2 | from src.basic_data_handling.list_nodes import ( |
| 3 | + ListAppend, |
| 4 | + ListContains, |
| 5 | + ListCount, |
3 | 6 | ListCreate, |
4 | 7 | ListCreateFromBoolean, |
5 | 8 | ListCreateFromFloat, |
6 | 9 | ListCreateFromInt, |
7 | 10 | ListCreateFromString, |
8 | | - ListAppend, |
9 | 11 | ListExtend, |
| 12 | + ListFirst, |
| 13 | + ListGetItem, |
| 14 | + ListIndex, |
10 | 15 | ListInsert, |
11 | | - ListRemove, |
| 16 | + ListLast, |
| 17 | + ListLength, |
| 18 | + ListMax, |
| 19 | + ListMin, |
12 | 20 | ListPop, |
13 | | - ListIndex, |
14 | | - ListCount, |
15 | | - ListSort, |
| 21 | + ListPopRandom, |
| 22 | + ListRemove, |
16 | 23 | ListReverse, |
17 | | - ListLength, |
18 | | - ListSlice, |
19 | | - ListGetItem, |
20 | 24 | ListSetItem, |
21 | | - ListContains, |
22 | | - ListMin, |
23 | | - ListMax, |
| 25 | + ListSlice, |
| 26 | + ListSort, |
24 | 27 | ListToDataList, |
25 | | - ListToSet |
| 28 | + ListToSet, |
26 | 29 | ) |
27 | 30 |
|
28 | 31 |
|
@@ -61,6 +64,38 @@ def test_list_pop(): |
61 | 64 | assert node.pop([], 0) == ([], None) # Empty list pop |
62 | 65 |
|
63 | 66 |
|
| 67 | +def test_list_pop_random(): |
| 68 | + node = ListPopRandom() |
| 69 | + # Test with single item - must remove that item |
| 70 | + result, item = node.pop_random_element([42]) |
| 71 | + assert result == [] and item == 42 |
| 72 | + |
| 73 | + # Test with multiple items - can't predict which one will be popped |
| 74 | + # but we can check the result list length and that the popped item was from the original list |
| 75 | + original_list = [1, 2, 3, 4] |
| 76 | + result, item = node.pop_random_element(original_list) |
| 77 | + assert len(result) == len(original_list) - 1 |
| 78 | + assert item in original_list |
| 79 | + assert item not in result |
| 80 | + |
| 81 | + # Test with empty list |
| 82 | + assert node.pop_random_element([]) == ([], None) |
| 83 | + |
| 84 | + |
| 85 | +def test_list_first(): |
| 86 | + node = ListFirst() |
| 87 | + assert node.get_first_element([1, 2, 3]) == (1,) |
| 88 | + assert node.get_first_element(["a", "b", "c"]) == ("a",) |
| 89 | + assert node.get_first_element([]) == (None,) # Empty list |
| 90 | + |
| 91 | + |
| 92 | +def test_list_last(): |
| 93 | + node = ListLast() |
| 94 | + assert node.get_last_element([1, 2, 3]) == (3,) |
| 95 | + assert node.get_last_element(["a", "b", "c"]) == ("c",) |
| 96 | + assert node.get_last_element([]) == (None,) # Empty list |
| 97 | + |
| 98 | + |
64 | 99 | def test_list_index(): |
65 | 100 | node = ListIndex() |
66 | 101 | assert node.index([1, 2, 3, 2], 2) == (1,) |
|
0 commit comments