// Pruebas de SortedInts: al azar con semilla fija, contra std::sort, con invariantes en cada paso.
#include <algorithm>
#include <cassert>
#include <random>
#include <vector>

#include "check.h"
#include "sorted_ints.h"

int main() {
    run_test("inserciones al azar", [] {
        std::mt19937 random(2026);
        std::uniform_int_distribution<int> value(-50, 50);
        SortedInts sorted;
        std::vector<int> reference;
        for (int i = 0; i < 2000; i++) {
            int x = value(random);
            sorted.insert(x);
            reference.push_back(x);
            sorted.check_invariants();
            std::sort(reference.begin(), reference.end());
            assert(sorted.size() == reference.size());
            assert(sorted.smallest() == reference[0]);
        }
    });
    return 0;
}
