import 'package:flutter_test/flutter_test.dart'; import 'package:fikoyt_studyo/comfy/workflow/muzik_workflow.dart'; void main() { test('parametreler doğru node inputlarına düşüyor', () { final p = MuzikParametreleri( tags: 'turkish pop, energetic', lyrics: '[verse]\ntest', seed: 42, bpm: 128, sureSn: 95, dil: 'tr', tonAnahtari: 'A minor', steps: 24, cfg: 4.5, temperature: 1.1, ); final w = muzikWorkflowOlustur(p); final encode = w['94']['inputs'] as Map; expect(encode['tags'], 'turkish pop, energetic'); expect(encode['lyrics'], '[verse]\ntest'); expect(encode['seed'], 42); expect(encode['bpm'], 128); expect(encode['duration'], 95); expect(encode['language'], 'tr'); expect(encode['keyscale'], 'A minor'); expect(encode['temperature'], 1.1); final sampler = w['3']['inputs'] as Map; expect(sampler['seed'], 42); expect(sampler['steps'], 24); expect(sampler['cfg'], 4.5); expect(sampler['positive'], ['94', 0]); expect(sampler['negative'], ['47', 0]); expect(w['98']['inputs']['seconds'], 95); expect(w['104']['class_type'], 'SaveAudioMP3'); }); test('aio model: CheckpointLoader CLIP+VAE bundle kullanır', () { final w = muzikWorkflowOlustur( MuzikParametreleri(model: 'ace_step_1.5_turbo_aio.safetensors')); expect(w.containsKey('90'), isFalse, reason: 'aio ayrı CLIP loader istemez'); expect(w.containsKey('91'), isFalse, reason: 'aio ayrı VAE loader istemez'); expect(w['94']['inputs']['clip'], ['97', 1]); // checkpoint CLIP expect(w['18']['inputs']['vae'], ['97', 2]); // checkpoint VAE }); test('bileşen model: DualCLIPLoader (0.6b+4b) + VAELoader kullanır', () { final w = muzikWorkflowOlustur(MuzikParametreleri( model: 'acestep_v1.5_xl_sft_bf16.safetensors', clipModel: 'qwen_0.6b_ace15.safetensors', clipModel2: 'qwen_4b_ace15.safetensors', vaeModel: 'ace_1.5_vae.safetensors', )); expect(w['105']['class_type'], 'DualCLIPLoader'); expect(w['105']['inputs']['type'], 'ace'); expect(w['105']['inputs']['clip_name1'], 'qwen_0.6b_ace15.safetensors'); expect(w['105']['inputs']['clip_name2'], 'qwen_4b_ace15.safetensors'); expect(w['91']['class_type'], 'VAELoader'); expect(w['94']['inputs']['clip'], ['105', 0]); // DualCLIP çıkışı expect(w['18']['inputs']['vae'], ['91', 0]); // ayrı VAE expect(w['78']['inputs']['model'], ['97', 0]); // model checkpoint'ten }); test('json round-trip kayıpsız', () { final p = MuzikParametreleri(tags: 'jazz', seed: 7, bpm: 90); final geri = MuzikParametreleri.fromJson(p.toJson()); expect(geri.tags, p.tags); expect(geri.seed, p.seed); expect(geri.bpm, p.bpm); expect(geri.sureSn, p.sureSn); }); test('varyasyon yeni seed alır, diğerleri korunur', () { final p = MuzikParametreleri(tags: 'rock', seed: 1, bpm: 140); final v = p.kopyala(seed: MuzikParametreleri.rastgeleSeed()); expect(v.seed, isNot(1)); expect(v.tags, 'rock'); expect(v.bpm, 140); }); }