Files
openide/platform/platform-tests/testSrc/com/intellij/psi/NameUtilTest.java
Tagir Valeev 832b80f75b [util] NameUtilCore.uniqName
GitOrigin-RevId: 9ff6d21d5e1efc735239d79a80c8993f476d7a5d
2024-03-16 12:19:24 +00:00

87 lines
3.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.psi;
import com.intellij.psi.codeStyle.NameUtil;
import com.intellij.util.text.NameUtilCore;
import org.junit.Test;
import java.util.Arrays;
import java.util.Set;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class NameUtilTest {
@Test
public void testSplitIntoWords1() {
assertSplitEquals(new String[]{"I", "Base"}, "IBase");
}
@Test
public void testSplitIntoWords2() {
assertSplitEquals(new String[]{"Order", "Index"}, "OrderIndex");
}
@Test
public void testSplitIntoWords3() {
assertSplitEquals(new String[]{"order", "Index"}, "orderIndex");
}
@Test
public void testSplitIntoWords4() {
assertSplitEquals(new String[]{"Order", "Index"}, "Order_Index");
}
@Test
public void testSplitIntoWords5() {
assertSplitEquals(new String[]{"ORDER", "INDEX"}, "ORDER_INDEX");
}
@Test
public void testSplitIntoWords6() {
assertSplitEquals(new String[]{"gg", "J"}, "ggJ");
}
@Test
public void testSplitIntoWordsCN() {
assertSplitEquals(new String[]{"", "", "", "", "", "2"}, "测试打补丁2");
}
@Test
public void testSplitIntoWordsJP() {
assertSplitEquals(
new String[]{"ローマ", "", "", "", "アルファベット", "", "ラテン", "", "", "", "", "", "いて", "", "", "", "", "", "", "することもでき", "", "", "", "では", "ローマ", "", "", "", "ばれる"},
"ローマ由来のアルファベット(ラテン文字)を用いて日本語を表記することもでき、日本ではローマ字と呼ばれる");
//noinspection NonAsciiCharacters
assertSplitEquals(new String[]{"", "", "では", "", "", "", "", "", "", "", "", "", "する", "", "もあり", "", "", "", "", "philosophy", "", "ドイツ", "", "", "Philosophie", "", "", "", "", ""},
"近代では日本人が漢語を造語する例もあり、英語のphilosophy、ドイツ語のPhilosophieを指す用語");
}
@Test
public void testEmoji() {
assertSplitEquals(new String[]{"\uD83E\uDD2B", " ", "\uD83D\uDD2B", "\uD83E\uDDD2"}, "\uD83E\uDD2B \uD83D\uDD2B\uD83E\uDDD2");
}
@Test
public void testIsWordStart() {
assertTrue(NameUtilCore.isWordStart("测试打补丁", 0));
assertTrue(NameUtilCore.isWordStart("测试打补丁", 2));
}
private static void assertSplitEquals(String[] expected, String name) {
final String[] result = NameUtil.splitNameIntoWords(name);
assertEquals(Arrays.asList(expected).toString(), Arrays.asList(result).toString());
}
@Test
public void testUniqName() {
assertEquals("best", NameUtilCore.uniqName("best", Set.of("test", "test1")::contains));
assertEquals("test1", NameUtilCore.uniqName("test", Set.of("test")::contains));
assertEquals("test2", NameUtilCore.uniqName("test", Set.of("test", "test1")::contains));
assertEquals("test3", NameUtilCore.uniqName("test", Set.of("test", "test1", "test2")::contains));
assertEquals("test3", NameUtilCore.uniqName("test1", Set.of("test", "test1", "test2")::contains));
assertEquals("test3", NameUtilCore.uniqName("test2", Set.of("test", "test1", "test2")::contains));
}
}