Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions core/pom.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0"?>
<!--
Copyright 2025 Google LLC

Expand All @@ -16,19 +16,15 @@
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>0.4.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>0.4.1-SNAPSHOT</version>
<!-- {x-version-update:google-adk:current} -->
</parent>

<artifactId>google-adk</artifactId>
<name>Agent Development Kit</name>
<description>Agent Development Kit: an open-source, code-first toolkit designed to simplify building, evaluating, and deploying advanced AI agents anywhere.</description>



<dependencies>
<dependency>
<groupId>com.anthropic</groupId>
Expand Down Expand Up @@ -201,6 +197,15 @@
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-maven-plugin</artifactId>
<version>0.0.40</version>
<!--Plugin added by RoostGPT-->
</plugin>
</plugins>
<pluginManagement>
<plugins/>
</pluginManagement>
</build>
</project>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
// ********RoostGPT********
/*
Test generated by RoostGPT for test unit-java-adk using AI Type Azure Open AI and AI Model gpt-5

ROOST_METHOD_HASH=content_f95ec3ddc9
ROOST_METHOD_SIG_HASH=content_accc65ce1a


Scenario 1: Returns the same Content instance that was supplied at construction

Details:
TestName: returnsSameContentInstance
Description: Verify that the content() method returns the exact Content object that was used to build the AutoValue_MemoryEntry instance (reference identity, not a copy).

Execution:
Arrange: Create a valid Content instance (e.g., a concrete instance or a simple test double) and build a MemoryEntry via the Builder with that Content.
Act: Call content() on the built MemoryEntry.
Assert: Use JUnit assertions to confirm that the returned Content is the same object instance as the one provided during construction (reference equality).

Validation:
This assertion verifies that content() is a simple accessor returning the internal field without copying or transforming it. It ensures the method exposes the exact Content reference stored in the entry, which is important for consumers relying on object identity or avoiding unnecessary allocations.

*/

// ********RoostGPT********
package com.google.adk.memory;

import static org.junit.jupiter.api.Assertions.*;

import com.google.genai.types.Content;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;

// NOSONAR: Included as per instructions
// NOSONAR: Included as per instructions
// NOSONAR: Included as per instructions
@ExtendWith(MockitoExtension.class)
public class AutoValueMemoryEntryContentTest {

@Test
@Tag("valid")
@DisplayName("content() returns the same Content instance supplied at construction")
public void testReturnsSameContentInstance() {
final Content given = Mockito.mock(Content.class);
final String author = "test-author"; // TODO: adjust if needed
final String timestamp = "2024-01-01T00:00:00Z"; // TODO: adjust if needed
final MemoryEntry entry =
MemoryEntry.builder().content(given).author(author).timestamp(timestamp).build();
final Content actual = entry.content();
assertSame(
(Content) given,
(Content) actual,
"content() should return the same instance that was provided");
}

@Test
@Tag("valid")
@DisplayName("content() is not null when provided and optional fields are omitted")
public void testContentNotNullWhenProvidedWithNullOptionals() {
final Content given = Mockito.mock(Content.class);
final MemoryEntry entry = MemoryEntry.builder().content(given).build();
assertNotNull(
(Object) entry.content(), "content() should not be null when supplied via builder");
}

@Test
@Tag("integration")
@DisplayName("toBuilder().build() preserves content reference identity")
public void testToBuilderPreservesContentIdentity() {
final Content given = Mockito.mock(Content.class);
final MemoryEntry entry =
MemoryEntry.builder()
.content(given)
.author((String) null) // Disambiguate potential overloaded methods
.timestamp((String) null) // Disambiguate potential overloaded methods
.build();
final MemoryEntry copy = entry.toBuilder().build();
assertSame(
(Content) entry.content(),
(Content) copy.content(),
"toBuilder().build() should preserve content identity");
}

@Test
@Tag("boundary")
@DisplayName(
"Distinct entries with different Content instances yield different content references")
public void testDifferentEntriesHaveDifferentContentReferences() {
final Content content1 = Mockito.mock(Content.class);
final Content content2 = Mockito.mock(Content.class);
final MemoryEntry entry1 = MemoryEntry.builder().content(content1).build();
final MemoryEntry entry2 = MemoryEntry.builder().content(content2).build();
assertNotSame(
(Content) entry1.content(),
(Content) entry2.content(),
"Different entries built with different Content instances should not share references");
}

@Test
@Tag("invalid")
@DisplayName("Builder with null content throws NullPointerException")
public void testBuilderWithNullContentThrows() {
assertThrows(
NullPointerException.class,
() -> {
MemoryEntry.builder().content((Content) null).build();
},
"Building MemoryEntry with null content should throw NullPointerException");
}
}
79 changes: 63 additions & 16 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0"?>
<!-- Copyright 2025 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
Expand All @@ -12,20 +12,16 @@
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. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>0.4.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>0.4.1-SNAPSHOT</version>
<!-- {x-version-update:google-adk:current} -->
<packaging>pom</packaging>

<name>Google Agent Development Kit Maven Parent POM</name>
<url>https://github.com/google/adk-java</url>
<description>Google Agent Development Kit (ADK) for Java</description>

<modules>
<module>core</module>
<module>dev</module>
Expand All @@ -39,12 +35,10 @@
<module>a2a</module>
<module>a2a/webservice</module>
</modules>

<properties>
<java.version>17</java.version>
<maven.compiler.release>${java.version}</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<auto-value.version>1.11.0</auto-value.version>
<spring-boot.version>3.4.1</spring-boot.version>
<otel.version>1.49.0</otel.version>
Expand Down Expand Up @@ -73,7 +67,6 @@
<maven-plugin-tools.version>3.9.0</maven-plugin-tools.version>
<httpclient5.version>5.4.3</httpclient5.version>
</properties>

<dependencyManagement>
<dependencies>
<!-- BOMs for dependency management -->
Expand Down Expand Up @@ -112,7 +105,6 @@
<type>pom</type>
<scope>import</scope>
</dependency>

<!-- Direct dependencies -->
<dependency>
<groupId>com.anthropic</groupId>
Expand Down Expand Up @@ -274,9 +266,21 @@
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>2.23.4</version>
<scope>test</scope>
<!--Dependency added by RoostGPT-->
</dependency>
<dependency>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-formatter</artifactId>
<version>0.0.40</version>
<!--Dependency added by RoostGPT-->
</dependency>
</dependencies>
</dependencyManagement>

<build>
<extensions>
<extension>
Expand Down Expand Up @@ -324,8 +328,7 @@
</dependencies>
<configuration>
<reportFormat>plain</reportFormat>
<statelessTestsetInfoReporter
implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5StatelessTestsetInfoTreeReporter" />
<statelessTestsetInfoReporter implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5StatelessTestsetInfoTreeReporter"/>
<includes>
<include>**/*Test.java</include>
</includes>
Expand Down Expand Up @@ -469,6 +472,36 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
<!--Plugin added by RoostGPT-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>3.2.5</version>
<configuration>
<outputDirectory>testReport</outputDirectory>
</configuration>
<!--Plugin added by RoostGPT-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>2.1</version>
<configuration>
<outputDirectory>testReport</outputDirectory>
</configuration>
<!--Plugin added by RoostGPT-->
</plugin>
<plugin>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-maven-plugin</artifactId>
<version>0.0.40</version>
<!--Plugin added by RoostGPT-->
</plugin>
</plugins>
</build>
<profiles>
Expand Down Expand Up @@ -528,7 +561,6 @@
</build>
</profile>
</profiles>

<licenses>
<license>
<name>The Apache License, Version 2.0</name>
Expand Down Expand Up @@ -558,4 +590,19 @@
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>2.23.4</version>
<scope>test</scope>
<!--Dependency added by RoostGPT-->
</dependency>
<dependency>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-formatter</artifactId>
<version>0.0.40</version>
<!--Dependency added by RoostGPT-->
</dependency>
</dependencies>
</project>