# Path: tinamit/cositas.py
# def guardar_json(obj, arch):
#     """
#     Guarda un fuente json, sin riesgo de corrumpir el fuente si se interrumpe el programa mientras escribía al disco.
# 
#     Parameters
#     ----------
#     obj : list | dict
#         Objeto compatible json.
#     arch : str
#         El fuente en el cual hay que guardar el objeto json.
# 
#     """
#     nmbr, ext = os.path.splitext(arch)
#     if not len(ext):
#         arch = nmbr + '.json'
# 
#     contenido = json.dumps(obj, ensure_ascii=False, sort_keys=True, indent=2)
#     guardar_archivo(arch, contenido=contenido)
# 
# def jsonificar(dic, redond=None):
#     nuevo = {}
#     for ll, v in dic.items():
#         if isinstance(v, dict):
#             nuevo[ll] = jsonificar(v, redond=redond)
#         elif isinstance(v, np.ndarray):
#             if redond:
#                 v = v.round(redond)
#             nuevo[ll] = v.tolist()
#         else:
#             nuevo[ll] = v
# 
#     return nuevo
# 
# def cargar_json(arch, codif='UTF-8'):
#     """
#     Cargar un fuente json.
# 
#     Parameters
#     ----------
#     arch : str
#         El fuente en el cual se encuentra el objeto json.
#     codif : str
#         La codificación del fuente.
# 
#     Returns
#     -------
#     dict | list
#         El objeto json.
# 
#     """
# 
#     nmbr, ext = os.path.splitext(arch)
#     if not len(ext):
#         arch = nmbr + '.json'
# 
#     with open(arch, 'r', encoding=codif) as d:
#         return json.load(d)


import os
import unittest
import numpy as np
import numpy.testing as npt
from tinamit.cositas import guardar_json, jsonificar, cargar_json
        caso.assertSetEqual(set(dic), set(ref))
        for vr in ref:
            npt.assert_equal(dic[vr], ref[vr], err_msg=vr)


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):

# Path: tinamit/cositas.py
# def guardar_json(obj, arch):
#     """
#     Guarda un fuente json, sin riesgo de corrumpir el fuente si se interrumpe el programa mientras escribía al disco.
# 
#     Parameters
#     ----------
#     obj : list | dict
#         Objeto compatible json.
#     arch : str
#         El fuente en el cual hay que guardar el objeto json.
# 
#     """
#     nmbr, ext = os.path.splitext(arch)
#     if not len(ext):
#         arch = nmbr + '.json'
# 
#     contenido = json.dumps(obj, ensure_ascii=False, sort_keys=True, indent=2)
#     guardar_archivo(arch, contenido=contenido)
# 
# def jsonificar(dic, redond=None):
#     nuevo = {}
#     for ll, v in dic.items():
#         if isinstance(v, dict):
#             nuevo[ll] = jsonificar(v, redond=redond)
#         elif isinstance(v, np.ndarray):
#             if redond:
#                 v = v.round(redond)
#             nuevo[ll] = v.tolist()
#         else:
#             nuevo[ll] = v
# 
#     return nuevo
# 
# def cargar_json(arch, codif='UTF-8'):
#     """
#     Cargar un fuente json.
# 
#     Parameters
#     ----------
#     arch : str
#         El fuente en el cual se encuentra el objeto json.
#     codif : str
#         La codificación del fuente.
# 
#     Returns
#     -------
#     dict | list
#         El objeto json.
# 
#     """
# 
#     nmbr, ext = os.path.splitext(arch)
#     if not len(ext):
#         arch = nmbr + '.json'
# 
#     with open(arch, 'r', encoding=codif) as d:
#         return json.load(d)


# Path: tinamit/mod/prbs.py
import os
import unittest
import numpy as np
import numpy.testing as npt
from tinamit.cositas import guardar_json, jsonificar, cargar_json

        caso.assertSetEqual(set(dic), set(ref))
        for vr in ref:
            npt.assert_equal(dic[vr], ref[vr], err_msg=vr)


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)