#!/usr/bin/env python

import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

from runtest import version_info, get_filter, cli, run
from runtest_config import configure

assert version_info.major == 2

f = [
    get_filter(from_string='Overview of calculated energies',
               num_lines=12,
               rel_tolerance=1.0e-5),
]

options = cli()

ierr = 0
for inp in ['BeH.x2c_scf_relcc_+0.0005.inp','BeH.x2c_scf_relcc_-0.0005.inp']:
    ierr += run(options,
                configure,
                input_files=[inp,'BeH.sto-2g.C2v.mol'],
                extra_args='--noarch --put "DFPCMO.BeH.x2c_scf_sto-2g.C2v=DFPCMO"',
                filters={'out': f})

f = [
   get_filter(from_string='TOTAL ENERGY',
               num_lines=11,
               rel_tolerance=1.0e-5),
   get_filter(from_string='************ Expectation values',
               to_string='s0 = T : Expectation value',
               rel_tolerance=1.0e-5),
]

# run simple SCF run with calculating dipole moment as expectation value
ierr += run(options,
            configure,
            input_files=['BeH.x2c_scf_dipmom.inp','BeH.sto-2g.C2v.mol'],
            extra_args='--noarch --put "DFPCMO.BeH.x2c_scf_sto-2g.C2v=DFPCMO"',
            filters={'out': f})


# run LiH analytic and finite-field calculations
ierr += run(options,
            configure,
            input_files=['LiH.x2c_scf_relcc_analytic-gradient.inp', 'LiH.sto-6g.C2v.mol'],
            filters={'out': f})

f = [ get_filter(from_string='  Perturbative treatment of triple excitations',
               num_lines=10,
               rel_tolerance=1.0e-5) ]
 
ierr += run(options,
            configure,
            input_files=['LiH.x2c_scf_relcc_orb-unrelaxed_z_-0.0005.inp', 'LiH.sto-6g.C2v.mol'],
            filters={'out': f})

ierr += run(options,
            configure,
            input_files=['LiH.x2c_scf_relcc_orb-unrelaxed_z_+0.0005.inp', 'LiH.sto-6g.C2v.mol'],
            filters={'out': f})
 
ierr += run(options,
            configure,
            input_files=['LiH.x2c_scf_relcc_orb-unrelaxed_qzz_-0.0005.inp', 'LiH.sto-6g.C2v.mol'],
            filters={'out': f})

ierr += run(options,
            configure,
            input_files=['LiH.x2c_scf_relcc_orb-unrelaxed_qzz_+0.0005.inp', 'LiH.sto-6g.C2v.mol'],
            filters={'out': f})
 
ierr += run(options,
            configure,
            input_files=['LiH.x2c_scf_relcc_orb-relaxed_z_-0.0005.inp', 'LiH.sto-6g.C2v.mol'],
            filters={'out': f})

ierr += run(options,
            configure,
            input_files=['LiH.x2c_scf_relcc_orb-relaxed_z_+0.0005.inp', 'LiH.sto-6g.C2v.mol'],
            filters={'out': f})

sys.exit(ierr)



