|
18 | 18 | namespace Neo4j.Vector.Examples;
|
19 | 19 |
|
20 | 20 | using System;
|
21 |
| -using System.Linq; |
22 | 21 | using Xunit;
|
23 | 22 | using FluentAssertions;
|
24 | 23 | using Driver;
|
@@ -99,37 +98,6 @@ await _driver!
|
99 | 98 | longVectorRead.Should().BeEquivalentTo(record.LongVector);
|
100 | 99 | }
|
101 | 100 |
|
102 |
| - [Fact] |
103 |
| - public async Task ShouldBeEasyToUseWithDotNetVector() |
104 |
| - { |
105 |
| - // a dot net native vector |
106 |
| - var dotNetVector = |
107 |
| - new System.Numerics.Vector<double>([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]); |
108 |
| - |
109 |
| - // Convert System.Numerics.Vector<double> to Neo4j vector |
110 |
| - var elements = new double[System.Numerics.Vector<double>.Count]; |
111 |
| - dotNetVector.CopyTo(elements); |
112 |
| - var neo4jVector = new Vector<double>(elements); |
113 |
| - |
114 |
| - // Write node with vector |
115 |
| - await _driver! |
116 |
| - .ExecutableQuery("CREATE (n:ShouldBeEasyToUseWithDotNetVector {vector: $vector}) RETURN n") |
117 |
| - .WithParameters(new { vector = neo4jVector }) |
118 |
| - .ExecuteAsync(); |
119 |
| - |
120 |
| - // Read node with vector |
121 |
| - var result = await _driver |
122 |
| - .ExecutableQuery("MATCH (n:ShouldBeEasyToUseWithDotNetVector) RETURN n") |
123 |
| - .ExecuteAsync(); |
124 |
| - |
125 |
| - var record = result.Result[0]; |
126 |
| - var node = (INode)record["n"]; |
127 |
| - |
128 |
| - node.Properties.Should().ContainKey("vector"); |
129 |
| - var retrievedVector = (Vector<double>)node.Properties["vector"]!; |
130 |
| - retrievedVector.Values.Should().Equal(elements); |
131 |
| - } |
132 |
| - |
133 | 101 | public class ClassForMappingWithVector(Vector<double> doubleVector, Vector<long> longVector)
|
134 | 102 | {
|
135 | 103 | public Vector<double> DoubleVector { get; } = doubleVector;
|
@@ -165,47 +133,4 @@ await _driver!
|
165 | 133 | record.LongVector.Should().BeEquivalentTo(longVector);
|
166 | 134 | }
|
167 | 135 |
|
168 |
| - [Fact] |
169 |
| - public async Task ShouldWorkWithObjectMappingAndDotNetVectors() |
170 |
| - { |
171 |
| - var vectorSize = System.Numerics.Vector<double>.Count; |
172 |
| - var doubleVectorElements = Enumerable.Range(0, vectorSize).Select(i => (double)i).ToArray(); |
173 |
| - var doubleVector = new Vector<double>(doubleVectorElements); |
174 |
| - |
175 |
| - // write node with vectors |
176 |
| - await _driver! |
177 |
| - .ExecutableQuery("CREATE (n:ShouldWorkWithObjectMappingAndDotNetVectors $record) RETURN n") |
178 |
| - .WithParameters(new { record = new { doubleVector } }) |
179 |
| - .ExecuteAsync(); |
180 |
| - |
181 |
| - // important - we set up a type conversion from a neo4j vector to a System.Numerics.Vector |
182 |
| - RecordObjectMapping.RegisterTypeConverter((Vector<double> v) => new System.Numerics.Vector<double>(v.Values)); |
183 |
| - |
184 |
| - // read node with vector |
185 |
| - var result = await _driver |
186 |
| - .ExecutableQuery( |
187 |
| - """ |
188 |
| - MATCH (n:ShouldWorkWithObjectMappingAndDotNetVectors) |
189 |
| - RETURN n.doubleVector AS doubleVector |
190 |
| - """) |
191 |
| - .ExecuteAsync() |
192 |
| - .AsObjectsAsync<ClassForMappingWithDotNetVector>(); |
193 |
| - |
194 |
| - var record = result[0]; |
195 |
| - |
196 |
| - for (var i = 0; i < vectorSize; i++) |
197 |
| - { |
198 |
| - record.DoubleVector[i].Should().BeApproximately(doubleVectorElements[i], 0.001); |
199 |
| - } |
200 |
| - } |
201 |
| - |
202 |
| - public class ClassForMappingWithDotNetVector |
203 |
| - { |
204 |
| - public ClassForMappingWithDotNetVector(System.Numerics.Vector<double> doubleVector) |
205 |
| - { |
206 |
| - DoubleVector = doubleVector; |
207 |
| - } |
208 |
| - |
209 |
| - public System.Numerics.Vector<double> DoubleVector { get; } |
210 |
| - } |
211 | 136 | }
|
0 commit comments