fun tetComplexToolDescriptorGeneration()

in agents/agents-tools/src/commonTest/kotlin/ai/koog/agents/core/tools/serialization/ToolDescriptorGenerationTest.kt [73:143]


    fun tetComplexToolDescriptorGeneration() {
        val extectedDescriptor = ToolDescriptor(
            name = "complex_nested_tool",
            description = "A tool that processes user profiles with complex nested structures.",
            requiredParameters = listOf(
                ToolParameterDescriptor(
                    name = "profile",
                    description = "The user profile to process",
                    type = ToolParameterType.Object(
                        properties = listOf(
                            ToolParameterDescriptor(
                                name = "name",
                                description = "The user's full name",
                                type = ToolParameterType.String
                            ),
                            ToolParameterDescriptor(
                                name = "email",
                                description = "The user's email address",
                                type = ToolParameterType.String
                            ),
                            ToolParameterDescriptor(
                                name = "addresses",
                                description = "The user's addresses",
                                type = ToolParameterType.List(
                                    ToolParameterType.Object(
                                        properties = listOf(
                                            ToolParameterDescriptor(
                                                name = "type",
                                                description = "The type of address (HOME, WORK, or OTHER)",
                                                type = ToolParameterType.Enum(
                                                    AddressType.entries.map {
                                                        it.name
                                                    }.toTypedArray()
                                                )
                                            ),
                                            ToolParameterDescriptor(
                                                name = "street",
                                                description = "The street address",
                                                type = ToolParameterType.String
                                            ),
                                            ToolParameterDescriptor(
                                                name = "city",
                                                description = "The city",
                                                type = ToolParameterType.String
                                            ),
                                            ToolParameterDescriptor(
                                                name = "state",
                                                description = "The state or province",
                                                type = ToolParameterType.String
                                            ),
                                            ToolParameterDescriptor(
                                                name = "zipCode",
                                                description = "The ZIP or postal code",
                                                type = ToolParameterType.String
                                            )
                                        ),
                                        requiredProperties = listOf("type", "street", "city", "state", "zipCode"),
                                        additionalProperties = false
                                    )
                                )
                            )
                        ),
                        requiredProperties = listOf("name", "email", "addresses"),
                        additionalProperties = false
                    )
                )
            )
        )

        assertEquals(extectedDescriptor, ComplexNestedTool.descriptor)
    }