@@ -24,6 +24,175 @@ final class ImageGenerationParametersTests: XCTestCase {
2424 encoder. outputFormatting = [ . sortedKeys, . prettyPrinted, . withoutEscapingSlashes]
2525 }
2626
27+ func testDefaultParameters_noneSpecified( ) throws {
28+ let expectedParameters = ImageGenerationParameters (
29+ sampleCount: 1 ,
30+ storageURI: nil ,
31+ negativePrompt: nil ,
32+ aspectRatio: nil ,
33+ safetyFilterLevel: nil ,
34+ personGeneration: nil ,
35+ outputOptions: nil ,
36+ addWatermark: nil ,
37+ includeResponsibleAIFilterReason: true
38+ )
39+
40+ let parameters = ImagenModel . imageGenerationParameters (
41+ storageURI: nil ,
42+ generationConfig: nil ,
43+ safetySettings: nil
44+ )
45+
46+ XCTAssertEqual ( parameters, expectedParameters)
47+ }
48+
49+ func testDefaultParameters_includeStorageURI( ) throws {
50+ let storageURI = " gs://test-bucket/path "
51+ let expectedParameters = ImageGenerationParameters (
52+ sampleCount: 1 ,
53+ storageURI: storageURI,
54+ negativePrompt: nil ,
55+ aspectRatio: nil ,
56+ safetyFilterLevel: nil ,
57+ personGeneration: nil ,
58+ outputOptions: nil ,
59+ addWatermark: nil ,
60+ includeResponsibleAIFilterReason: true
61+ )
62+
63+ let parameters = ImagenModel . imageGenerationParameters (
64+ storageURI: storageURI,
65+ generationConfig: nil ,
66+ safetySettings: nil
67+ )
68+
69+ XCTAssertEqual ( parameters, expectedParameters)
70+ }
71+
72+ func testParameters_includeGenerationConfig( ) throws {
73+ let sampleCount = 2
74+ let negativePrompt = " test-negative-prompt "
75+ let aspectRatio = ImagenAspectRatio . landscape16x9
76+ let compressionQuality = 80
77+ let imageFormat = ImagenImageFormat . jpeg ( compressionQuality: compressionQuality)
78+ let addWatermark = true
79+ let generationConfig = ImagenGenerationConfig (
80+ numberOfImages: sampleCount,
81+ negativePrompt: negativePrompt,
82+ aspectRatio: aspectRatio,
83+ imageFormat: imageFormat,
84+ addWatermark: addWatermark
85+ )
86+ let expectedParameters = ImageGenerationParameters (
87+ sampleCount: sampleCount,
88+ storageURI: nil ,
89+ negativePrompt: negativePrompt,
90+ aspectRatio: aspectRatio. rawValue,
91+ safetyFilterLevel: nil ,
92+ personGeneration: nil ,
93+ outputOptions: ImageGenerationOutputOptions (
94+ mimeType: imageFormat. mimeType,
95+ compressionQuality: imageFormat. compressionQuality
96+ ) ,
97+ addWatermark: addWatermark,
98+ includeResponsibleAIFilterReason: true
99+ )
100+
101+ let parameters = ImagenModel . imageGenerationParameters (
102+ storageURI: nil ,
103+ generationConfig: generationConfig,
104+ safetySettings: nil
105+ )
106+
107+ XCTAssertEqual ( parameters, expectedParameters)
108+ XCTAssertEqual ( parameters. aspectRatio, " 16:9 " )
109+ XCTAssertEqual ( parameters. outputOptions? . mimeType, " image/jpeg " )
110+ XCTAssertEqual ( parameters. outputOptions? . compressionQuality, compressionQuality)
111+ }
112+
113+ func testDefaultParameters_includeSafetySettings( ) throws {
114+ let safetyFilterLevel = ImagenSafetySettings . SafetyFilterLevel. blockOnlyHigh
115+ let personGeneration = ImagenSafetySettings . PersonGeneration. allowAll
116+ let includeFilterReason = false
117+ let safetySettings = ImagenSafetySettings (
118+ safetyFilterLevel: safetyFilterLevel,
119+ includeFilterReason: includeFilterReason,
120+ personGeneration: personGeneration
121+ )
122+ let expectedParameters = ImageGenerationParameters (
123+ sampleCount: 1 ,
124+ storageURI: nil ,
125+ negativePrompt: nil ,
126+ aspectRatio: nil ,
127+ safetyFilterLevel: safetyFilterLevel. rawValue,
128+ personGeneration: personGeneration. rawValue,
129+ outputOptions: nil ,
130+ addWatermark: nil ,
131+ includeResponsibleAIFilterReason: includeFilterReason
132+ )
133+
134+ let parameters = ImagenModel . imageGenerationParameters (
135+ storageURI: nil ,
136+ generationConfig: nil ,
137+ safetySettings: safetySettings
138+ )
139+
140+ XCTAssertEqual ( parameters, expectedParameters)
141+ XCTAssertEqual ( parameters. safetyFilterLevel, " block_only_high " )
142+ XCTAssertEqual ( parameters. personGeneration, " allow_all " )
143+ }
144+
145+ func testParameters_includeAll( ) throws {
146+ let storageURI = " gs://test-bucket/path "
147+ let sampleCount = 4
148+ let negativePrompt = " test-negative-prompt "
149+ let aspectRatio = ImagenAspectRatio . portrait3x4
150+ let imageFormat = ImagenImageFormat . png ( )
151+ let addWatermark = false
152+ let generationConfig = ImagenGenerationConfig (
153+ numberOfImages: sampleCount,
154+ negativePrompt: negativePrompt,
155+ aspectRatio: aspectRatio,
156+ imageFormat: imageFormat,
157+ addWatermark: addWatermark
158+ )
159+ let safetyFilterLevel = ImagenSafetySettings . SafetyFilterLevel. blockNone
160+ let personGeneration = ImagenSafetySettings . PersonGeneration. blockAll
161+ let includeFilterReason = false
162+ let safetySettings = ImagenSafetySettings (
163+ safetyFilterLevel: safetyFilterLevel,
164+ includeFilterReason: includeFilterReason,
165+ personGeneration: personGeneration
166+ )
167+ let expectedParameters = ImageGenerationParameters (
168+ sampleCount: sampleCount,
169+ storageURI: storageURI,
170+ negativePrompt: negativePrompt,
171+ aspectRatio: aspectRatio. rawValue,
172+ safetyFilterLevel: safetyFilterLevel. rawValue,
173+ personGeneration: personGeneration. rawValue,
174+ outputOptions: ImageGenerationOutputOptions (
175+ mimeType: imageFormat. mimeType,
176+ compressionQuality: imageFormat. compressionQuality
177+ ) ,
178+ addWatermark: addWatermark,
179+ includeResponsibleAIFilterReason: includeFilterReason
180+ )
181+
182+ let parameters = ImagenModel . imageGenerationParameters (
183+ storageURI: storageURI,
184+ generationConfig: generationConfig,
185+ safetySettings: safetySettings
186+ )
187+
188+ XCTAssertEqual ( parameters, expectedParameters)
189+ XCTAssertEqual ( parameters. aspectRatio, " 3:4 " )
190+ XCTAssertEqual ( parameters. safetyFilterLevel, " block_none " )
191+ XCTAssertEqual ( parameters. personGeneration, " dont_allow " )
192+ XCTAssertEqual ( parameters. outputOptions? . mimeType, " image/png " )
193+ XCTAssertNil ( parameters. outputOptions? . compressionQuality)
194+ }
195+
27196 // MARK: - Encoding Tests
28197
29198 func testEncodeParameters_allSpecified( ) throws {
0 commit comments