def test_encode(self): """Check encoding produces the correct output.""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) out = pdu.encode() assert out == a_associate_rq
def test_string_output(self): """Check the string output works""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) assert "Verification SOP Class" in pdu.__str__() assert "Implicit VR Little Endian" in pdu.__str__() assert "3680043.9.3811.0.9.0" in pdu.__str__()
def test_to_primitive(self): """Check converting PDU to primitive""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) pr = pdu.to_primitive() assert pr.application_context_name == UID('1.2.840.10008.3.1.1.1') assert pr.calling_ae_title == b'ECHOSCU ' assert pr.called_ae_title == b'ANY-SCP ' # Test User Information for item in pr.user_information: # Maximum PDU Length (required) if isinstance(item, MaximumLengthNegotiation): assert item.maximum_length_received == 16382 assert isinstance(item.maximum_length_received, int) # Implementation Class UID (required) elif isinstance(item, ImplementationClassUIDNotification): assert item.implementation_class_uid == UID( '1.2.826.0.1.3680043.9.3811.0.9.0') assert isinstance(item.implementation_class_uid, UID) # Implementation Version Name (optional) elif isinstance(item, ImplementationVersionNameNotification): assert item.implementation_version_name == b'PYNETDICOM_090' assert isinstance(item.implementation_version_name, bytes) # Test Presentation Contexts for context in pr.presentation_context_definition_list: assert context.context_id == 1 assert context.abstract_syntax == UID('1.2.840.10008.1.1') for syntax in context.transfer_syntax: assert syntax == UID('1.2.840.10008.1.2') assert isinstance(pr.application_context_name, UID) assert isinstance(pr.calling_ae_title, bytes) assert isinstance(pr.called_ae_title, bytes) assert isinstance(pr.user_information, list) assert isinstance(pr.presentation_context_definition_list, list) # Not used by A-ASSOCIATE-RQ or fixed value assert pr.mode == "normal" assert pr.responding_ae_title == pr.called_ae_title assert pr.result is None assert pr.result_source is None assert pr.diagnostic is None assert pr.calling_presentation_address is None assert pr.called_presentation_address is None assert pr.responding_presentation_address == ( pr.called_presentation_address) assert pr.presentation_context_definition_results_list == [] assert pr.presentation_requirements == "Presentation Kernel" assert pr.session_requirements == ""
def test_from_primitive(self): """Check converting primitive to PDU.""" orig_pdu = A_ASSOCIATE_RQ() orig_pdu.decode(a_associate_rq) primitive = orig_pdu.to_primitive() new_pdu = A_ASSOCIATE_RQ() new_pdu.from_primitive(primitive) assert new_pdu == orig_pdu assert new_pdu.encode() == a_associate_rq
def test_inequality(self): """Test the inequality operator""" aa = A_ASSOCIATE_RQ() bb = A_ASSOCIATE_RQ() assert not aa != bb assert aa != 'TEST' aa.decode(a_associate_rq) assert aa != bb assert not aa != aa
def test_decode(self): """Check decoding assoc_rq produces the correct application context.""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) app_context = pdu.variable_items[0] assert app_context.item_type == 0x10 assert app_context.item_length == 21 assert len(app_context) == 25 assert app_context.application_context_name == '1.2.840.10008.3.1.1.1' assert isinstance(app_context.application_context_name, UID)
def test_decode(self): """Check decoding assoc_rq produces the correct presentation context.""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) # Check PresentationContextItemRQ attributes context = pdu.variable_items[1] assert context.item_type == 0x20 assert context.item_length == 46 assert len(context) == 50 assert context.presentation_context_id == 0x001 assert len(context.abstract_transfer_syntax_sub_items) == 2
def test_decode(self): """Check decoding assoc_rq produces the correct abstract syntax.""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) context = pdu.presentation_context[0] abstract_syntax = context.abstract_transfer_syntax_sub_items[0] assert abstract_syntax.item_type == 0x30 assert abstract_syntax.item_length == 17 assert len(abstract_syntax) == 21 assert abstract_syntax.abstract_syntax_name == UID('1.2.840.10008.1.1') assert isinstance(abstract_syntax.abstract_syntax_name, UID)
def test_decode_properties(self): """Check decoding produces the correct property values.""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_ac) user_info = pdu.variable_items[2] assert user_info.async_ops_window is None assert user_info.common_ext_neg == [] assert user_info.ext_neg == [] assert user_info.implementation_class_uid == ( '1.2.276.0.7230010.3.0.3.6.0') assert user_info.implementation_version_name == b'OFFIS_DCMTK_360' assert user_info.maximum_length == 16384 assert user_info.role_selection == {} assert user_info.user_identity is None
def test_decode_properties(self): """Check decoding produces the correct property values.""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) user_info = pdu.variable_items[2] assert user_info.async_ops_window is None assert user_info.common_ext_neg == [] assert user_info.ext_neg == [] assert user_info.implementation_class_uid == ( '1.2.826.0.1.3680043.9.3811.0.9.0') assert user_info.implementation_version_name == b'PYNETDICOM_090' assert user_info.maximum_length == 16382 assert user_info.role_selection == {} assert user_info.user_identity is None
def test_equality(self): """Test the equality operator""" aa = A_ASSOCIATE_RQ() bb = A_ASSOCIATE_RQ() assert aa == bb assert not aa == 'TEST' aa.decode(a_associate_rq) assert not aa == bb bb.decode(a_associate_rq) assert aa == bb aa.calling_ae_title = b'TEST_AE_TITLE_00' assert not aa == bb assert aa == aa
def test_decode(self): """ Check decoding an assoc_rq produces the correct transfer syntax """ pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) context = pdu.presentation_context[0] transfer_syntaxes = context.transfer_syntax # Check TransferSyntax property is a list assert isinstance(transfer_syntaxes, list) # Check TransferSyntax list contains transfer syntax type UIDs for syntax in transfer_syntaxes: assert isinstance(syntax, UID) # Check first transfer syntax is little endian implicit syntax = transfer_syntaxes[0] assert syntax, UID('1.2.840.10008.1.2')
def test_decode_properties(self): """Check decoding produces the correct property values.""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) # Check application_context_name property app_name = pdu.application_context_name assert isinstance(app_name, UID) assert app_name == '1.2.840.10008.3.1.1.1' # Check presentation_context property contexts = pdu.presentation_context assert isinstance(contexts, list) for context in contexts: assert isinstance(context, PresentationContextItemRQ) # Check user_information property user_info = pdu.user_information assert isinstance(user_info, UserInformationItem)
def test_decode(self): """Check decoding assoc_rq produces the correct attribute values.""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) assert pdu.protocol_version == 0x01 assert pdu.calling_ae_title == b'ECHOSCU ' assert pdu.called_ae_title == b'ANY-SCP ' assert pdu.pdu_type == 0x01 assert pdu.pdu_length == 209 assert len(pdu) == 215 assert len(pdu.presentation_context) == 1 assert len(pdu.user_information.user_data) == 3 # Check VariableItems # The actual items will be tested separately assert len(pdu.variable_items) == 3 assert isinstance(pdu.variable_items[0], ApplicationContextItem) assert isinstance(pdu.variable_items[1], PresentationContextItemRQ) assert isinstance(pdu.variable_items[2], UserInformationItem)
def test_decode(self): """Check decoding an assoc_rq produces the correct user information.""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) user_info = pdu.variable_items[2] assert user_info.item_type == 0x50 assert user_info.item_length == 62 assert len(user_info) == 66 assert isinstance(user_info.user_data, list) # Test user items for item in user_info.user_data: # Maximum PDU Length (required) if isinstance(item, MaximumLengthSubItem): assert item.maximum_length_received == 16382 assert user_info.maximum_length == 16382 # Implementation Class UID (required) elif isinstance(item, ImplementationClassUIDSubItem): assert item.item_type == 0x52 assert item.item_length == 32 assert item.implementation_class_uid == UID( '1.2.826.0.1.3680043.9.3811.0.9.0') assert isinstance(item.item_type, int) assert isinstance(item.item_length, int) assert isinstance(item.implementation_class_uid, UID) # Implementation Version Name (optional) elif isinstance(item, ImplementationVersionNameSubItem): assert item.item_type == 0x55 assert item.item_length == 14 assert item.implementation_version_name == b'PYNETDICOM_090' assert isinstance(item.item_type, int) assert isinstance(item.item_length, int) assert isinstance(item.implementation_version_name, bytes)
def test_decode_properties(self): """Check decoding produces the correct property values.""" pdu = A_ASSOCIATE_RQ() pdu.decode(a_associate_rq) context = pdu.presentation_context[0] # Check context_id property assert context.context_id == 1 # Check abstract_syntax property assert isinstance(context.abstract_syntax, UID) assert context.abstract_syntax == UID('1.2.840.10008.1.1') # Check transfer_syntax property assert isinstance(context.transfer_syntax, list) assert len(context.transfer_syntax) == 1 for syntax in pdu.presentation_context[0].transfer_syntax: assert isinstance(syntax, UID) # Check first transfer syntax is little endian implicit syntax = pdu.presentation_context[0].transfer_syntax[0] assert syntax == UID('1.2.840.10008.1.2')