Code source de tinamit.mod.prbs

import os
import unittest

import numpy as np
import numpy.testing as npt

from tinamit.cositas import guardar_json, jsonificar, cargar_json


[docs]def verificar_leer_ingr(caso, cls): """ Verifica que una envoltura lee bien sus datos de ingreso. Parameters ---------- caso: unittest.TestCase El caso de prueba. cls: La clase del modelo para comprobar. """ info_prb = cls.prb_ingreso() if info_prb: arch, f_leer = info_prb caso.maxDiff = None dic = {str(vr): jsonificar(vr.__dict__) for vr in f_leer(arch)} dir_, nombre = os.path.split(arch) ref = {str(ll): jsonificar(v) for ll, v in _obt_ref(os.path.join(dir_, 'ref', nombre + '.json'), dic).items()} caso.assertSetEqual(set(dic), set(ref)) for vr in ref: caso.assertEqual(dic[vr]['unid'], ref[vr]['unid'], vr) caso.assertTupleEqual(tuple(dic[vr]['líms']), tuple(ref[vr]['líms']), vr) npt.assert_equal(dic[vr]['inic'], ref[vr]['inic'], err_msg=vr)
[docs]def verificar_leer_egr(caso, cls): """ Verifica que una envoltura lee bien sus datos de egreso. Parameters ---------- caso: unittest.TestCase El caso de prueba. cls: La clase del modelo para comprobar. """ info_prb = cls.prb_egreso() if info_prb: arch, f_leer = info_prb dic = {vr: np.array(vl) for vr, vl in f_leer(arch).items()} dir_, nombre = os.path.split(arch) ref = _obt_ref(os.path.join(dir_, 'ref', nombre + '.json'), dic) caso.assertSetEqual(set(dic), set(ref)) for vr in ref: npt.assert_equal(dic[vr], ref[vr], err_msg=vr)
[docs]def verificar_simul(caso, cls): """ Verifica que una envoltura simula bien. No correrá si no está instalada la envoltura. Parameters ---------- caso: unittest.TestCase El caso de prueba. cls: La clase del modelo para comprobar. """ arch_ingr = cls.prb_simul() if arch_ingr and cls.instalado(): mod = cls(arch_ingr) res = mod.simular(2).a_dic() dir_, nombre = os.path.split(arch_ingr) ref = _obt_ref(os.path.join(dir_, 'ref', nombre + '.simul.json'), res) caso.assertDictEqual(res, ref)
def _obt_ref(arch, d_auto): if not os.path.isfile(arch): guardar_json(jsonificar(d_auto), arch) return cargar_json(arch)