@@ -95,6 +95,33 @@ public class UserInputTests: XCTestCase {
9595 assertEqual ( expected, messages)
9696 }
9797
98+ public func testGemma4ConversionText( ) {
99+ let chat : [ Chat . Message ] = [
100+ . system( " You are a useful agent. " ) ,
101+ . user( " Tell me a story. " ) ,
102+ ]
103+
104+ let messages = Gemma4MessageGenerator ( ) . generate ( messages: chat)
105+
106+ let expected : [ [ String : any Sendable ] ] = [
107+ [
108+ " role " : " system " ,
109+ " content " : " You are a useful agent. " ,
110+ ] ,
111+ [
112+ " role " : " user " ,
113+ " content " : [
114+ [
115+ " type " : " text " ,
116+ " text " : " Tell me a story. " ,
117+ ]
118+ ] ,
119+ ] ,
120+ ]
121+
122+ assertEqual ( expected, messages)
123+ }
124+
98125 // MARK: - Mistral3 Message Generator Tests
99126
100127 public func testMistral3ConversionText( ) {
@@ -230,4 +257,41 @@ public class UserInputTests: XCTestCase {
230257 XCTAssertEqual ( userInput. images. count, 1 )
231258 }
232259
260+ public func testGemma4ConversionImage( ) {
261+ let chat : [ Chat . Message ] = [
262+ . system( " You are a useful agent. " ) ,
263+ . user(
264+ " What is this? " ,
265+ images: [
266+ . url(
267+ URL (
268+ string: " https://opensource.apple.com/images/projects/mlx.f5c59d8b.png " ) !
269+ )
270+ ] ) ,
271+ ]
272+
273+ let messages = Gemma4MessageGenerator ( ) . generate ( messages: chat)
274+
275+ let expected : [ [ String : any Sendable ] ] = [
276+ [
277+ " role " : " system " ,
278+ " content " : " You are a useful agent. " ,
279+ ] ,
280+ [
281+ " role " : " user " ,
282+ " content " : [
283+ [
284+ " type " : " image "
285+ ] ,
286+ [
287+ " type " : " text " ,
288+ " text " : " What is this? " ,
289+ ] ,
290+ ] ,
291+ ] ,
292+ ]
293+
294+ assertEqual ( expected, messages)
295+ }
296+
233297}
0 commit comments