| 
 | 1 | +/*  | 
 | 2 | + * Copyright (c) 2010-2025 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.  | 
 | 3 | + */  | 
 | 4 | +package com.marklogic.client.util;  | 
 | 5 | + | 
 | 6 | +import com.fasterxml.jackson.databind.JsonNode;  | 
 | 7 | +import com.fasterxml.jackson.databind.node.ArrayNode;  | 
 | 8 | +import com.marklogic.client.test.Common;  | 
 | 9 | +import org.junit.jupiter.api.Test;  | 
 | 10 | + | 
 | 11 | +import static org.junit.jupiter.api.Assertions.assertEquals;  | 
 | 12 | + | 
 | 13 | +class VectorUtilTest {  | 
 | 14 | + | 
 | 15 | +	private final float[] VECTOR = new float[]{3.14f, 1.59f, 2.65f};  | 
 | 16 | +	private final double ACCEPTABLE_DELTA = 0.0001;  | 
 | 17 | + | 
 | 18 | +	@Test  | 
 | 19 | +	void encodeAndDecodeWithJavaClient() {  | 
 | 20 | +		String encoded = VectorUtil.encode(VECTOR);  | 
 | 21 | +		assertEquals("AAAAAAMAAADD9UhAH4XLP5qZKUA=", encoded);  | 
 | 22 | + | 
 | 23 | +		float[] decoded = VectorUtil.decode(encoded);  | 
 | 24 | +		assertEquals(VECTOR.length, decoded.length);  | 
 | 25 | +		for (int i = 0; i < VECTOR.length; i++) {  | 
 | 26 | +			assertEquals(VECTOR[i], decoded[i], ACCEPTABLE_DELTA);  | 
 | 27 | +		}  | 
 | 28 | +	}  | 
 | 29 | + | 
 | 30 | +	@Test  | 
 | 31 | +	void encodeAndDecodeWithServer() {  | 
 | 32 | +		String encoded = VectorUtil.encode(VECTOR);  | 
 | 33 | +		assertEquals("AAAAAAMAAADD9UhAH4XLP5qZKUA=", encoded);  | 
 | 34 | + | 
 | 35 | +		ArrayNode decoded = (ArrayNode) Common.newEvalClient().newServerEval()  | 
 | 36 | +			.xquery("vec:base64-decode('%s')".formatted(encoded))  | 
 | 37 | +			.evalAs(JsonNode.class);  | 
 | 38 | + | 
 | 39 | +		assertEquals(3, decoded.size());  | 
 | 40 | +		assertEquals(3.14f, decoded.get(0).asDouble(), ACCEPTABLE_DELTA);  | 
 | 41 | +		assertEquals(1.59f, decoded.get(1).asDouble(), ACCEPTABLE_DELTA);  | 
 | 42 | +		assertEquals(2.65f, decoded.get(2).asDouble(), ACCEPTABLE_DELTA);  | 
 | 43 | +	}  | 
 | 44 | + | 
 | 45 | +	@Test  | 
 | 46 | +	void encodeWithServerAndDecodeWithJavaClient() {  | 
 | 47 | +		String encoded = Common.newEvalClient().newServerEval()  | 
 | 48 | +			.xquery("vec:base64-encode(vec:vector((3.14, 1.59, 2.65)))")  | 
 | 49 | +			.evalAs(String.class);  | 
 | 50 | +		assertEquals("AAAAAAMAAADD9UhAH4XLP5qZKUA=", encoded);  | 
 | 51 | + | 
 | 52 | +		float[] decoded = VectorUtil.decode(encoded);  | 
 | 53 | +		assertEquals(VECTOR.length, decoded.length);  | 
 | 54 | +		for (int i = 0; i < VECTOR.length; i++) {  | 
 | 55 | +			assertEquals(VECTOR[i], decoded[i], ACCEPTABLE_DELTA);  | 
 | 56 | +		}  | 
 | 57 | +	}  | 
 | 58 | +}  | 
0 commit comments