Skip to content

Commit 80a3129

Browse files
committed
level tests update
1 parent 2252765 commit 80a3129

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

arc/level_test.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import os
99
import unittest
10+
from unittest.mock import patch
1011

1112
from arkane.modelchem import LevelOfTheory
1213

@@ -45,7 +46,7 @@ def test_deduce_software(self):
4546
self.assertEqual(Level(method='B3LYP', basis='6-311g+(d,f)').software, 'gaussian')
4647
level_3 = Level(method='B3LYP', basis='6-311g+(d,f)')
4748
level_3.deduce_software(job_type='irc')
48-
self.assertEqual(level_3.software, 'qchem')
49+
self.assertEqual(level_3.software, 'gaussian')
4950
self.assertEqual(Level(method='DLPNO-CCSD(T)', basis='def2-tzvp').software, 'orca')
5051
self.assertEqual(Level(method='PM6').software, 'gaussian')
5152
self.assertEqual(Level(method='HF').software, 'gaussian')
@@ -61,6 +62,36 @@ def test_deduce_software(self):
6162
self.assertEqual(Level(method='new', basis='new', args={'keywords': {'general': 'iop(99/33=1)'}}).software,
6263
'gaussian')
6364

65+
@patch('arc.level.supported_ess', new=['qchem', 'gaussian'])
66+
def test_deduce_software_irc_with_both(self):
67+
"""Test deducing software for IRC job when both qchem and gaussian are supported."""
68+
level = Level(method='B3LYP', basis='6-311g+(d,f)')
69+
level.deduce_software(job_type='irc')
70+
self.assertEqual(level.software, 'gaussian') # gaussian is also available
71+
72+
@patch('arc.level.supported_ess', new=['qchem'])
73+
def test_deduce_software_irc_with_only_gaussian(self):
74+
"""Test deducing software for IRC job when only gaussian is supported."""
75+
level = Level(method='B3LYP', basis='6-311g+(d,f)')
76+
level.deduce_software(job_type='irc')
77+
self.assertEqual(level.software, 'qchem') # Only qchem is available
78+
79+
@patch('arc.level.supported_ess', new=[])
80+
def test_deduce_software_value_errors(self):
81+
"""Test various ValueError scenarios in deduce_software."""
82+
test_cases = [
83+
('onedmin', None, 'onedmin'),
84+
('orbitals', None, 'qchem'),
85+
('composite', 'B3LYP', 'gaussian'),
86+
('irc', None, 'qchem or gaussian')
87+
]
88+
89+
for job_type, method, missing_software in test_cases:
90+
with self.subTest(job_type=job_type, method=method, missing_software=missing_software):
91+
level = Level(method=method or 'B3LYP', basis='6-311g+(d,f)' if not method else None)
92+
with self.assertRaises(ValueError):
93+
level.deduce_software(job_type=job_type)
94+
6495
def test_lower(self):
6596
"""Test the Level.lower() method"""
6697
level = Level(method='B3LYP',

0 commit comments

Comments
 (0)