void TestArchivoDeBuckets::tests() {
    char nombre[]= "archivo.bin";
    remove(nombre);
    ArchivoDeBuckets* archivo = new ArchivoDeBuckets(nombre,128);

    Distrito* d = new Distrito("Buenos Aires");
    Registro* r = new Registro(d);
    Bucket*	b	= new Bucket(9,128);

    b->agregarRegistro(r);

    int nrr = archivo->guardarBucket(b);

    delete r;

    b = archivo->obtenerBucket(nrr);
    cout << b->getEspacioLibre() << endl;
    cout << b->getTamanioDeDispersion() << endl;
    cout << b->getCantidadDeRegistros() << endl;
    r = new Registro(d);
    Registro* r2 = b->getRegistro(r);
    delete r;
    delete d;
    d = (Distrito*)r2->getContenido();
    cout << "Distrito: " << d->getDistrito() << endl;


    delete r2;
    delete d;
    delete archivo;
}
void TestArchivoDeBuckets::testCargo()
{
    int numero = 320;
    char nombre[]= {"buckets.bin"};
    ArchivoDeBuckets* archivo = new ArchivoDeBuckets(nombre,numero);

    Cargo* c = new Cargo("presidente");
    Registro* r = new Registro(c);
    Bucket* b = new Bucket(0,numero);
    b->agregarRegistro(r);
    delete c;
    delete r;

    c = new Cargo("vicepresidente");
    r = new Registro(c);
    b->agregarRegistro(r);
    delete r;
    delete c;

    int nrr = archivo->guardarBucket(b);

    Bucket* z = archivo->obtenerBucket(nrr);

    cout << "espacio libre: " << z->getEspacioLibre() << endl;
    cout << "cant registros: " << z->getCantidadDeRegistros() << endl;

    list<Registro*>::iterator it = z->ubicarPrimero();
    int cant = z->getCantidadDeRegistros();
    for(int i = 0; i<cant; i++) {
        Cargo* cargo = (Cargo*)((*it)->getContenido());
        cout << cargo->getCargo() << endl;
        delete cargo;
    }

    delete archivo;

}
void TestArchivoDeBuckets::mostrarBucket(ArchivoDeBuckets* archivo,int numeroDeBucket) {
    Bucket* bucketNuevo = archivo->obtenerBucket(numeroDeBucket);

    string* serializacion = bucketNuevo->serializar();
    cout << "bucketSerializado "<< serializacion->size() << endl;
    delete serializacion;

    int cantRegistros = bucketNuevo->getCantidadDeRegistros();

    list<Registro*>::iterator it = bucketNuevo->ubicarPrimero();
    for(int i =0; i < cantRegistros; i++) {
        Registro* registro = *it;
        Distrito* d = (Distrito*)registro->getContenido();
        cout << d->getDistrito() << endl;
        delete d;
        it++;
    }
}
void TestArchivoDeBuckets::testAgotamiento() {
    char nombreDelArchivo[]= "Archivo.bin";
    remove(nombreDelArchivo);
    int numero = LONGITUD_BLOQUE_PRUEBA;
    int nb;
    int nb2;
    Distrito* d;
    ArchivoDeBuckets* archivo = new ArchivoDeBuckets(nombreDelArchivo,numero);

    for (int i = 0; i < 10000; i++) {
        if (i == 5000)
            d = new Distrito("B");
        else
            d = new Distrito("A");

        Registro* r = new Registro(d);
        Bucket* b = new Bucket(0,numero);
        b->agregarRegistro(r);

        if (i==5000)
            nb = archivo->guardarBucket(b);
        else
            nb2 = archivo->guardarBucket(b);

        cout << "Bloque (" << i << ") almacenado en posicion :" << nb2 << endl;

        delete b;
        delete r;
        delete d;
    }

    cout << nb << endl;

    Bucket* buc = archivo->obtenerBucket(nb);
    cout << "cant regs" << buc->getCantidadDeRegistros() << endl;
    list<Registro*>::iterator it = buc->ubicarPrimero();
    Registro* reg = *it;
    Distrito* dis = (Distrito*)reg->getContenido();
    cout << "distrito: " << dis->getDistrito() << endl;
    delete archivo;
}