Initial commit: LoChat v1.0.0 with Gradient module
This commit is contained in:
commit
252b0a60db
86 changed files with 8922 additions and 0 deletions
|
|
@ -0,0 +1,134 @@
|
|||
package com.loki.lochat.gradient.util;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class GradientUtilTest {
|
||||
|
||||
@Test
|
||||
void isValidHex_valid() {
|
||||
assertTrue(GradientUtil.isValidHex("#FF0000"));
|
||||
assertTrue(GradientUtil.isValidHex("#00ff00"));
|
||||
assertTrue(GradientUtil.isValidHex("#3BA8FF"));
|
||||
assertTrue(GradientUtil.isValidHex("#000000"));
|
||||
assertTrue(GradientUtil.isValidHex("#FFFFFF"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void isValidHex_invalid() {
|
||||
assertFalse(GradientUtil.isValidHex("FF0000")); // без #
|
||||
assertFalse(GradientUtil.isValidHex("#FF00")); // короткий
|
||||
assertFalse(GradientUtil.isValidHex("#FF00000")); // длинный
|
||||
assertFalse(GradientUtil.isValidHex("#GGGGGG")); // невалидные символы
|
||||
assertFalse(GradientUtil.isValidHex(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
void isValidHex_null() {
|
||||
assertThrows(NullPointerException.class, () -> GradientUtil.isValidHex(null));
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyGradient_singleColor_legacy() {
|
||||
String result = GradientUtil.applyGradient("Hi", List.of("#FF0000"), true);
|
||||
assertNotNull(result);
|
||||
assertTrue(result.contains("&#ff0000"));
|
||||
assertEquals("&#ff0000H&#ff0000i", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyGradient_singleColor_minimessage() {
|
||||
String result = GradientUtil.applyGradient("Hi", List.of("#FF0000"), false);
|
||||
assertNotNull(result);
|
||||
assertTrue(result.contains("<#ff0000>"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyGradient_twoColors() {
|
||||
String result = GradientUtil.applyGradient("AB", List.of("#FF0000", "#0000FF"), true);
|
||||
assertNotNull(result);
|
||||
// Первый символ должен быть красным, последний синим
|
||||
assertTrue(result.startsWith("&#ff0000A"));
|
||||
assertTrue(result.contains("�ffB"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyGradient_emptyText() {
|
||||
String result = GradientUtil.applyGradient("", List.of("#FF0000"), true);
|
||||
assertEquals("", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyGradient_nullText() {
|
||||
String result = GradientUtil.applyGradient(null, List.of("#FF0000"), true);
|
||||
assertNull(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyGradient_emptyColors() {
|
||||
String result = GradientUtil.applyGradient("Test", List.of(), true);
|
||||
assertEquals("Test", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyGradient_nullColors() {
|
||||
String result = GradientUtil.applyGradient("Test", null, true);
|
||||
assertEquals("Test", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyGradient_multipleColors() {
|
||||
String result = GradientUtil.applyGradient("ABC", List.of("#FF0000", "#00FF00", "#0000FF"), true);
|
||||
assertNotNull(result);
|
||||
// Должен содержать цветовые коды для каждого символа
|
||||
assertTrue(result.contains("A"));
|
||||
assertTrue(result.contains("B"));
|
||||
assertTrue(result.contains("C"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void buildDisplayName_noPrefix_noColors() {
|
||||
String result = GradientUtil.buildDisplayName(null, "Player", null, true, true, "[{prefix}] ", true);
|
||||
assertEquals("Player", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void buildDisplayName_withPrefix_noColors() {
|
||||
String result = GradientUtil.buildDisplayName("VIP", "Player", null, true, true, "[{prefix}] ", true);
|
||||
assertEquals("[VIP] Player", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void buildDisplayName_noPrefix_withColors() {
|
||||
String result = GradientUtil.buildDisplayName(null, "AB", List.of("#FF0000", "#0000FF"), true, true, "[{prefix}] ", true);
|
||||
assertNotNull(result);
|
||||
assertTrue(result.contains("&#"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void buildDisplayName_withPrefix_withColors_continuous() {
|
||||
String result = GradientUtil.buildDisplayName("V", "AB", List.of("#FF0000", "#0000FF"), true, true, "[{prefix}] ", true);
|
||||
assertNotNull(result);
|
||||
// Единый градиент на всё
|
||||
assertTrue(result.contains("&#"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void buildDisplayName_withPrefix_withColors_separate() {
|
||||
String result = GradientUtil.buildDisplayName("V", "AB", List.of("#FF0000", "#0000FF"), true, false, "[{prefix}] ", true);
|
||||
assertNotNull(result);
|
||||
// Отдельные градиенты
|
||||
assertTrue(result.contains("&#"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void buildDisplayName_gradientOnlyOnNick() {
|
||||
String result = GradientUtil.buildDisplayName("VIP", "AB", List.of("#FF0000", "#0000FF"), false, false, "[{prefix}] ", true);
|
||||
assertNotNull(result);
|
||||
// Префикс без градиента
|
||||
assertTrue(result.startsWith("[VIP] "));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue