package formatter

import (
	"testing"

	"gotest.tools/v3/assert"
	is "gotest.tools/v3/assert/cmp"
)

func TestEllipsis(t *testing.T) {
	testcases := []struct {
		source   string
		width    int
		expected string
	}{
		{source: "t🐳ststring", width: 0, expected: ""},
		{source: "t🐳ststring", width: 1, expected: "t"},
		{source: "t🐳ststring", width: 2, expected: "t…"},
		{source: "t🐳ststring", width: 6, expected: "t🐳st…"},
		{source: "t🐳ststring", width: 20, expected: "t🐳ststring"},
		{source: "你好世界teststring", width: 0, expected: ""},
		{source: "你好世界teststring", width: 1, expected: "你"},
		{source: "你好世界teststring", width: 3, expected: "你…"},
		{source: "你好世界teststring", width: 6, expected: "你好…"},
		{source: "你好世界teststring", width: 20, expected: "你好世界teststring"},
	}

	for _, testcase := range testcases {
		assert.Check(t, is.Equal(testcase.expected, Ellipsis(testcase.source, testcase.width)))
	}
}
