char-fork/llama.cpp

git clone https://git.t4t.associates/char-fork/llama.cpp

Aleksander Grygierui: Improve Chat Messages rendering performance (#28460)0afb805b1

char/aliceai-t5-moe
1.4 KiB42 linesraw
1import { tryParseToolResultObject } from '$lib/utils';
2import { describe, expect, it } from 'vitest';
3
4describe('tryParseToolResultObject', () => {
5	it('returns null when no result is provided', () => {
6		expect(tryParseToolResultObject(undefined)).toBeNull();
7		expect(tryParseToolResultObject('')).toBeNull();
8	});
9
10	it('returns the parsed object when the result is JSON', () => {
11		expect(tryParseToolResultObject('{"result":"ok","bytes":42}')).toEqual({
12			bytes: 42,
13			result: 'ok'
14		});
15	});
16
17	it('returns null for JSON arrays (only objects are useful to callers)', () => {
18		expect(tryParseToolResultObject('[1,2,3]')).toBeNull();
19	});
20
21	it('returns null for JSON primitives', () => {
22		expect(tryParseToolResultObject('"raw string"')).toBeNull();
23		expect(tryParseToolResultObject('42')).toBeNull();
24	});
25
26	it('returns null for invalid JSON', () => {
27		expect(tryParseToolResultObject('not json')).toBeNull();
28		expect(tryParseToolResultObject('{bad')).toBeNull();
29	});
30});
31
32describe('tryParseToolResultObject gating', () => {
33	it('parses JSON objects that start after leading whitespace', () => {
34		expect(tryParseToolResultObject('\n  {"result":"ok"}')).toEqual({ result: 'ok' });
35	});
36
37	it('skips the parse for large plain-text results', () => {
38		// most tool results are file contents or stdout; the gate avoids a
39		// doomed JSON.parse over the whole blob
40		expect(tryParseToolResultObject(`${'stdout line\n'.repeat(2000)}`)).toBeNull();
41	});
42});