Files
aigen/tests/flux-reference.test.mjs
T

33 lines
1.6 KiB
JavaScript

import test from 'node:test'
import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import ts from 'typescript'
const source = readFileSync(new URL('../server/utils/fluxReference.ts', import.meta.url), 'utf8')
const code = ts.transpileModule(source, { compilerOptions: { module: ts.ModuleKind.CommonJS } }).outputText
const api = {}
new Function('exports', code)(api)
const template = JSON.parse(readFileSync(new URL('../server/assets/klein_v2_generate.json', import.meta.url), 'utf8'))
test('Flux reference conditions a new image without initializing its latent or changing output dimensions', () => {
const graph = structuredClone(template)
graph['14'].inputs.width = 1344
graph['14'].inputs.height = 768
const sampler = structuredClone(graph['19'])
api.addFluxGenerationReference(graph, 'reference.png')
assert.deepEqual(graph['19'], sampler)
assert.equal(graph['14'].class_type, 'EmptyFlux2LatentImage')
assert.equal(graph['14'].inputs.width, 1344)
assert.equal(graph['14'].inputs.height, 768)
assert.equal(graph['reference:load'].inputs.image, 'reference.png')
assert.deepEqual(graph['18'].inputs.positive, ['reference:positive', 0])
assert.deepEqual(graph['reference:positive'].inputs.conditioning, ['9', 0])
assert.deepEqual(graph['reference:negative'].inputs.conditioning, ['10', 0])
assert.deepEqual(graph['reference:encode'].inputs.pixels, ['reference:scale', 0])
})
test('Flux generation without a reference retains the text-only graph', () => {
const graph = structuredClone(template)
api.addFluxGenerationReference(graph, '')
assert.deepEqual(graph, template)
})