def test_conversion(self): """ Check conversion to a PDU produces the correct output """ assoc = A_ASSOCIATE() assoc.application_context_name = "1.2.840.10008.3.1.1.1" assoc.calling_ae_title = 'ECHOSCU' assoc.called_ae_title = 'ANY-SCP' assoc.maximum_length_received = 16382 assoc.implementation_class_uid = '1.2.826.0.1.3680043.9.3811.0.9.0' imp_ver_name = ImplementationVersionNameNotification() imp_ver_name.implementation_version_name = 'PYNETDICOM_090' assoc.user_information.append(imp_ver_name) pc = PresentationContext() pc.context_id = 1 pc.abstract_syntax = '1.2.840.10008.1.1' pc.transfer_syntax = ['1.2.840.10008.1.2'] assoc.presentation_context_definition_list = [pc] pdu = A_ASSOCIATE_RQ() pdu.from_primitive(assoc) data = pdu.encode() ref = b"\x01\x00\x00\x00\x00\xd1\x00\x01\x00\x00\x41\x4e\x59\x2d\x53\x43" \ b"\x50\x20\x20\x20\x20\x20\x20\x20\x20\x20\x45\x43\x48\x4f\x53\x43" \ b"\x55\x20\x20\x20\x20\x20\x20\x20\x20\x20\x00\x00\x00\x00\x00\x00" \ b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" \ b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x15\x31\x2e" \ b"\x32\x2e\x38\x34\x30\x2e\x31\x30\x30\x30\x38\x2e\x33\x2e\x31\x2e" \ b"\x31\x2e\x31\x20\x00\x00\x2e\x01\x00\x00\x00\x30\x00\x00\x11\x31" \ b"\x2e\x32\x2e\x38\x34\x30\x2e\x31\x30\x30\x30\x38\x2e\x31\x2e\x31" \ b"\x40\x00\x00\x11\x31\x2e\x32\x2e\x38\x34\x30\x2e\x31\x30\x30\x30" \ b"\x38\x2e\x31\x2e\x32\x50\x00\x00\x3e\x51\x00\x00\x04\x00\x00\x3f" \ b"\xfe\x52\x00\x00\x20\x31\x2e\x32\x2e\x38\x32\x36\x2e\x30\x2e\x31" \ b"\x2e\x33\x36\x38\x30\x30\x34\x33\x2e\x39\x2e\x33\x38\x31\x31\x2e" \ b"\x30\x2e\x39\x2e\x30\x55\x00\x00\x0e\x50\x59\x4e\x45\x54\x44\x49" \ b"\x43\x4f\x4d\x5f\x30\x39\x30" assert data == ref
def test_assignment(self): """ Check assignment works correctly """ assoc = A_ASSOCIATE() def test_mode(): assoc.mode = "test value" self.assertRaises(AttributeError, test_mode) def test_preq(): assoc.presentation_requirements = "test value2" self.assertRaises(AttributeError, test_preq) def test_sreq(): assoc.session_requirements = "test value3" self.assertRaises(AttributeError, test_sreq) assoc.application_context_name = "1.2.840.10008.3.1.1.1" self.assertTrue( 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" self.assertTrue( 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") self.assertTrue( assoc.application_context_name == UID('1.2.840.10008.3.1.1.1')) assoc.calling_ae_title = 'ABCD1234ABCD12345' self.assertTrue(assoc.calling_ae_title == b'ABCD1234ABCD1234') assoc.called_ae_title = 'ABCD1234ABCD12345' self.assertTrue(assoc.called_ae_title == b'ABCD1234ABCD1234') self.assertTrue(assoc.responding_ae_title == b'ABCD1234ABCD1234') max_length = MaximumLengthNegotiation() max_length.maximum_length_received = 31222 assoc.user_information.append(max_length) self.assertTrue( assoc.user_information[0].maximum_length_received == 31222) assoc.user_information = ['a', max_length] self.assertEqual(assoc.user_information, [max_length]) assoc.result = 0 self.assertTrue(assoc.result == 0) assoc.result = 1 self.assertTrue(assoc.result == 1) assoc.result = 2 self.assertTrue(assoc.result == 2) assoc.result_source = 1 self.assertTrue(assoc.result_source == 1) assoc.result_source = 2 self.assertTrue(assoc.result_source == 2) assoc.result_source = 3 self.assertTrue(assoc.result_source == 3) assoc.diagnostic = 1 self.assertTrue(assoc.diagnostic == 1) assoc.diagnostic = 2 self.assertTrue(assoc.diagnostic == 2) assoc.diagnostic = 3 self.assertTrue(assoc.diagnostic == 3) assoc.diagnostic = 7 self.assertTrue(assoc.diagnostic == 7) assoc.calling_presentation_address = ('10.40.94.43', 105) self.assertTrue(assoc.calling_presentation_address == ('10.40.94.43', 105)) assoc.called_presentation_address = ('10.40.94.44', 106) self.assertTrue(assoc.called_presentation_address == ('10.40.94.44', 106)) pc = PresentationContext() pc.context_id = 1 assoc.presentation_context_definition_list = [pc] self.assertTrue(assoc.presentation_context_definition_list == [pc]) assoc.presentation_context_definition_list = ['a', pc] self.assertTrue(assoc.presentation_context_definition_list == [pc]) assoc.presentation_context_definition_results_list = [pc] self.assertTrue( assoc.presentation_context_definition_results_list == [pc]) assoc.presentation_context_definition_results_list = ['a', pc] self.assertTrue( assoc.presentation_context_definition_results_list == [pc]) assoc = A_ASSOCIATE() # No maximum_length_received set self.assertEqual(assoc.maximum_length_received, None) # No MaximumLengthNegotiation present assoc.maximum_length_received = 31223 self.assertTrue( assoc.user_information[0].maximum_length_received == 31223) self.assertTrue(assoc.maximum_length_received == 31223) # MaximumLengthNegotiation already present assoc.maximum_length_received = 31224 self.assertTrue(assoc.maximum_length_received == 31224) # No ImplementationClassUIDNegotiation present assoc.implementation_class_uid = '1.1.2.3.4' self.assertTrue(assoc.user_information[1].implementation_class_uid == UID('1.1.2.3.4')) self.assertTrue(assoc.implementation_class_uid == UID('1.1.2.3.4')) # ImplementationClassUIDNegotiation already present assoc.implementation_class_uid = '1.1.2.3.4' self.assertTrue(assoc.implementation_class_uid == UID('1.1.2.3.4'))