fun toolParameterTestCases()

in prompt/prompt-executor/prompt-executor-clients/prompt-executor-bedrock-client/src/jvmTest/kotlin/ai/koog/prompt/executor/clients/bedrock/modelfamilies/BedrockToolSerializationTest.kt [19:220]


        fun toolParameterTestCases(): Stream<Arguments> {
            val stringParamDesc = "Search query"
            val intParamDesc = "Number of results"
            val floatParamDesc = "Temperature value"
            val boolParamDesc = "Feature toggle"
            val enumValues = listOf("json", "xml", "text")
            val listParamDesc = "List of users"
            val listIntParamDesc = "List of IDs"
            val objectParamDesc = "User information"
            val namePropertyName = "name"
            val namePropertyDesc = "User name"
            val agePropertyName = "age"
            val agePropertyDesc = "User age"
            val streetPropertyName = "street"
            val streetPropertyDesc = "Street address"
            val cityPropertyName = "city"
            val cityPropertyDesc = "City name"
            val addressPropertyName = "address"
            val addressPropertyDesc = "User address"

            return Stream.of(
                // String
                Arguments.of(
                    ToolParameterDescriptor(
                        name = "query",
                        description = stringParamDesc,
                        type = ToolParameterType.String
                    ),
                    mapOf(
                        "description" to stringParamDesc,
                        "type" to "string"
                    )
                ),

                // Integer
                Arguments.of(
                    ToolParameterDescriptor(
                        name = "count",
                        description = intParamDesc,
                        type = ToolParameterType.Integer
                    ),
                    mapOf(
                        "description" to intParamDesc,
                        "type" to "integer"
                    )
                ),

                // Float
                Arguments.of(
                    ToolParameterDescriptor(
                        name = "temperature",
                        description = floatParamDesc,
                        type = ToolParameterType.Float
                    ),
                    mapOf(
                        "description" to floatParamDesc,
                        "type" to "number"
                    )
                ),

                // Boolean
                Arguments.of(
                    ToolParameterDescriptor(
                        name = "enabled",
                        description = boolParamDesc,
                        type = ToolParameterType.Boolean
                    ),
                    mapOf(
                        "description" to boolParamDesc,
                        "type" to "boolean"
                    )
                ),

                // Null
                Arguments.of(
                    ToolParameterDescriptor(
                        name = "nullValue",
                        description = "Null parameter",
                        type = ToolParameterType.Null
                    ),
                    mapOf(
                        "description" to "Null parameter",
                        "type" to "null"
                    )
                ),

                // Enum
                Arguments.of(
                    ToolParameterDescriptor(
                        name = "format",
                        description = "Output format",
                        type = ToolParameterType.Enum(enumValues.toTypedArray())
                    ),
                    mapOf(
                        "description" to "Output format",
                        "type" to "string",
                        "enum" to enumValues
                    )
                ),

                // List of String
                Arguments.of(
                    ToolParameterDescriptor(
                        name = "user",
                        description = listParamDesc,
                        type = ToolParameterType.List(ToolParameterType.String)
                    ),
                    mapOf(
                        "description" to listParamDesc,
                        "type" to "array",
                        "items" to mapOf("type" to "string")
                    )
                ),

                // List of Integer
                Arguments.of(
                    ToolParameterDescriptor(
                        name = "List",
                        description = listIntParamDesc,
                        type = ToolParameterType.List(ToolParameterType.Integer)
                    ),
                    mapOf(
                        "description" to listIntParamDesc,
                        "type" to "array",
                        "items" to mapOf("type" to "integer")
                    )
                ),

                // Object
                Arguments.of(
                    {
                        val objectType = ToolParameterType.Object(
                            properties = listOf(
                                ToolParameterDescriptor(namePropertyName, namePropertyDesc, ToolParameterType.String),
                                ToolParameterDescriptor(agePropertyName, agePropertyDesc, ToolParameterType.Integer)
                            )
                        )

                        ToolParameterDescriptor(
                            name = "user",
                            description = objectParamDesc,
                            type = objectType
                        )
                    }(),
                    mapOf(
                        "description" to objectParamDesc,
                        "type" to "object"
                    )
                ),

                // Nested Object
                Arguments.of(
                    {
                        val addressType = ToolParameterType.Object(
                            properties = listOf(
                                ToolParameterDescriptor(
                                    streetPropertyName,
                                    streetPropertyDesc,
                                    ToolParameterType.String
                                ),
                                ToolParameterDescriptor(cityPropertyName, cityPropertyDesc, ToolParameterType.String)
                            )
                        )

                        val userType = ToolParameterType.Object(
                            properties = listOf(
                                ToolParameterDescriptor(namePropertyName, namePropertyDesc, ToolParameterType.String),
                                ToolParameterDescriptor(addressPropertyName, addressPropertyDesc, addressType)
                            )
                        )

                        ToolParameterDescriptor(
                            name = "user",
                            description = objectParamDesc,
                            type = userType
                        )
                    }(),
                    mapOf(
                        "description" to objectParamDesc,
                        "type" to "object"
                    )
                ),

                // AnyOf (String or Number)
                Arguments.of(
                    ToolParameterDescriptor(
                        name = "anyOfValue",
                        description = "String or number value",
                        type = ToolParameterType.AnyOf(
                            types = arrayOf(
                                ToolParameterDescriptor(name = "", description = "String option", type = ToolParameterType.String),
                                ToolParameterDescriptor(name = "", description = "Number option", type = ToolParameterType.Float)
                            )
                        )
                    ),
                    mapOf(
                        "description" to "String or number value",
                        "anyOf" to "expected" // We'll verify anyOf array exists in test
                    )
                )
            )
        }