-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.ts
82 lines (78 loc) · 5.49 KB
/
test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import "mocha";
import * as assert from "assert";
import * as caser from ".";
const testCases: [data: string, parsed: string[], camel: string, upper: string, snake: string, kebab: string, pascal: string, header: string, flat: string, train: string][] = [
["", [], "", "", "", "", "", "", "", ""],
["a", ["a"], "a", "A", "a", "a", "A", "A", "a", "A"],
["A", ["A"], "a", "A", "a", "a", "A", "A", "a", "A"],
["Aa", ["Aa"], "aa", "AA", "aa", "aa", "Aa", "Aa", "aa", "AA"],
["aA", ["a", "A"], "aA", "A_A", "a_a", "a-a", "AA", "A-A", "aa", "A-A"],
["AA", ["AA"], "aa", "AA", "aa", "aa", "Aa", "Aa", "aa", "AA"],
["aAbB", ["a", "Ab", "B"], "aAbB", "A_AB_B", "a_ab_b", "a-ab-b", "AAbB", "A-Ab-B", "aabb", "A-AB-B"],
["AaBb", ["Aa", "Bb"], "aaBb", "AA_BB", "aa_bb", "aa-bb", "AaBb", "Aa-Bb", "aabb", "AA-BB"],
["camelCase", ["camel", "Case"], "camelCase", "CAMEL_CASE", "camel_case", "camel-case", "CamelCase", "Camel-Case", "camelcase", "CAMEL-CASE"],
["UPPER_CASE", ["UPPER", "CASE"], "upperCase", "UPPER_CASE", "upper_case", "upper-case", "UpperCase", "Upper-Case", "uppercase", "UPPER-CASE"],
["lowercase", ["lowercase"], "lowercase", "LOWERCASE", "lowercase", "lowercase", "Lowercase", "Lowercase", "lowercase", "LOWERCASE"],
["snake_case", ["snake", "case"], "snakeCase", "SNAKE_CASE", "snake_case", "snake-case", "SnakeCase", "Snake-Case", "snakecase", "SNAKE-CASE"],
["kebab-case", ["kebab", "case"], "kebabCase", "KEBAB_CASE", "kebab_case", "kebab-case", "KebabCase", "Kebab-Case", "kebabcase", "KEBAB-CASE"],
["PascalCase", ["Pascal", "Case"], "pascalCase", "PASCAL_CASE", "pascal_case", "pascal-case", "PascalCase", "Pascal-Case", "pascalcase", "PASCAL-CASE"],
["Header-Case",["Header", "Case"], "headerCase", "HEADER_CASE", "header_case", "header-case", "HeaderCase", "Header-Case", "headercase", "HEADER-CASE"],
["innerHTML", ["inner", "HTML"], "innerHtml", "INNER_HTML", "inner_html", "inner-html", "InnerHtml", "Inner-Html", "innerhtml", "INNER-HTML"],
["SVGElement", ["SVG", "Element"], "svgElement", "SVG_ELEMENT", "svg_element", "svg-element", "SvgElement", "Svg-Element", "svgelement", "SVG-ELEMENT"],
["MOSTComplexExample-Of_THIS--test___CasesMAP", ["MOST", "Complex", "Example", "Of", "THIS", "test", "Cases", "MAP"], "mostComplexExampleOfThisTestCasesMap", "MOST_COMPLEX_EXAMPLE_OF_THIS_TEST_CASES_MAP", "most_complex_example_of_this_test_cases_map", "most-complex-example-of-this-test-cases-map", "MostComplexExampleOfThisTestCasesMap", "Most-Complex-Example-Of-This-Test-Cases-Map", "mostcomplexexampleofthistestcasesmap", "MOST-COMPLEX-EXAMPLE-OF-THIS-TEST-CASES-MAP"],
];
describe("convert()", () => {
it("convert(\"...\", {...})", () => {
assert.equal(caser.convert("HTMLElement", {separator: ":"}, false), "html:element");
assert.equal(caser.convert("HTMLElement", {separator: ":"}, true), "HTML:element");
});
describe("convert(\"...\", \"...\")", () => {
for (const [data, , camel, upper, snake, kebab, pascal, header, flat, train] of testCases) {
it(`convert("${data}", "camel") == "${camel}"`, () => assert.equal(caser.convert(data, "camel", false), camel));
it(`convert("${data}", "header") == "${header}"`, () => assert.equal(caser.convert(data, "header", false), header));
it(`convert("${data}", "kebab") == "${kebab}"`, () => assert.equal(caser.convert(data, "kebab", false), kebab));
it(`convert("${data}", "pascal") == "${pascal}"`, () => assert.equal(caser.convert(data, "pascal", false), pascal));
it(`convert("${data}", "snake") == "${snake}"`, () => assert.equal(caser.convert(data, "snake", false), snake));
it(`convert("${data}", "upper") == "${upper}"`, () => assert.equal(caser.convert(data, "upper", false), upper));
it(`convert("${data}", "flat") == "${flat}"`, () => assert.equal(caser.convert(data, "flat", false), flat));
it(`convert("${data}", "train") == "${train}"`, () => assert.equal(caser.convert(data, "train", false), train));
}
});
});
describe("split(string)", () => testCases.forEach(v => it(`split("${v[0]}") == [${v[1].map(s => `"${s}"`).join(", ")}]`, () => assert.deepStrictEqual(caser.split(v[0]), v[1]))));
// TODO
describe("detect()", () => {
it("Should return \"flat\" when the string is written in flat case", () => {
assert.equal(caser.detect("flatcase"), "flat");
});
it("Should return \"camel\" when the string is written in camel case", () => {
assert.equal(caser.detect("camelCase"), "camel");
});
it("Should return \"header\" when the string is written in header case", () => {
assert.equal(caser.detect("Header-Case"), "header");
});
it("Should return \"kebab\" when the string is written in kebab case", () => {
assert.equal(caser.detect("kebab-case"), "kebab");
});
it("Should return \"pascal\" when the string is written in pascal case", () => {
assert.equal(caser.detect("PascalCase"), "pascal");
});
it("Should return \"snake\" when the string is written in snake case", () => {
assert.equal(caser.detect("snake_case"), "snake");
});
it("Should return \"upper\" when the string is written in upper case", () => {
assert.equal(caser.detect("UPPER_CASE"), "upper");
});
it("Should return \"train\" when the string is written in train case", () => {
assert.equal(caser.detect("TRAIN-CASE"), "train");
});
it("Should return null when there are multiple different separators", () => {
assert.equal(caser.detect("Un_KnownCase"), null);
});
it("Should return null for an arbitrary string", () => {
assert.equal(caser.detect("This is a string"), null);
});
it("Should return null for an empty string", () => {
assert.equal(caser.detect(""), null);
});
});