summaryrefslogtreecommitdiff
path: root/llama.cpp/tools/server/webui/tests/unit/model-names.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'llama.cpp/tools/server/webui/tests/unit/model-names.test.ts')
-rw-r--r--llama.cpp/tools/server/webui/tests/unit/model-names.test.ts51
1 files changed, 51 insertions, 0 deletions
diff --git a/llama.cpp/tools/server/webui/tests/unit/model-names.test.ts b/llama.cpp/tools/server/webui/tests/unit/model-names.test.ts
new file mode 100644
index 0000000..40c5a0e
--- /dev/null
+++ b/llama.cpp/tools/server/webui/tests/unit/model-names.test.ts
@@ -0,0 +1,51 @@
+import { describe, expect, it } from 'vitest';
+import { isValidModelName, normalizeModelName } from '$lib/utils/model-names';
+
+describe('normalizeModelName', () => {
+ it('preserves Hugging Face org/model format (single slash)', () => {
+ // Single slash is treated as Hugging Face format and preserved
+ expect(normalizeModelName('meta-llama/Llama-3.1-8B')).toBe('meta-llama/Llama-3.1-8B');
+ expect(normalizeModelName('models/model-name-1')).toBe('models/model-name-1');
+ });
+
+ it('extracts filename from multi-segment paths', () => {
+ // Multiple slashes -> extract just the filename
+ expect(normalizeModelName('path/to/model/model-name-2')).toBe('model-name-2');
+ expect(normalizeModelName('/absolute/path/to/model')).toBe('model');
+ });
+
+ it('extracts filename from backslash paths', () => {
+ expect(normalizeModelName('C\\Models\\model-name-1')).toBe('model-name-1');
+ expect(normalizeModelName('path\\to\\model\\model-name-2')).toBe('model-name-2');
+ });
+
+ it('handles mixed path separators', () => {
+ expect(normalizeModelName('path/to\\model/model-name-2')).toBe('model-name-2');
+ });
+
+ it('returns simple names as-is', () => {
+ expect(normalizeModelName('simple-model')).toBe('simple-model');
+ expect(normalizeModelName('model-name-2')).toBe('model-name-2');
+ });
+
+ it('trims whitespace', () => {
+ expect(normalizeModelName(' model-name ')).toBe('model-name');
+ });
+
+ it('returns empty string for empty input', () => {
+ expect(normalizeModelName('')).toBe('');
+ expect(normalizeModelName(' ')).toBe('');
+ });
+});
+
+describe('isValidModelName', () => {
+ it('returns true for valid names', () => {
+ expect(isValidModelName('model')).toBe(true);
+ expect(isValidModelName('path/to/model.bin')).toBe(true);
+ });
+
+ it('returns false for empty values', () => {
+ expect(isValidModelName('')).toBe(false);
+ expect(isValidModelName(' ')).toBe(false);
+ });
+});