import pytest 
import numpy as np
import boost_histogram as bh
import time
from pathlib import Path
import pickle

from aare import ClusterFile
from aare import _aare
from conftest import test_data_path


def test_create_cluster_vector():
    cv = _aare.ClusterVector_Cluster3x3i()
    assert cv.cluster_size_x == 3
    assert cv.cluster_size_y == 3
    assert cv.size == 0


def test_push_back_on_cluster_vector():
    cv = _aare.ClusterVector_Cluster2x2i()
    assert cv.cluster_size_x == 2
    assert cv.cluster_size_y == 2
    assert cv.size == 0

    cluster = _aare.Cluster2x2i(19, 22, np.ones(4, dtype=np.int32))
    cv.push_back(cluster)
    assert cv.size == 1

    arr = np.array(cv, copy=False)
    assert arr[0]['x'] == 19
    assert arr[0]['y'] == 22


def test_make_a_hitmap_from_cluster_vector():
    cv = _aare.ClusterVector_Cluster3x3i()

    # Push back 4 clusters with different positions
    cv.push_back(_aare.Cluster3x3i(0, 0, np.ones(9, dtype=np.int32)))
    cv.push_back(_aare.Cluster3x3i(1, 1, np.ones(9, dtype=np.int32)))
    cv.push_back(_aare.Cluster3x3i(1, 1, np.ones(9, dtype=np.int32)))
    cv.push_back(_aare.Cluster3x3i(2, 2, np.ones(9, dtype=np.int32)))

    ref = np.zeros((5, 5), dtype=np.int32)
    ref[0,0] = 1
    ref[1,1] = 2
    ref[2,2] = 1


    img = _aare.hitmap((5,5), cv)
    # print(img)
    # print(ref)
    assert (img == ref).all()