"""Candidate coverage only, not a model search benchmark."""
import random,itertools,json
if __name__=="__main__":
    rates=['0.001','0.01','0.1'];depths=[1,2,3];domain=list(itertools.product(rates,depths))
    grid=list(itertools.product([rates[0],rates[-1]],[1,3]));draw=random.Random(7).sample(domain,4)
    coverage=lambda xs:{'rates':len({r for r,d in xs}),'depths':len({d for r,d in xs}),'unique_pairs':len(set(xs))}
    assert len(domain)==9 and len(grid)==len(draw)==4 and set(grid)<=set(domain) and set(draw)<=set(domain)
    assert draw==[('0.01',3),('0.001',3),('0.01',1),('0.1',3)]
    assert coverage(grid)=={'rates':2,'depths':2,'unique_pairs':4}
    assert coverage(draw)=={'rates':3,'depths':2,'unique_pairs':4}
    assert set(random.Random(7).sample(domain,9))==set(domain)
    print(json.dumps({'coarse_grid':grid,'random_without_replacement_seed7':draw,'grid_coverage':coverage(grid),'random_coverage':coverage(draw),'full_domain_grid_requires_candidates':9,'all_domain_random_draws_cover_same_set':True,'models_trained':0},indent=2))
