// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. package markdown import ( "testing" "github.com/stretchr/testify/assert" ) func TestParseImageDimensions(t *testing.T) { for name, tc := range map[string]struct { Input string Position int ExpectedRange Range ExpectedNext int ExpectedOk bool }{ "no dimensions, no title": { Input: ``, Position: 26, ExpectedRange: Range{0, 0}, ExpectedNext: 0, ExpectedOk: false, }, "no dimensions, title": { Input: ``, Position: 27, ExpectedRange: Range{0, 0}, ExpectedNext: 0, ExpectedOk: false, }, "only width, no title": { Input: ``, Position: 27, ExpectedRange: Range{27, 30}, ExpectedNext: 31, ExpectedOk: true, }, "only width, title": { Input: ``, Position: 27, ExpectedRange: Range{27, 30}, ExpectedNext: 31, ExpectedOk: true, }, "only height, no title": { Input: ``, Position: 27, ExpectedRange: Range{27, 31}, ExpectedNext: 32, ExpectedOk: true, }, "only height, title": { Input: ``, Position: 27, ExpectedRange: Range{27, 31}, ExpectedNext: 32, ExpectedOk: true, }, "dimensions, no title": { Input: ``, Position: 27, ExpectedRange: Range{27, 34}, ExpectedNext: 35, ExpectedOk: true, }, "dimensions, title": { Input: ``, Position: 27, ExpectedRange: Range{27, 34}, ExpectedNext: 35, ExpectedOk: true, }, "no dimensions, no title, trailing whitespace": { Input: ``, Position: 27, ExpectedRange: Range{0, 0}, ExpectedNext: 0, ExpectedOk: false, }, "only width, no title, trailing whitespace": { Input: ``, Position: 28, ExpectedRange: Range{28, 31}, ExpectedNext: 32, ExpectedOk: true, }, "only height, no title, trailing whitespace": { Input: ``, Position: 29, ExpectedRange: Range{29, 33}, ExpectedNext: 34, ExpectedOk: true, }, "dimensions, no title, trailing whitespace": { Input: ``, Position: 30, ExpectedRange: Range{30, 37}, ExpectedNext: 38, ExpectedOk: true, }, "no width or height": { Input: ``, Position: 27, ExpectedRange: Range{0, 0}, ExpectedNext: 0, ExpectedOk: false, }, "garbage 1": { Input: ``, Position: 27, ExpectedRange: Range{0, 0}, ExpectedNext: 0, ExpectedOk: false, }, "garbage 2": { Input: ``, Position: 27, ExpectedRange: Range{0, 0}, ExpectedNext: 0, ExpectedOk: false, }, "garbage 3": { Input: ``, Position: 27, ExpectedRange: Range{0, 0}, ExpectedNext: 0, ExpectedOk: false, }, "garbage 4": { Input: ``, Position: 27, ExpectedRange: Range{0, 0}, ExpectedNext: 0, ExpectedOk: false, }, } { t.Run(name, func(t *testing.T) { raw, next, ok := parseImageDimensions(tc.Input, tc.Position) assert.Equal(t, tc.ExpectedOk, ok) assert.Equal(t, tc.ExpectedNext, next) assert.Equal(t, tc.ExpectedRange, raw) }) } } func TestImageLinksWithDimensions(t *testing.T) { for name, tc := range map[string]struct { Markdown string ExpectedHTML string }{ "regular link": { Markdown: `[link](https://example.com)`, ExpectedHTML: `
`, }, "image link": { Markdown: ``, ExpectedHTML: `










