From eecd49ed495952de061d50b1f7fddc1a0d06c2c6 Mon Sep 17 00:00:00 2001 From: Philipp Burckhardt Date: Tue, 20 Jun 2023 10:54:53 -0400 Subject: [PATCH] chore: rename file and add tests --- ...e-output.ts.md => parse-output.test.ts.md} | 41 +++++++++++++- .../test/llms/parse-output.test.ts.snap | Bin 0 -> 1482 bytes .../.snapshots/test/llms/parse-output.ts.snap | Bin 1347 -> 0 bytes .../{parse-output.ts => parse-output.test.ts} | 52 +++++++++++++++++- 4 files changed, 90 insertions(+), 3 deletions(-) rename test/.snapshots/test/llms/{parse-output.ts.md => parse-output.test.ts.md} (84%) create mode 100644 test/.snapshots/test/llms/parse-output.test.ts.snap delete mode 100644 test/.snapshots/test/llms/parse-output.ts.snap rename test/llms/{parse-output.ts => parse-output.test.ts} (81%) diff --git a/test/.snapshots/test/llms/parse-output.ts.md b/test/.snapshots/test/llms/parse-output.test.ts.md similarity index 84% rename from test/.snapshots/test/llms/parse-output.ts.md rename to test/.snapshots/test/llms/parse-output.test.ts.md index 54a5033..e9dba80 100644 --- a/test/.snapshots/test/llms/parse-output.ts.md +++ b/test/.snapshots/test/llms/parse-output.test.ts.md @@ -1,6 +1,6 @@ -# Snapshot report for `test/llms/parse-output.ts` +# Snapshot report for `test/llms/parse-output.test.ts` -The actual snapshot is saved in `parse-output.ts.snap`. +The actual snapshot is saved in `parse-output.test.ts.snap`. Generated by [AVA](https://avajs.dev). @@ -224,3 +224,40 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 'Invalid number output: NotANumber' + +## parseOutput - handles array correctly + +> should parse and return [1, 2, 3] for "[1, 2, 3]" + + [ + 1, + 2, + 3, + ] + +## parseOutput - handles object correctly + +> should parse and return {"a": 1, "b": "two"} for "{"a": 1, "b": "two"}" + + { + a: 1, + b: 'two', + } + +## parseOutput - handles boolean correctly + +> should parse and return true for "True" + + true + +## parseOutput - handles number correctly + +> should parse and return 123.45 for "123.45" + + 123.45 + +## parseOutput - throws error for invalid data + +> Snapshot 1 + + 'Invalid number output: not a number' diff --git a/test/.snapshots/test/llms/parse-output.test.ts.snap b/test/.snapshots/test/llms/parse-output.test.ts.snap new file mode 100644 index 0000000000000000000000000000000000000000..b0f9151757d72dcb7fb25a3f5b5525ffc6145f22 GIT binary patch literal 1482 zcmV;*1vUCXRzVl2lxjMDT(HWjv@vv>Q`zoE8>@nxeF72#IJ? zE{dXdZI5F&+udk(O%erHYLVcT2VQtU(DEmE;(U1 zX1;UIcg`H|lTOq1TL;1SPf6GdU2?v17GBM!5k`8`?UwU1%>EGYdu~I>0bw zZ*Fd`U_4haN(JKukSG>jX5F%3h0%bO0+0hT*6X*-%pj$%a}2rj>$;9c&`pWPe&%f>j3v z=06gcOPAq!1=_W7c)?!J8^%X`A@nGF8f=f^577NduAkXz-Un|Q#ke~^KOc$x3L?Ly z#Y(E!i_xBQOy{9phAz}iH>E>`Vcts_<`j%zqx!%^r(g*iSp#kz-Gt=s2RYmotPT2< z`hBlW+NgPgLUJ6QH6o`Oq7r$hOSmei7oao4>YEd=Iy%r!&(+XQ*9jNFKdxKF{|~C~ zPDpidHaHpnhq2SOvOO=7U}VNJ6h6!g1&^J5==5lSn$$la9$Met+MFP<-_<$h#srSZ ziv=*zYIQi!w^y;Xbn;tMO{KkRaoGmE)#4+JD55XoP$fh zPwE==XQCNvG%HBuNTzbYVoEX7gzwH&;k)6z!BEwR*(^n;<&)x)@s@`1VVC+x0V0us z*tR_{S;Gto{^$ue+)8Y?N@2lRyd}hk;b9}}`5|(WwNM;%%Mk>gEHa8GKbq7A*<<0n zZchzhaC7`;=l84rSUU(9-c9R^TFMN8C7V?}2Bz{@cw_d& z3JkJ%$Y{hIoJU5(&SPPPQNC*(Ws5`r`ii zI0gZ!_M$MwE2=3P7Pmvg!kR^Yibb!giTnb zz5Amn3BDHNzpZRgURtTGi1pR9617+j{({xKlhR~*61=UDpejk=Mf=7a*!06yev~}^ z0#AF|Z*n@*J^By7ztx3NBgpA*59%jn{u&$kO}&=l#>i3A`Wr1KCRqjlPSd=Qq3K2k%Rj*r5BwASF}yH)w|if{JD=et6;U>~o}JzM z&CG9R$9X!iY`1sl{qT(P5x42d>XFGjy3Uw+x-;fSV~$tw&~*AX_3&4wJ?djqta-TS zGDdscJ{@_EdE^aU?tS~L-#5AWgTjwfa)E18Zb6t?7?^iEi9vk{{n>6tl4Z< z&5rW5(RE)2DrG zonlT;_<198njuLd-x<=t6g=|qxncFq60G)LXr$NL_|DMemmog2-6H=Fs_&JgIs_Yn z48J@KdZzBk@ihdQiAsf!i&DW6?>;g|%)=IQ52=GUcXzf+6!!aBfw@s4Fh#ilE?VTr zuHd+I(ACgE0;I$nW&;6b5@v*w2!TZTTMXsGhw!`(;~tC=j0ub%XCZE+^Py&HxJ*V= zBehzTB}!BeMat5hd`mNOC`zG325mq|V|YjzZAlM2&Z-2vFb?Og1Q+1aAJf$g^B4RT zeYz?r<7lpNz+%RTup~HLm=c^u_9v04KC?xMPV2|j731{`#`7U_k3CF%2Z>`xPP~VS z2>#8}z;WHsagE9{x^zpbN9kc;;D-Y6E3PoZNp+YnQuLX-PgJJLz z5Ub;fGQO<3qRO=*swk3_YgW!FZ*G<2jo;A(28*jMLybI7JbL_}ctir!#vJ=n4V0wU zMiIU8?*HenHr*_`VFZtGKqNd}s1hsEx<6yqH4NEvS}>l#_;t30^%UNaJ)r@UJRS-f zi2xUo5gA1+YzV4o(lOr^IA$(JW)iZPkMVXS@lS;uI!2c(b_a@tv8!1I=V83})ZzIa zjL&8VWr{?zX(yeynat$@&uJ24{U`ns+Fd6+8aryiKAql zhZ*@d`)=ReDA;!~Z=aa8LyNBzTRbprZ*G&9B!o9pJP~IF7;cDZ2KW*?*SB`F%vL*b z?oNN&ni1-J$^{-M-5FcK!E&F0fpk*jH|R+e+v7(TWmDcCIh-C)R^)wo|9l#PfKvO8 zbj52)S9J8i4;`IkZ2DVndOf*mr5kL*VwURXb5IX#*W@KI@5Wxgh#DQe-O;nd?=LCv z?GXR%!~yk{Zo4b@x6($mLoK_bwS=3$@ F006kQgMI)2 diff --git a/test/llms/parse-output.ts b/test/llms/parse-output.test.ts similarity index 81% rename from test/llms/parse-output.ts rename to test/llms/parse-output.test.ts index 94ee932..267e57f 100644 --- a/test/llms/parse-output.ts +++ b/test/llms/parse-output.test.ts @@ -5,7 +5,8 @@ import { parseArrayOutput, parseBooleanOutput, parseNumberOutput, - parseObjectOutput + parseObjectOutput, + parseOutput } from '@/llms/parse-output' test('parseArrayOutput - handles valid arrays correctly', (t) => { @@ -191,3 +192,52 @@ test('parseNumberOutput - throws error for invalid outputs', (t) => { t.snapshot(error?.message) }) + +test('parseOutput - handles arrays correctly', (t) => { + const arraySchema = z.array(z.number()) + const output = '[1, 2, 3]' + const result = parseOutput(output, arraySchema) + + t.snapshot(result, 'should parse and return [1, 2, 3] for "[1, 2, 3]"') +}) + +test('parseOutput - handles objects correctly', (t) => { + const objectSchema = z.object({ a: z.number(), b: z.string() }) + const output = '{"a": 1, "b": "two"}' + const result = parseOutput(output, objectSchema) + + t.snapshot( + result, + 'should parse and return {"a": 1, "b": "two"} for "{"a": 1, "b": "two"}"' + ) +}) + +test('parseOutput - handles booleans correctly', (t) => { + const booleanSchema = z.boolean() + const output = 'True' + const result = parseOutput(output, booleanSchema) + + t.snapshot(result, 'should parse and return true for "True"') +}) + +test('parseOutput - handles numbers correctly', (t) => { + const numberSchema = z.number() + const output = '123.45' + const result = parseOutput(output, numberSchema) + + t.snapshot(result, 'should parse and return 123.45 for "123.45"') +}) + +test('parseOutput - throws error for invalid data', (t) => { + const numberSchema = z.number() + const output = 'not a number' + + const error = t.throws( + () => { + parseOutput(output, numberSchema) + }, + { instanceOf: Error } + ) + + t.snapshot(error?.message) +})