#include <iostream>
#include <cstdlib>
#include <ctime>
#include "memory.h"

using namespace std;

void pr_ru(const char when[])
{
    cout << when << ":\n"
         << "Tracker:   " << report_usage() << '\n' << endl;
    return;
}

int main(void)
{
    srand(static_cast<unsigned>(time(nullptr)));
    pr_ru("Beginning");
    double * p = new double[10000];
    pr_ru("Allocated");
    delete [] p;
    pr_ru("Deallocated");
    allocate(p, 10000);
    pr_ru("Tracked Allocate");
    deallocate(p, 10000);
    pr_ru("Tracked Deallocate");
    {
        double * q;
        allocate(q, 20);
        pr_ru("Track Loop");
        for (short c = 0; c != 5; c++)
        {
            short x = rand()%30001;
            allocate(p, x);
            cout << (c+1) << "a  ";  pr_ru("Track Loop");
            deallocate(p, x);
            cout << (c+1) << "d  ";  pr_ru("Track Loop");
        }
        pr_ru("Track Loop Over");
        deallocate(q, 20);
        pr_ru("Track Loop Clean");
    }
    return 0;
}
