def test_equality(self): """Test equality of ServiceParameter subclasses.""" prim_a = MaximumLengthNotification() prim_b = MaximumLengthNotification() assert prim_a == prim_b assert not prim_a == 'test' assert not prim_a != prim_b prim_b.maximum_length_received = 12 assert not prim_a == prim_b assert prim_a != prim_b
def test_conversion(self): """ Check converting to PDU item works correctly """ ## Check conversion to item using default value primitive = MaximumLengthNotification() item = primitive.from_primitive() # \x3F\xFE = 16382 assert item.encode() == b"\x51\x00\x00\x04\x00\x00\x3f\xfe" ## Check conversion using 0 (unlimited) primitive.maximum_length_received = 0 item = primitive.from_primitive() # \x00\x00 = 0 assert item.encode() == b"\x51\x00\x00\x04\x00\x00\x00\x00"
def test_assignment_and_exceptions(self): """Test incorrect setter for maximum_length_received raises""" primitive = MaximumLengthNotification() # Check default assignment assert primitive.maximum_length_received == 16382 # Check new assignment primitive.maximum_length_received = 45 assert primitive.maximum_length_received == 45 # Check exceptions with pytest.raises(TypeError): primitive.maximum_length_received = 45.2 with pytest.raises(ValueError): primitive.maximum_length_received = -1 with pytest.raises(TypeError): primitive.maximum_length_received = 'abc'
def test_assignment(self): """ Check assignment works correctly """ assoc = A_ASSOCIATE() with pytest.raises(AttributeError): assoc.mode = "test value" with pytest.raises(AttributeError): assoc.presentation_requirements = "test value2" with pytest.raises(AttributeError): assoc.session_requirements = "test value3" assoc.application_context_name = "1.2.840.10008.3.1.1.1" assert assoc.application_context_name == UID('1.2.840.10008.3.1.1.1') assoc.application_context_name = b"1.2.840.10008.3.1.1.1" assert assoc.application_context_name == UID('1.2.840.10008.3.1.1.1') assoc.application_context_name = UID("1.2.840.10008.3.1.1.1") assert assoc.application_context_name == UID('1.2.840.10008.3.1.1.1') assoc.calling_ae_title = 'ABCD1234ABCD12345' assert assoc.calling_ae_title == b'ABCD1234ABCD1234' assoc.called_ae_title = 'ABCD1234ABCD12345' assert assoc.called_ae_title == b'ABCD1234ABCD1234' assert assoc.responding_ae_title == b'ABCD1234ABCD1234' max_length = MaximumLengthNotification() max_length.maximum_length_received = 31222 assoc.user_information.append(max_length) assert assoc.user_information[0].maximum_length_received == 31222 assoc.user_information = ['a', max_length] assert assoc.user_information == [max_length] assoc.result = 0 assert assoc.result == 0 assoc.result = 1 assert assoc.result == 1 assoc.result = 2 assert assoc.result == 2 assoc.result_source = 1 assert assoc.result_source == 1 assoc.result_source = 2 assert assoc.result_source == 2 assoc.result_source = 3 assert assoc.result_source == 3 assoc.diagnostic = 1 assert assoc.diagnostic == 1 assoc.diagnostic = 2 assert assoc.diagnostic == 2 assoc.diagnostic = 3 assert assoc.diagnostic == 3 assoc.diagnostic = 7 assert assoc.diagnostic == 7 assoc.calling_presentation_address = ('10.40.94.43', 105) assert assoc.calling_presentation_address == ('10.40.94.43', 105) assoc.called_presentation_address = ('10.40.94.44', 106) assert assoc.called_presentation_address == ('10.40.94.44', 106) pc = PresentationContext() pc.context_id = 1 assoc.presentation_context_definition_list = [pc] assert assoc.presentation_context_definition_list == [pc] assoc.presentation_context_definition_list = ['a', pc] assert assoc.presentation_context_definition_list == [pc] assoc.presentation_context_definition_results_list = [pc] assert assoc.presentation_context_definition_results_list == [pc] assoc.presentation_context_definition_results_list = ['a', pc] assert assoc.presentation_context_definition_results_list == [pc] assoc = A_ASSOCIATE() # No maximum_length_received set assert assoc.maximum_length_received is None # No MaximumLengthNotification present assoc.maximum_length_received = 31223 assert assoc.user_information[0].maximum_length_received == 31223 assert assoc.maximum_length_received == 31223 # MaximumLengthNotification already present assoc.maximum_length_received = 31224 assert assoc.maximum_length_received == 31224 # No ImplementationClassUIDNotification present assoc.implementation_class_uid = '1.1.2.3.4' assert assoc.user_information[1].implementation_class_uid == UID( '1.1.2.3.4') assert assoc.implementation_class_uid == UID('1.1.2.3.4') # ImplementationClassUIDNotification already present assoc.implementation_class_uid = '1.1.2.3.4' assert assoc.implementation_class_uid == UID('1.1.2.3.4')
def test_string(self): """Check the string output.""" primitive = MaximumLengthNotification() assert '16382 bytes' in primitive.__str__()
def test_assignment(self): """Check assignment works correctly""" assoc = A_ASSOCIATE() with pytest.raises(AttributeError): assoc.mode = "test value" with pytest.raises(AttributeError): assoc.presentation_requirements = "test value2" with pytest.raises(AttributeError): assoc.session_requirements = "test value3" assoc.application_context_name = None assert assoc.application_context_name is None assoc.application_context_name = "1.2.840.10008.3.1.1.1" assert assoc.application_context_name == UID("1.2.840.10008.3.1.1.1") assoc.application_context_name = b"1.2.840.10008.3.1.1.1" assert assoc.application_context_name == UID("1.2.840.10008.3.1.1.1") assoc.application_context_name = UID("1.2.840.10008.3.1.1.1") assert assoc.application_context_name == UID("1.2.840.10008.3.1.1.1") msg = "'Calling AE Title' must be str, not 'NoneType'" with pytest.raises(TypeError, match=msg): assoc.calling_ae_title = None assoc.calling_ae_title = "ABCDEF1234567890" assert assoc.calling_ae_title == "ABCDEF1234567890" msg = "'Called AE Title' must be str, not 'NoneType'" with pytest.raises(TypeError, match=msg): assoc.called_ae_title = None assert assoc.responding_ae_title == assoc.called_ae_title assoc.called_ae_title = "1234567890ABCDEF" assert assoc.called_ae_title == "1234567890ABCDEF" assert assoc.responding_ae_title == assoc.called_ae_title max_length = MaximumLengthNotification() max_length.maximum_length_received = 31222 assoc.user_information.append(max_length) assert assoc.user_information[0].maximum_length_received == 31222 assoc.user_information = ["a", max_length] assert assoc.user_information == [max_length] assoc.result = None assert assoc.result is None assoc.result = 0 assoc.result = 1 assert assoc.result == 1 assoc.result = 2 assert assoc.result == 2 assoc.result_source = None assert assoc.result_source is None assoc.result_source = 1 assert assoc.result_source == 1 assoc.result_source = 2 assert assoc.result_source == 2 assoc.result_source = 3 assert assoc.result_source == 3 assoc.diagnostic = None assert assoc.diagnostic is None assoc.diagnostic = 1 assert assoc.diagnostic == 1 assoc.diagnostic = 2 assert assoc.diagnostic == 2 assoc.diagnostic = 3 assert assoc.diagnostic == 3 assoc.diagnostic = 7 assert assoc.diagnostic == 7 assoc.calling_presentation_address = None assert assoc.calling_presentation_address is None assoc.calling_presentation_address = ("10.40.94.43", 105) assert assoc.calling_presentation_address == ("10.40.94.43", 105) assoc.called_presentation_address = None assert assoc.called_presentation_address is None assoc.called_presentation_address = ("10.40.94.44", 106) assert assoc.called_presentation_address == ("10.40.94.44", 106) pc = PresentationContext() pc.context_id = 1 assoc.presentation_context_definition_list = [pc] assert assoc.presentation_context_definition_list == [pc] assoc.presentation_context_definition_list = ["a", pc] assert assoc.presentation_context_definition_list == [pc] assoc.presentation_context_definition_results_list = [pc] assert assoc.presentation_context_definition_results_list == [pc] assoc.presentation_context_definition_results_list = ["a", pc] assert assoc.presentation_context_definition_results_list == [pc] assoc = A_ASSOCIATE() # No maximum_length_received set assert assoc.maximum_length_received is None # No MaximumLengthNotification present assoc.maximum_length_received = 31223 assert assoc.user_information[0].maximum_length_received == 31223 assert assoc.maximum_length_received == 31223 # MaximumLengthNotification already present assoc.maximum_length_received = 31224 assert assoc.maximum_length_received == 31224 # No ImplementationClassUIDNotification present assoc.implementation_class_uid = "1.1.2.3.4" assert assoc.user_information[1].implementation_class_uid == UID("1.1.2.3.4") assert assoc.implementation_class_uid == UID("1.1.2.3.4") # ImplementationClassUIDNotification already present assoc.implementation_class_uid = "1.1.2.3.4" assert assoc.implementation_class_uid == UID("1.1.2.3.4")
def setup(self): """Setup each test.""" self.acse = ACSE(5) # A-ASSOCIATE (request) primitive = A_ASSOCIATE() primitive.application_context_name = APPLICATION_CONTEXT_NAME # Calling AE Title is the source DICOM AE title primitive.calling_ae_title = b'ABCDEFGHIJKLMNOP' # Called AE Title is the destination DICOM AE title primitive.called_ae_title = b'1234567890123456' # The TCP/IP address of the source, pynetdicom includes port too primitive.calling_presentation_address = ('127.127.127.127', 111112) # The TCP/IP address of the destination, pynetdicom includes port too primitive.called_presentation_address = ('0.0.0.0', 0) # Proposed presentation contexts contexts = [ build_context('1.2.3.4.5.6', JPEGBaseline), build_context('1.2.840.10008.1.1') ] for ii, cx in enumerate(contexts): cx.context_id = ii * 2 + 1 primitive.presentation_context_definition_list = contexts item = MaximumLengthNotification() item.maximum_length_received = 0 primitive.user_information.append(item) item = ImplementationClassUIDNotification() item.implementation_class_uid = generate_uid(entropy_srcs=['lorem']) primitive.user_information.append(item) self.associate_rq = primitive # A-ASSOCIATE (accept) primitive = A_ASSOCIATE() primitive.application_context_name = APPLICATION_CONTEXT_NAME # Calling AE Title is the source DICOM AE title primitive.calling_ae_title = b'ABCDEFGHIJKLMNOP' # Called AE Title is the destination DICOM AE title primitive.called_ae_title = b'1234567890123456' # The TCP/IP address of the source, pynetdicom includes port too primitive.calling_presentation_address = ('127.127.127.127', 111112) # The TCP/IP address of the destination, pynetdicom includes port too primitive.called_presentation_address = ('0.0.0.0', 0) # Proposed presentation contexts contexts = [ build_context('1.2.3.4.5.6', JPEGBaseline), build_context('1.2.840.10008.1.1'), build_context('1.2.840.10008.1.1'), build_context('1.2.840.10008.1.1'), build_context('1.2.840.10008.1.1'), ] for ii, cx in enumerate(contexts): cx.context_id = ii * 2 + 1 cx.result = ii primitive.presentation_context_definition_results_list = contexts primitive.result = 0x00 item = MaximumLengthNotification() item.maximum_length_received = 0 primitive.user_information.append(item) item = ImplementationClassUIDNotification() item.implementation_class_uid = generate_uid(entropy_srcs=['lorem']) primitive.user_information.append(item) self.associate_ac = primitive