Skip to content

Commit 538b890

Browse files
committed
checkpoint
1 parent 10e4e4c commit 538b890

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

FirebaseAI/Tests/Unit/GenerativeModelGoogleAITests.swift

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,54 @@ final class GenerativeModelGoogleAITests: XCTestCase {
337337
XCTAssertEqual(usageMetadata.toolUsePromptTokenCount, 160)
338338
}
339339

340+
func testGenerateContent_success_urlContext() async throws {
341+
MockURLProtocol.requestHandler = try GenerativeModelTestUtil.httpRequestHandler(
342+
forResource: "unary-success-url-context",
343+
withExtension: "json",
344+
subdirectory: googleAISubdirectory
345+
)
346+
347+
let response = try await model.generateContent(testPrompt)
348+
349+
XCTAssertEqual(response.candidates.count, 1)
350+
let candidate = try XCTUnwrap(response.candidates.first)
351+
let urlContextMetadata = try XCTUnwrap(candidate.urlContextMetadata)
352+
XCTAssertEqual(urlContextMetadata.urlMetadata.count, 1)
353+
let urlMetadata = try XCTUnwrap(urlContextMetadata.urlMetadata.first)
354+
let retrievedURL = try XCTUnwrap(urlMetadata.retrievedURL)
355+
XCTAssertEqual(
356+
retrievedURL,
357+
URL(string: "https://berkshirehathaway.com")
358+
)
359+
XCTAssertEqual(urlMetadata.retrievalStatus, .success)
360+
let usageMetadata = try XCTUnwrap(response.usageMetadata)
361+
XCTAssertEqual(usageMetadata.toolUsePromptTokenCount, 424)
362+
}
363+
364+
365+
func testGenerateContent_success_urlContext_mixedValidity() async throws {
366+
MockURLProtocol.requestHandler = try GenerativeModelTestUtil.httpRequestHandler(
367+
forResource: "unary-success-url-context-mixed-validity",
368+
withExtension: "json",
369+
subdirectory: googleAISubdirectory
370+
)
371+
372+
let response = try await model.generateContent(testPrompt)
373+
374+
let candidate = try XCTUnwrap(response.candidates.first)
375+
let urlContextMetadata = try XCTUnwrap(candidate.urlContextMetadata)
376+
XCTAssertEqual(urlContextMetadata.urlMetadata.count, 3)
377+
378+
let paywallURLMetadata = try XCTUnwrap(urlContextMetadata.urlMetadata[0])
379+
XCTAssertEqual(paywallURLMetadata.retrievalStatus, .error)
380+
381+
let successURLMetadata = try XCTUnwrap(urlContextMetadata.urlMetadata[1])
382+
XCTAssertEqual(successURLMetadata.retrievalStatus, .success)
383+
384+
let errorURLMetadata = try XCTUnwrap(urlContextMetadata.urlMetadata[2])
385+
XCTAssertEqual(errorURLMetadata.retrievalStatus, .error)
386+
}
387+
340388
func testGenerateContent_failure_invalidAPIKey() async throws {
341389
let expectedStatusCode = 400
342390
MockURLProtocol.requestHandler = try GenerativeModelTestUtil.httpRequestHandler(

FirebaseAI/Tests/Unit/GenerativeModelVertexAITests.swift

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,54 @@ final class GenerativeModelVertexAITests: XCTestCase {
491491
XCTAssertEqual(usageMetadata.toolUsePromptTokenCount, 371)
492492
}
493493

494+
func testGenerateContent_success_urlContext() async throws {
495+
MockURLProtocol.requestHandler = try GenerativeModelTestUtil.httpRequestHandler(
496+
forResource: "unary-success-url-context",
497+
withExtension: "json",
498+
subdirectory: vertexSubdirectory
499+
)
500+
501+
let response = try await model.generateContent(testPrompt)
502+
503+
XCTAssertEqual(response.candidates.count, 1)
504+
let candidate = try XCTUnwrap(response.candidates.first)
505+
let urlContextMetadata = try XCTUnwrap(candidate.urlContextMetadata)
506+
XCTAssertEqual(urlContextMetadata.urlMetadata.count, 1)
507+
let urlMetadata = try XCTUnwrap(urlContextMetadata.urlMetadata.first)
508+
let retrievedURL = try XCTUnwrap(urlMetadata.retrievedURL)
509+
XCTAssertEqual(
510+
retrievedURL,
511+
URL(string: "https://berkshirehathaway.com")
512+
)
513+
XCTAssertEqual(urlMetadata.retrievalStatus, .success)
514+
let usageMetadata = try XCTUnwrap(response.usageMetadata)
515+
XCTAssertEqual(usageMetadata.toolUsePromptTokenCount, 34)
516+
XCTAssertEqual(usageMetadata.thoughtsTokenCount, 36)
517+
}
518+
519+
func testGenerateContent_success_urlContext_mixedValidity() async throws {
520+
MockURLProtocol.requestHandler = try GenerativeModelTestUtil.httpRequestHandler(
521+
forResource: "unary-success-url-context-mixed-validity",
522+
withExtension: "json",
523+
subdirectory: vertexSubdirectory
524+
)
525+
526+
let response = try await model.generateContent(testPrompt)
527+
528+
let candidate = try XCTUnwrap(response.candidates.first)
529+
let urlContextMetadata = try XCTUnwrap(candidate.urlContextMetadata)
530+
XCTAssertEqual(urlContextMetadata.urlMetadata.count, 3)
531+
532+
let paywallURLMetadata = try XCTUnwrap(urlContextMetadata.urlMetadata[0])
533+
XCTAssertEqual(paywallURLMetadata.retrievalStatus, .error)
534+
535+
let successURLMetadata = try XCTUnwrap(urlContextMetadata.urlMetadata[1])
536+
XCTAssertEqual(successURLMetadata.retrievalStatus, .success)
537+
538+
let errorURLMetadata = try XCTUnwrap(urlContextMetadata.urlMetadata[2])
539+
XCTAssertEqual(errorURLMetadata.retrievalStatus, .error)
540+
}
541+
494542
func testGenerateContent_success_image_invalidSafetyRatingsIgnored() async throws {
495543
MockURLProtocol.requestHandler = try GenerativeModelTestUtil.httpRequestHandler(
496544
forResource: "unary-success-image-invalid-safety-ratings",

0 commit comments

Comments
 (0)