/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { describe, it, expect } from 'vitest';
import { parseThought } from './thoughtUtils.js';
describe('parseThought', () => {
    it.each([
        {
            name: 'a standard thought with subject and description',
            rawText: '**Subject:** This is the description.',
            expected: {
                subject: 'Subject:',
                description: 'This is the description.',
            },
        },
        {
            name: 'leading and trailing whitespace in the raw string',
            rawText: '  **Subject** description with spaces   ',
            expected: { subject: 'Subject', description: 'description with spaces' },
        },
        {
            name: 'whitespace surrounding the subject content',
            rawText: '** Subject  **',
            expected: { subject: 'Subject', description: '' },
        },
        {
            name: 'a thought with only a subject',
            rawText: '**Only Subject**',
            expected: { subject: 'Only Subject', description: '' },
        },
        {
            name: 'a thought with only a description (no subject)',
            rawText: 'This is just a description.',
            expected: { subject: '', description: 'This is just a description.' },
        },
        {
            name: 'an empty string input',
            rawText: '',
            expected: { subject: '', description: '' },
        },
        {
            name: 'newlines within the subject and description',
            rawText: '**Multi-line\nSubject**\nHere is a description\nspread across lines.',
            expected: {
                subject: 'Multi-line\nSubject',
                description: 'Here is a description\nspread across lines.',
            },
        },
        {
            name: 'only the first subject if multiple are present',
            rawText: '**First** some text **Second**',
            expected: { subject: 'First', description: 'some text **Second**' },
        },
        {
            name: 'text before and after the subject',
            rawText: 'Prefix text **Subject** Suffix text.',
            expected: {
                subject: 'Subject',
                description: 'Prefix text  Suffix text.',
            },
        },
        {
            name: 'an unclosed subject tag',
            rawText: 'Text with **an unclosed subject',
            expected: { subject: '', description: 'Text with **an unclosed subject' },
        },
        {
            name: 'an empty subject tag',
            rawText: 'A thought with **** in the middle.',
            expected: { subject: '', description: 'A thought with  in the middle.' },
        },
    ])('should correctly parse $name', ({ rawText, expected }) => {
        expect(parseThought(rawText)).toEqual(expected);
    });
});
//# sourceMappingURL=thoughtUtils.test.js.map