diff --git a/FirebaseVertexAI/Sources/Types/Internal/Imagen/ImageGenerationInstance.swift b/FirebaseVertexAI/Sources/Types/Internal/Imagen/ImageGenerationInstance.swift new file mode 100644 index 00000000000..6025760fce8 --- /dev/null +++ b/FirebaseVertexAI/Sources/Types/Internal/Imagen/ImageGenerationInstance.swift @@ -0,0 +1,23 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +@available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, watchOS 8.0, *) +struct ImageGenerationInstance { + let prompt: String +} + +// MARK: - Codable Conformance + +@available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, watchOS 8.0, *) +extension ImageGenerationInstance: Encodable {} diff --git a/FirebaseVertexAI/Tests/Unit/Types/Imagen/ImageGenerationInstanceTests.swift b/FirebaseVertexAI/Tests/Unit/Types/Imagen/ImageGenerationInstanceTests.swift new file mode 100644 index 00000000000..d179bc268a1 --- /dev/null +++ b/FirebaseVertexAI/Tests/Unit/Types/Imagen/ImageGenerationInstanceTests.swift @@ -0,0 +1,42 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import XCTest + +@testable import FirebaseVertexAI + +@available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, watchOS 8.0, *) +final class ImageGenerationInstanceTests: XCTestCase { + let encoder = JSONEncoder() + + override func setUp() { + encoder.outputFormatting = [.sortedKeys, .prettyPrinted] + } + + // MARK: - Encoding Tests + + func testEncodeInstance() throws { + let prompt = "An astronaut riding a horse." + let instance = ImageGenerationInstance(prompt: prompt) + + let jsonData = try encoder.encode(instance) + + let json = try XCTUnwrap(String(data: jsonData, encoding: .utf8)) + XCTAssertEqual(json, """ + { + "prompt" : "\(prompt)" + } + """) + } +}