Skip to content
This repository was archived by the owner on Dec 26, 2025. It is now read-only.

Commit 2d7019b

Browse files
committed
Fixed modified data_dict on adx.dump()
1 parent 66855bf commit 2d7019b

2 files changed

Lines changed: 62 additions & 0 deletions

File tree

src/adif_file/adx.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ def dump(file_name: str, data_dict: dict):
9090
:param data_dict: the dictionary with header and records
9191
"""
9292

93+
data_dict = data_dict.copy()
94+
9395
header = {
9496
'ADIF_VER': '3.1.4',
9597
'PROGRAMID': __proj_name__,

test/test_dumpadx.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,66 @@ def test_20_dump(self):
9393

9494
os.remove(temp_file)
9595

96+
def test_30_dump_no_change(self):
97+
adx_dict = {
98+
'HEADER': {'PROGRAMVERSION': '1',
99+
'CREATED_TIMESTAMP': '20231204 100000',
100+
},
101+
'RECORDS': [{'CALL': 'XX1XXX',
102+
'QSO_DATE': '20231204',
103+
'TIME_ON': '1100',
104+
'QTH': 'Test'
105+
},
106+
{'CALL': 'YY1YYY',
107+
'QSO_DATE': '20231204',
108+
'TIME_ON': '1200',
109+
'QTH_INTL': 'Töst',
110+
'APP':
111+
{
112+
'@PROGRAMID': 'TESTAPP',
113+
'@FIELDNAME': 'TESTFIELD',
114+
'@TYPE': 'I',
115+
'$': 'Test',
116+
},
117+
}]
118+
}
119+
adx_dict_sav = adx_dict.copy()
120+
121+
adx_expected = '''<?xml version='1.0' encoding='utf-8'?>
122+
<ADX>
123+
<HEADER>
124+
<PROGRAMVERSION>1</PROGRAMVERSION>
125+
<CREATED_TIMESTAMP>20231204 100000</CREATED_TIMESTAMP>
126+
<ADIF_VER>3.1.4</ADIF_VER>
127+
<PROGRAMID>PyADIF-File</PROGRAMID>
128+
</HEADER>
129+
<RECORDS>
130+
<RECORD>
131+
<CALL>XX1XXX</CALL>
132+
<QSO_DATE>20231204</QSO_DATE>
133+
<TIME_ON>1100</TIME_ON>
134+
<QTH>Test</QTH>
135+
</RECORD>
136+
<RECORD>
137+
<CALL>YY1YYY</CALL>
138+
<QSO_DATE>20231204</QSO_DATE>
139+
<TIME_ON>1200</TIME_ON>
140+
<QTH_INTL>Töst</QTH_INTL>
141+
<APP PROGRAMID="TESTAPP" FIELDNAME="TESTFIELD" TYPE="I">Test</APP>
142+
</RECORD>
143+
</RECORDS>
144+
</ADX>
145+
'''
146+
147+
temp_file = get_file_path('testdata/~test.adx')
148+
adif_file.adx.dump(temp_file, adx_dict)
149+
self.assertDictEqual(adx_dict_sav, adx_dict)
150+
151+
with open(temp_file, encoding='utf-8') as af:
152+
self.assertEqual(adx_expected, af.read())
153+
154+
os.remove(temp_file)
155+
96156

97157
if __name__ == '__main__':
98158
unittest.main()

0 commit comments

Comments
 (0)