Skip to content

Commit a21229b

Browse files
Added tests
1 parent 55542e0 commit a21229b

File tree

2 files changed

+176
-2
lines changed

2 files changed

+176
-2
lines changed

packages/common/src/types/command/ActionDescriptor.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ export interface CustomInsertSnippetArg {
159159
substitutions?: Record<string, string>;
160160
}
161161

162-
interface ListInsertSnippetArg {
162+
export interface ListInsertSnippetArg {
163163
type: "list";
164164
fallbackLanguage?: string;
165165
substitutions?: Record<string, string>;
@@ -191,7 +191,7 @@ export interface CustomWrapWithSnippetArg {
191191
languages?: string[];
192192
}
193193

194-
interface ListWrapWithSnippetArg {
194+
export interface ListWrapWithSnippetArg {
195195
type: "list";
196196
fallbackLanguage?: string;
197197
snippets: CustomWrapWithSnippetArg[];
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
import type {
2+
CustomInsertSnippetArg,
3+
CustomWrapWithSnippetArg,
4+
ListInsertSnippetArg,
5+
ListWrapWithSnippetArg,
6+
NamedInsertSnippetArg,
7+
NamedWrapWithSnippetArg,
8+
} from "@cursorless/common";
9+
import assert from "node:assert";
10+
import { getPreferredSnippet } from "./getPreferredSnippet";
11+
12+
const insertNamed: NamedInsertSnippetArg = {
13+
type: "named",
14+
name: "named snippet",
15+
};
16+
17+
const insertSingleLanguage: CustomInsertSnippetArg = {
18+
type: "custom",
19+
body: "custom body",
20+
languages: ["a"],
21+
};
22+
23+
const insertMultiLanguage: CustomInsertSnippetArg = {
24+
type: "custom",
25+
body: "custom body",
26+
languages: ["a", "b"],
27+
};
28+
29+
const insertGlobal: CustomInsertSnippetArg = {
30+
type: "custom",
31+
body: "custom body",
32+
};
33+
34+
const insertionSnippets = [
35+
insertGlobal,
36+
insertMultiLanguage,
37+
insertSingleLanguage,
38+
];
39+
40+
const wrapNamed: NamedWrapWithSnippetArg = {
41+
type: "named",
42+
name: "named wrap snippet",
43+
variableName: "var",
44+
};
45+
46+
const wrapSingleLanguage: CustomWrapWithSnippetArg = {
47+
type: "custom",
48+
body: "custom body",
49+
variableName: "var",
50+
languages: ["a"],
51+
};
52+
53+
const wrapMultiLanguage: CustomWrapWithSnippetArg = {
54+
type: "custom",
55+
body: "custom body",
56+
variableName: "var",
57+
languages: ["a", "b"],
58+
};
59+
60+
const wrapGlobal: CustomWrapWithSnippetArg = {
61+
type: "custom",
62+
body: "custom body",
63+
variableName: "var",
64+
};
65+
66+
const wrapSnippets = [wrapGlobal, wrapMultiLanguage, wrapSingleLanguage];
67+
68+
suite("getPreferredSnippet", () => {
69+
test("Insert named", () => {
70+
assert.throws(() => {
71+
getPreferredSnippet(insertNamed, "a");
72+
});
73+
});
74+
75+
test("Insert single language", () => {
76+
const snippet: ListInsertSnippetArg = {
77+
type: "list",
78+
snippets: insertionSnippets,
79+
};
80+
const preferred = getPreferredSnippet(snippet, "a");
81+
assert.equal(preferred, insertSingleLanguage);
82+
});
83+
84+
test("Insert multi language", () => {
85+
const snippet: ListInsertSnippetArg = {
86+
type: "list",
87+
snippets: insertionSnippets,
88+
};
89+
const preferred = getPreferredSnippet(snippet, "b");
90+
assert.equal(preferred, insertMultiLanguage);
91+
});
92+
93+
test("Insert fallback single language", () => {
94+
const snippet: ListInsertSnippetArg = {
95+
type: "list",
96+
fallbackLanguage: "a",
97+
snippets: insertionSnippets,
98+
};
99+
const preferred = getPreferredSnippet(snippet, "c");
100+
assert.equal(preferred, insertSingleLanguage);
101+
});
102+
103+
test("Insert fallback multi language", () => {
104+
const snippet: ListInsertSnippetArg = {
105+
type: "list",
106+
fallbackLanguage: "b",
107+
snippets: insertionSnippets,
108+
};
109+
const preferred = getPreferredSnippet(snippet, "c");
110+
assert.equal(preferred, insertMultiLanguage);
111+
});
112+
113+
test("Insert global", () => {
114+
const snippet: ListInsertSnippetArg = {
115+
type: "list",
116+
snippets: insertionSnippets,
117+
};
118+
const preferred = getPreferredSnippet(snippet, "c");
119+
assert.equal(preferred, insertGlobal);
120+
});
121+
122+
test("Wrap named", () => {
123+
assert.throws(() => {
124+
getPreferredSnippet(wrapNamed, "a");
125+
});
126+
});
127+
128+
test("Wrap single language", () => {
129+
const snippet: ListWrapWithSnippetArg = {
130+
type: "list",
131+
snippets: wrapSnippets,
132+
};
133+
const preferred = getPreferredSnippet(snippet, "a");
134+
assert.equal(preferred, wrapSingleLanguage);
135+
});
136+
137+
test("Wrap multi language", () => {
138+
const snippet: ListWrapWithSnippetArg = {
139+
type: "list",
140+
snippets: wrapSnippets,
141+
};
142+
const preferred = getPreferredSnippet(snippet, "b");
143+
assert.equal(preferred, wrapMultiLanguage);
144+
});
145+
146+
test("Wrap fallback single language", () => {
147+
const snippet: ListWrapWithSnippetArg = {
148+
type: "list",
149+
fallbackLanguage: "a",
150+
snippets: wrapSnippets,
151+
};
152+
const preferred = getPreferredSnippet(snippet, "c");
153+
assert.equal(preferred, wrapSingleLanguage);
154+
});
155+
156+
test("Wrap fallback multi language", () => {
157+
const snippet: ListWrapWithSnippetArg = {
158+
type: "list",
159+
fallbackLanguage: "b",
160+
snippets: wrapSnippets,
161+
};
162+
const preferred = getPreferredSnippet(snippet, "c");
163+
assert.equal(preferred, wrapMultiLanguage);
164+
});
165+
166+
test("Wrap global", () => {
167+
const snippet: ListWrapWithSnippetArg = {
168+
type: "list",
169+
snippets: wrapSnippets,
170+
};
171+
const preferred = getPreferredSnippet(snippet, "c");
172+
assert.equal(preferred, wrapGlobal);
173+
});
174+
});

0 commit comments

Comments
 (0)