import { generate, parse } from 'css-tree';
import { resolveCalcExpressions } from './resolve-calc-expressions.js';

describe('resolveCalcExpressions()', () => {
  it('resolves spacing calc expressions from tailwind v4', () => {
    const root = parse(`
.px-3{padding-inline:calc(0.25rem*3)}
.py-2{padding-block:calc(0.25rem*2)}
  `);
    resolveCalcExpressions(root);
    expect(generate(root)).toMatchInlineSnapshot(
      `".px-3{padding-inline:0.75rem}.py-2{padding-block:0.5rem}"`,
    );
  });

  it('resolves calc expressions repeating decimals', () => {
    const root = parse(`
      .w-1/3 { width: calc(0.3333333333333333*100%); }
    `);
    resolveCalcExpressions(root);
    expect(generate(root)).toMatchInlineSnapshot(
      `".w-1/3{width:33.33333333333333%}"`,
    );
  });

  it('does not modify complex calc expressions', () => {
    const root = parse(`
.px-3{padding-inline:calc(0.25rem*(3 + 1px))}
.py-2{padding-block:calc(0.25rem*(2 + 1px))}
  `);
    resolveCalcExpressions(root);
    expect(generate(root)).toMatchInlineSnapshot(
      `".px-3{padding-inline:calc(0.25rem*(3 + 1px))}.py-2{padding-block:calc(0.25rem*(2 + 1px))}"`,
    );
  });
});
