import { expect, it } from 'vitest'
import { canonicalizeCalcExpressions } from './canonicalize-calc-expressions'

it.each([
  ['calc(-1 * var(--foo))', 'calc(var(--foo) * -1)'],
  ['calc(1rem + var(--foo))', 'calc(var(--foo) + 1rem)'],
  ['calc(2rem * calc(3px * var(--foo)))', 'calc(calc(var(--foo) * 3px) * 2rem)'],
  ['calc(var(--b) + var(--a))', 'calc(var(--a) + var(--b))'],
  ['calc(3px * 2rem)', 'calc(2rem * 3px)'],
  ['calc(5px * 3px)', 'calc(3px * 5px)'],
  ['calc(1 * 1rem)', 'calc(1rem * 1)'],
  ['calc(10 + 2)', 'calc(2 + 10)'],
])('`%s` → `%s` (%#)', (input, expected) => {
  expect(canonicalizeCalcExpressions(input)).toBe(expected)
})

it.each([
  ['calc(1rem - var(--foo))'],
  ['calc(1rem / 2)'],
  ['calc(var(--a) + 1rem)'],
  ['calc(2rem * 3px)'],
])('should keep `%s` (%#)', (input) => {
  expect(canonicalizeCalcExpressions(input)).toBe(input)
})