diff --git a/src/main/java/io/lettuce/core/RedisVectorSetCommandBuilder.java b/src/main/java/io/lettuce/core/RedisVectorSetCommandBuilder.java index 0cfff73d99..8f5f05105f 100644 --- a/src/main/java/io/lettuce/core/RedisVectorSetCommandBuilder.java +++ b/src/main/java/io/lettuce/core/RedisVectorSetCommandBuilder.java @@ -392,13 +392,9 @@ public Command> vsim(K key, VSimArgs vSimArgs, Double[] vectors) { CommandArgs args = new CommandArgs<>(codec).addKey(key); - if (vectors.length > 1) { - args.add(CommandKeyword.VALUES); - args.add(vectors.length); - Arrays.stream(vectors).forEach(args::add); - } else { - args.add(vectors[0]); - } + args.add(CommandKeyword.VALUES); + args.add(vectors.length); + Arrays.stream(vectors).forEach(args::add); if (vSimArgs != null) { vSimArgs.build(args); @@ -472,13 +468,9 @@ public Command> vsimWithScore(K key, VSimArgs vSimArgs, Dou CommandArgs args = new CommandArgs<>(codec).addKey(key); - if (vectors.length > 1) { - args.add(CommandKeyword.VALUES); - args.add(vectors.length); - Arrays.stream(vectors).forEach(args::add); - } else { - args.add(vectors[0]); - } + args.add(CommandKeyword.VALUES); + args.add(vectors.length); + Arrays.stream(vectors).forEach(args::add); args.add(WITHSCORES); @@ -527,13 +519,9 @@ public Command> vsimWithScoreWithAttribs(K key, V CommandArgs args = new CommandArgs<>(codec).addKey(key); - if (vectors.length > 1) { - args.add(CommandKeyword.VALUES); - args.add(vectors.length); - Arrays.stream(vectors).forEach(args::add); - } else { - args.add(vectors[0]); - } + args.add(CommandKeyword.VALUES); + args.add(vectors.length); + Arrays.stream(vectors).forEach(args::add); args.add(WITHSCORES).add(WITHATTRIBS); diff --git a/src/test/java/io/lettuce/core/RedisVectorSetCommandBuilderUnitTests.java b/src/test/java/io/lettuce/core/RedisVectorSetCommandBuilderUnitTests.java index 4fd3fc72d1..3aa9e1fef5 100644 --- a/src/test/java/io/lettuce/core/RedisVectorSetCommandBuilderUnitTests.java +++ b/src/test/java/io/lettuce/core/RedisVectorSetCommandBuilderUnitTests.java @@ -328,6 +328,39 @@ void shouldCorrectlyConstructVsimWithArgsAndScores() { + "WITHSCORES\r\n" + "$5\r\n" + "COUNT\r\n" + "$1\r\n" + "5\r\n" + "$5\r\n" + "TRUTH\r\n"); } + @Test + void shouldCorrectlyConstructVsimWithOneVector() { + Command> command = builder.vsim(KEY, new Double[] { 0.1d }); + ByteBuf buf = Unpooled.directBuffer(); + command.encode(buf); + + assertThat(buf.toString(StandardCharsets.UTF_8)).isEqualTo("*5\r\n" + "$4\r\n" + "VSIM\r\n" + "$10\r\n" + + "vector:set\r\n" + "$6\r\n" + "VALUES\r\n" + "$1\r\n" + "1\r\n" + "$3\r\n" + "0.1\r\n"); + } + + @Test + void shouldCorrectlyConstructVsimWithScoresWithOneVector() { + Command> command = builder.vsimWithScore(KEY, new Double[] { 0.1d }); + ByteBuf buf = Unpooled.directBuffer(); + command.encode(buf); + + assertThat(buf.toString(StandardCharsets.UTF_8)) + .isEqualTo("*6\r\n" + "$4\r\n" + "VSIM\r\n" + "$10\r\n" + "vector:set\r\n" + "$6\r\n" + "VALUES\r\n" + "$1\r\n" + + "1\r\n" + "$3\r\n" + "0.1\r\n" + "$10\r\n" + "WITHSCORES\r\n"); + } + + @Test + void shouldCorrectlyConstructVsimWithScoreWithAttribsWithOneVector() { + Command> command = builder.vsimWithScoreWithAttribs(KEY, + new Double[] { 0.1d }); + ByteBuf buf = Unpooled.directBuffer(); + command.encode(buf); + + assertThat(buf.toString(StandardCharsets.UTF_8)) + .isEqualTo("*7\r\n" + "$4\r\n" + "VSIM\r\n" + "$10\r\n" + "vector:set\r\n" + "$6\r\n" + "VALUES\r\n" + "$1\r\n" + + "1\r\n" + "$3\r\n" + "0.1\r\n" + "$10\r\n" + "WITHSCORES\r\n" + "$11\r\n" + "WITHATTRIBS\r\n"); + } + @Test void epsilonBelowZero_throws() { VSimArgs args = new VSimArgs();