import type { HeadingCache, Pos } from "obsidian";

export const defaultPosition: Pos = { start: { line: 0, col: 0, offset: 0 }, end: { line: 0, col: 0, offset: 0 } };

export const testStandardHeadings: HeadingCache[] = [
    { heading: "Title 1 Level 1", level: 1, position: defaultPosition },
    { heading: "Title 1 Level 2", level: 2, position: defaultPosition },
    {
        heading: "Title 1 Level 3",
        level: 3,
        position: defaultPosition
    },
    { heading: "Title 1 Level 4", level: 4, position: defaultPosition },
    { heading: "Title 1 Level 5", level: 5, position: defaultPosition },
    { heading: "Title 1 Level 6", level: 6, position: defaultPosition }
];

export const testHeadingsWithoutFirstLevel: HeadingCache[] = [
    { heading: "Title 1 Level 2", level: 2, position: defaultPosition },
    { heading: "Title 1 Level 3", level: 3, position: defaultPosition },
    {
        heading: "Title 1 Level 4",
        level: 4,
        position: defaultPosition
    },
    { heading: "Title 1 Level 5", level: 5, position: defaultPosition },
    { heading: "Title 1 Level 6", level: 6, position: defaultPosition }
];

export const testHeadingsMixed: HeadingCache[] = [
    { heading: "Title 1 Level 4", level: 4, position: defaultPosition },
    {
        heading: "Title 1 Level 1",
        level: 1,
        position: defaultPosition
    },
    { heading: "Title 1 Level 6", level: 6, position: defaultPosition },
    { heading: "Title 1 Level 2", level: 2, position: defaultPosition },
    { heading: "Title 2 Level 2", level: 2, position: defaultPosition },
    {
        heading: "Title 1 Level 3",
        level: 3,
        position: defaultPosition
    }
];

export const testHeadingsWithSpecialChars: HeadingCache[] = [
    {
        heading:
            "Title 1 `level 1` {with special chars}, **bold**, _italic_, #a-tag, ==highlighted== and ~~strikethrough~~ text",
        level: 1,
        position: defaultPosition
    },
    { heading: "Title 1 level 2 <em style=\"color: black\">with HTML</em>", level: 2, position: defaultPosition },
    {
        heading: "Title 1 level 3 [[wikilink1]] [[wikilink2|wikitext2]] [mdlink](https://mdurl)",
        level: 3,
        position: defaultPosition
    },
    {
        heading:
            "Title 1 level 4 [[wikilink1]] [[wikilink2|wikitext2]] [mdlink1](https://mdurl) [[wikilink3]] [[wikilink4|wikitext3]] [mdlink2](https://mdurl)",
        level: 4,
        position: defaultPosition
    },
    { heading: "Title 1 level 5 <!-- omit -->", level: 5, position: defaultPosition }
];

export const TEST_DEFAULT_SETTINGS = { excludedChars: [ "*", "_", "`", "==", "~~", "{", "}", "#", "\\" ] };

// Omit Specific Headings
export const testOmitHeadingRegex: RegExp = /<!--\s*omit\s*-->/;
