Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 4 additions & 16 deletions bionetgen/modelapi/blocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,7 @@ def __setitem__(self, key, value) -> None:
self.items[key] = value

def __delitem__(self, key) -> None:
if key in self.items:
self.items.pop(key)
else:
print("Item {} not found".format(key))
self.items.pop(key)

def __iter__(self):
return self.items.keys().__iter__()
Expand Down Expand Up @@ -608,11 +605,7 @@ def __setitem__(self, key, value) -> None:
self.items[key] = value

def __delitem__(self, key) -> None:
try:
return self.items.pop(key)
# TODO: more specific except statements
except:
print("Item {} not found".format(key))
return self.items.pop(key)

def __iter__(self):
return range(len(self.items)).__iter__()
Expand All @@ -625,13 +618,8 @@ def add_action(self, action_type, action_args) -> None:
adds action, needs type as string and args as list of tuples
(which preserve order) of (argument, value) pairs
"""
if action_type in self._action_list:
a = Action(action_type=action_type, action_args=action_args)
self.add_item((action_type, a))
else:
print(
"Action type {} is not recognized as a BNGL action".format(action_type)
)
a = Action(action_type=action_type, action_args=action_args)
self.add_item((action_type, a))

def clear_actions(self) -> None:
self.items.clear()
Expand Down
5 changes: 1 addition & 4 deletions bionetgen/network/blocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,7 @@ def __setitem__(self, key, value) -> None:
self.items[key] = value

def __delitem__(self, key) -> None:
if key in self.items:
self.items.pop(key)
else:
print("Item {} not found".format(key))
self.items.pop(key)

def __iter__(self):
return self.items.keys().__iter__()
Expand Down
39 changes: 39 additions & 0 deletions tests/test_block_error_contracts.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
"""Focused tests for block deletion and invalid-action error contracts."""

import pytest

from bionetgen.core.exc import BNGParseError
from bionetgen.modelapi.blocks import ActionBlock, ModelBlock
from bionetgen.network.blocks import NetworkBlock


def test_model_block_delitem_missing_raises_keyerror():
block = ModelBlock()

with pytest.raises(KeyError, match="missing"):
del block["missing"]


def test_network_block_delitem_missing_raises_keyerror():
block = NetworkBlock()

with pytest.raises(KeyError, match="missing"):
del block["missing"]


def test_action_block_delitem_missing_raises_indexerror():
block = ActionBlock()

with pytest.raises(IndexError):
del block[99]


def test_action_block_add_action_invalid_type_raises_parse_error():
block = ActionBlock()

with pytest.raises(
BNGParseError, match="Action type not_a_real_action not recognized!"
):
block.add_action("not_a_real_action", {})

assert len(block.items) == 0
Loading