// Diagnostic only: exercise the production header, not a Python parser oracle.
#include <cassert>
#include <iostream>
#include "tensor_contract.hpp"

int main()
{
    // Roboflow rf-detr 1.9.3 / 3f7748b1783533bc2e62804ca5975fe9b9cfc041
    // assets/coco_classes.py: sparse COCO category IDs, ascending dense mapping.
    const unsigned ids[] = {
        1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,
        22,23,24,25,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,
        46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,
        67,70,72,73,74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,90
    };
    unsigned mismatches = 0;
    unsigned dropped = 0;
    for (unsigned dense = 0; dense < 80; ++dense) {
        const int actual = contextra::canonicalClassId(ids[dense]);
        if (actual != static_cast<int>(dense)) ++mismatches;
        if (actual < 0) ++dropped;
    }
    std::cout << "sparse_COCO_comparison mismatches=" << mismatches
              << " dropped=" << dropped << " total=80\n";
    std::cout << "slot13=" << contextra::canonicalClassId(13)
              << " reference_dense=11; slot90=" << contextra::canonicalClassId(90)
              << " reference_dense=79\n";
    assert(mismatches == 0 && dropped == 0);
    // Mapping regression PASS alone is not model semantic or Runtime PASS.
    assert(contextra::validateTensorContract({true, true, {1,300,4}, {1,300,91}, 1}));
    assert(!contextra::validateTensorContract({false, true, {1,300,4}, {1,300,91}, 1}));
    assert(!contextra::validateTensorContract({true, true, {1,300,4}, {1,299,91}, 1}));
    return 0;
}
