@@ -298,3 +298,225 @@ func TestNewPartFromCodeExecutionResult(t *testing.T) {
298
298
t .Fatalf ("expected %v, got %v" , expected , result )
299
299
}
300
300
}
301
+
302
+ func TestNewUserContentFromParts (t * testing.T ) {
303
+ parts := []* Part {
304
+ {Text : "Hello, world!" },
305
+ {Text : "This is a test." },
306
+ }
307
+ expected := & Content {
308
+ Parts : parts ,
309
+ Role : "user" ,
310
+ }
311
+
312
+ result := NewUserContentFromParts (parts )
313
+ if ! reflect .DeepEqual (result , expected ) {
314
+ t .Fatalf ("expected %v, got %v" , expected , result )
315
+ }
316
+ }
317
+
318
+ func TestNewUserContentFromText (t * testing.T ) {
319
+ text := "Hello, world!"
320
+ expected := & Content {
321
+ Parts : []* Part {
322
+ {Text : "Hello, world!" },
323
+ },
324
+ Role : "user" ,
325
+ }
326
+
327
+ result := NewUserContentFromText (text )
328
+ if ! reflect .DeepEqual (result , expected ) {
329
+ t .Fatalf ("expected %v, got %v" , expected , result )
330
+ }
331
+ }
332
+
333
+ func TestNewUserContentFromBytes (t * testing.T ) {
334
+ data := []byte {0x01 , 0x02 , 0x03 }
335
+ mimeType := "application/octet-stream"
336
+ expected := & Content {
337
+ Parts : []* Part {
338
+ {InlineData : & Blob {Data : data , MIMEType : mimeType }},
339
+ },
340
+ Role : "user" ,
341
+ }
342
+
343
+ result := NewUserContentFromBytes (data , mimeType )
344
+ if ! reflect .DeepEqual (result , expected ) {
345
+ t .Fatalf ("expected %v, got %v" , expected , result )
346
+ }
347
+ }
348
+
349
+ func TestNewUserContentFromURI (t * testing.T ) {
350
+ fileURI := "http://example.com/video.mp4"
351
+ mimeType := "video/mp4"
352
+ expected := & Content {
353
+ Parts : []* Part {
354
+ {FileData : & FileData {FileURI : fileURI , MIMEType : mimeType }},
355
+ },
356
+ Role : "user" ,
357
+ }
358
+
359
+ result := NewUserContentFromURI (fileURI , mimeType )
360
+ if ! reflect .DeepEqual (result , expected ) {
361
+ t .Fatalf ("expected %v, got %v" , expected , result )
362
+ }
363
+ }
364
+
365
+ func TestNewUserContentFromFunctionResponse (t * testing.T ) {
366
+ funcName := "myFunction"
367
+ response := map [string ]any {"result" : "success" }
368
+ expected := & Content {
369
+ Parts : []* Part {
370
+ {FunctionResponse : & FunctionResponse {Name : funcName , Response : response }},
371
+ },
372
+ Role : "user" ,
373
+ }
374
+
375
+ result := NewUserContentFromFunctionResponse (funcName , response )
376
+ if ! reflect .DeepEqual (result , expected ) {
377
+ t .Fatalf ("expected %v, got %v" , expected , result )
378
+ }
379
+ }
380
+
381
+ func TestNewUserContentFromExecutableCode (t * testing.T ) {
382
+ code := "print('Hello, world!')"
383
+ language := LanguagePython
384
+ expected := & Content {
385
+ Parts : []* Part {
386
+ {ExecutableCode : & ExecutableCode {Code : code , Language : language }},
387
+ },
388
+ Role : "user" ,
389
+ }
390
+
391
+ result := NewUserContentFromExecutableCode (code , language )
392
+ if ! reflect .DeepEqual (result , expected ) {
393
+ t .Fatalf ("expected %v, got %v" , expected , result )
394
+ }
395
+ }
396
+
397
+ func TestNewUserContentFromCodeExecutionResult (t * testing.T ) {
398
+ outcome := OutcomeOK
399
+ output := "Execution output"
400
+ expected := & Content {
401
+ Parts : []* Part {
402
+ {CodeExecutionResult : & CodeExecutionResult {Outcome : outcome , Output : output }},
403
+ },
404
+ Role : "user" ,
405
+ }
406
+
407
+ result := NewUserContentFromCodeExecutionResult (outcome , output )
408
+ if ! reflect .DeepEqual (result , expected ) {
409
+ t .Fatalf ("expected %v, got %v" , expected , result )
410
+ }
411
+ }
412
+
413
+ func TestNewModelContentFromParts (t * testing.T ) {
414
+ parts := []* Part {
415
+ {Text : "Hello, world!" },
416
+ {Text : "This is a test." },
417
+ }
418
+ expected := & Content {
419
+ Parts : parts ,
420
+ Role : "model" ,
421
+ }
422
+
423
+ result := NewModelContentFromParts (parts )
424
+ if ! reflect .DeepEqual (result , expected ) {
425
+ t .Fatalf ("expected %v, got %v" , expected , result )
426
+ }
427
+ }
428
+
429
+ func TestNewModelContentFromText (t * testing.T ) {
430
+ text := "Hello, world!"
431
+ expected := & Content {
432
+ Parts : []* Part {
433
+ {Text : "Hello, world!" },
434
+ },
435
+ Role : "model" ,
436
+ }
437
+
438
+ result := NewModelContentFromText (text )
439
+ if ! reflect .DeepEqual (result , expected ) {
440
+ t .Fatalf ("expected %v, got %v" , expected , result )
441
+ }
442
+ }
443
+
444
+ func TestNewModelContentFromBytes (t * testing.T ) {
445
+ data := []byte {0x01 , 0x02 , 0x03 }
446
+ mimeType := "application/octet-stream"
447
+ expected := & Content {
448
+ Parts : []* Part {
449
+ {InlineData : & Blob {Data : data , MIMEType : mimeType }},
450
+ },
451
+ Role : "model" ,
452
+ }
453
+
454
+ result := NewModelContentFromBytes (data , mimeType )
455
+ if ! reflect .DeepEqual (result , expected ) {
456
+ t .Fatalf ("expected %v, got %v" , expected , result )
457
+ }
458
+ }
459
+
460
+ func TestNewModelContentFromURI (t * testing.T ) {
461
+ fileURI := "http://example.com/video.mp4"
462
+ mimeType := "video/mp4"
463
+ expected := & Content {
464
+ Parts : []* Part {
465
+ {FileData : & FileData {FileURI : fileURI , MIMEType : mimeType }},
466
+ },
467
+ Role : "model" ,
468
+ }
469
+
470
+ result := NewModelContentFromURI (fileURI , mimeType )
471
+ if ! reflect .DeepEqual (result , expected ) {
472
+ t .Fatalf ("expected %v, got %v" , expected , result )
473
+ }
474
+ }
475
+
476
+ func TestNewModelContentFromFunctionCall (t * testing.T ) {
477
+ funcName := "myFunction"
478
+ args := map [string ]any {"arg1" : "value1" }
479
+ expected := & Content {
480
+ Parts : []* Part {
481
+ {FunctionCall : & FunctionCall {Name : funcName , Args : args }},
482
+ },
483
+ Role : "model" ,
484
+ }
485
+
486
+ result := NewModelContentFromFunctionCall (funcName , args )
487
+ if ! reflect .DeepEqual (result , expected ) {
488
+ t .Fatalf ("expected %v, got %v" , expected , result )
489
+ }
490
+ }
491
+
492
+ func TestNewModelContentFromExecutableCode (t * testing.T ) {
493
+ code := "print('Hello, world!')"
494
+ language := LanguagePython
495
+ expected := & Content {
496
+ Parts : []* Part {
497
+ {ExecutableCode : & ExecutableCode {Code : code , Language : language }},
498
+ },
499
+ Role : "model" ,
500
+ }
501
+
502
+ result := NewModelContentFromExecutableCode (code , language )
503
+ if ! reflect .DeepEqual (result , expected ) {
504
+ t .Fatalf ("expected %v, got %v" , expected , result )
505
+ }
506
+ }
507
+
508
+ func TestNewModelContentFromCodeExecutionResult (t * testing.T ) {
509
+ outcome := OutcomeOK
510
+ output := "Execution output"
511
+ expected := & Content {
512
+ Parts : []* Part {
513
+ {CodeExecutionResult : & CodeExecutionResult {Outcome : outcome , Output : output }},
514
+ },
515
+ Role : "model" ,
516
+ }
517
+
518
+ result := NewModelContentFromCodeExecutionResult (outcome , output )
519
+ if ! reflect .DeepEqual (result , expected ) {
520
+ t .Fatalf ("expected %v, got %v" , expected , result )
521
+ }
522
+ }
0 commit comments