import { describe, expect, it } from 'vitest';
import { quantsFromSiblings } from '$lib/quants';

const sib = (rfilename: string) => ({ rfilename });

describe('quantsFromSiblings', () => {
	it('extracts quant labels from main model files', () => {
		expect(
			quantsFromSiblings([
				sib('gemma-4-26B-A4B-it-Q8_0.gguf'),
				sib('gemma-4-26B-A4B-it-Q4_K_M.gguf')
			])
		).toEqual(['Q8_0', 'Q4_K_M']);
	});

	it('skips MTP draft heads in subfolders', () => {
		expect(
			quantsFromSiblings([
				sib('gemma-4-26B-A4B-it-Q8_0.gguf'),
				sib('MTP/gemma-4-26B-A4B-it-MTP-Q8_0.gguf'),
				sib('MTP/gemma-4-26B-A4B-it-MTP-BF16.gguf')
			])
		).toEqual(['Q8_0']);
	});

	it('skips mmproj artifacts', () => {
		expect(quantsFromSiblings([sib('mmproj-BF16.gguf'), sib('model-F16.gguf')])).toEqual(['F16']);
	});

	it('keeps only the first part of split files', () => {
		expect(
			quantsFromSiblings([
				sib('big-Q4_K_M-00001-of-00002.gguf'),
				sib('big-Q4_K_M-00002-of-00002.gguf')
			])
		).toEqual(['Q4_K_M']);
	});
});
