import assert from 'node:assert/strict';
import test from 'node:test';
import { duplicateShapeWithLabel } from '../../src/features/layout/draw/layoutDrawShapeUtils.ts';

test('duplicates a line with original label when no override is provided', () => {
  const duplicated = duplicateShapeWithLabel(
    {
      id: 'line-1',
      type: 'line',
      x1: 10,
      y1: 20,
      x2: 10,
      y2: 160,
      orientation: 'vertical',
      label: '기존',
    },
    'line-2',
  );

  assert.deepEqual(duplicated, {
    id: 'line-2',
    type: 'line',
    x1: 34,
    y1: 44,
    x2: 34,
    y2: 184,
    orientation: 'vertical',
    label: '기존',
  });
});

test('duplicates a line with label override and offset', () => {
  const duplicated = duplicateShapeWithLabel(
    {
      id: 'line-1',
      type: 'line',
      x1: 10,
      y1: 20,
      x2: 10,
      y2: 160,
      orientation: 'vertical',
      label: '기존',
    },
    'line-2',
    '복사본',
  );

  assert.deepEqual(duplicated, {
    id: 'line-2',
    type: 'line',
    x1: 34,
    y1: 44,
    x2: 34,
    y2: 184,
    orientation: 'vertical',
    label: '복사본',
  });
});

test('duplicates a rect with label override and offset', () => {
  const duplicated = duplicateShapeWithLabel(
    {
      id: 'rect-1',
      type: 'rect',
      x: 40,
      y: 50,
      width: 120,
      height: 80,
      label: '사각형',
      fillColor: '#bfdbfe',
    },
    'rect-2',
    '새 라벨',
  );

  assert.deepEqual(duplicated, {
    id: 'rect-2',
    type: 'rect',
    x: 64,
    y: 74,
    width: 120,
    height: 80,
    label: '새 라벨',
    fillColor: '#bfdbfe',
  });
});
