import pickle
from multiprocessing import active_children
from pathlib import Path

import pytest

from ndbioimage import Imread, ReaderNotFoundError


@pytest.mark.parametrize("file", (Path(__file__).parent / "files").iterdir())
def test_open(file):
    try:
        with Imread(file) as im:
            mean = im[dict(c=0, z=0, t=0)].mean()
            b = pickle.dumps(im)
            jm = pickle.loads(b)
            assert jm[dict(c=0, z=0, t=0)].mean() == mean
            v = im.view()
            assert v[dict(c=0, z=0, t=0)].mean() == mean
            b = pickle.dumps(v)
            w = pickle.loads(b)
            assert w[dict(c=0, z=0, t=0)].mean() == mean
    except ReaderNotFoundError:
        assert len(Imread.__subclasses__()), "No subclasses for Imread found."

    for child in active_children():
        child.kill()
