Skip to content

Commit b048931

Browse files
committed
First pass at Span changes
1 parent cdb602b commit b048931

14 files changed

+140
-393
lines changed

src/LightningDB.Tests/CursorTests.cs

+16-15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using LightningDB.Native;
45
using Xunit;
56
using static System.Text.Encoding;
67

@@ -69,8 +70,8 @@ public void CursorShouldMoveToLast()
6970
{
7071
Assert.True(cur.MoveToLast());
7172

72-
var lastKey = UTF8.GetString(cur.Current.Key);
73-
var lastValue = UTF8.GetString(cur.Current.Value);
73+
var lastKey = UTF8.GetString(cur.Current.Key.Span.ToArray());
74+
var lastValue = UTF8.GetString(cur.Current.Value.Span.ToArray());
7475

7576
Assert.Equal("key5", lastKey);
7677
Assert.Equal("key5", lastValue);
@@ -87,8 +88,8 @@ public void CursorShouldMoveToFirst()
8788
{
8889
cur.MoveToFirst();
8990

90-
var lastKey = UTF8.GetString(cur.Current.Key);
91-
var lastValue = UTF8.GetString(cur.Current.Value);
91+
var lastKey = UTF8.GetString(cur.Current.Key.Span.ToArray());
92+
var lastValue = UTF8.GetString(cur.Current.Value.Span.ToArray());
9293

9394
Assert.Equal("key1", lastKey);
9495
Assert.Equal("key1", lastValue);
@@ -107,8 +108,8 @@ public void ShouldIterateThroughCursor()
107108

108109
while (cur.MoveNext())
109110
{
110-
var key = UTF8.GetString(cur.Current.Key);
111-
var value = UTF8.GetString(cur.Current.Value);
111+
var key = UTF8.GetString(cur.Current.Key.Span.ToArray());
112+
var value = UTF8.GetString(cur.Current.Value.Span.ToArray());
112113

113114
var name = "key" + ++i;
114115

@@ -135,7 +136,7 @@ public void CursorShouldDeleteElements()
135136
}
136137
using(var cursor = _txn.CreateCursor(_db))
137138
{
138-
var foundDeleted = cursor.Select(x => UTF8.GetString(x.Key))
139+
var foundDeleted = cursor.Select(x => UTF8.GetString(x.Key.Span.ToArray()))
139140
.Any(x => x == "key1" || x == "key2");
140141
Assert.False(foundDeleted);
141142
}
@@ -153,8 +154,8 @@ public void ShouldIterateThroughCursorByEnumerator()
153154
foreach (var pair in cursor)
154155
{
155156
var name = "key" + ++i;
156-
Assert.Equal(name, UTF8.GetString(pair.Key));
157-
Assert.Equal(name, UTF8.GetString(pair.Value));
157+
Assert.Equal(name, UTF8.GetString(pair.Key.Span.ToArray()));
158+
Assert.Equal(name, UTF8.GetString(pair.Value.Span.ToArray()));
158159
}
159160
}
160161
}
@@ -168,7 +169,7 @@ public void ShouldPutMultiple()
168169
using (var cur = _txn.CreateCursor(_db))
169170
cur.PutMultiple(UTF8.GetBytes("TestKey"), values);
170171

171-
var pairs = new KeyValuePair<byte[], byte[]>[values.Length];
172+
var pairs = new KeyValuePair<MDBValue, MDBValue>[values.Length];
172173

173174
using (var cur = _txn.CreateCursor(_db))
174175
{
@@ -179,7 +180,7 @@ public void ShouldPutMultiple()
179180
}
180181
}
181182

182-
Assert.Equal(values, pairs.Select(x => x.Value).ToArray());
183+
Assert.Equal(values, pairs.Select(x => x.Value.Span.ToArray()).ToArray());
183184
}
184185

185186
[Fact]
@@ -197,8 +198,8 @@ public void ShouldGetMultiple()
197198
cur.MoveNext();
198199
cur.GetMultiple();
199200
var resultPair = cur.Current;
200-
Assert.Equal("TestKey", UTF8.GetString(resultPair.Key));
201-
var result = resultPair.Value.Split(sizeof(int))
201+
Assert.Equal("TestKey", UTF8.GetString(resultPair.Key.Span.ToArray()));
202+
var result = resultPair.Value.Span.ToArray().Split(sizeof(int))
202203
.Select(x => BitConverter.ToInt32(x.ToArray(), 0)).ToArray();
203204
Assert.Equal(original, result);
204205
}
@@ -218,8 +219,8 @@ public void ShouldMoveNextMultiple()
218219
{
219220
cur.MoveNextMultiple();
220221
var resultPair = cur.Current;
221-
Assert.Equal("TestKey", UTF8.GetString(resultPair.Key));
222-
var result = resultPair.Value.Split(sizeof(int))
222+
Assert.Equal("TestKey", UTF8.GetString(resultPair.Key.Span.ToArray()));
223+
var result = resultPair.Value.Span.ToArray().Split(sizeof(int))
223224
.Select(x => BitConverter.ToInt32(x.ToArray(), 0)).ToArray();
224225
Assert.Equal(original, result);
225226
}

src/LightningDB.Tests/DatabaseTests.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Linq;
32
using Xunit;
43
using static System.Text.Encoding;
54

@@ -90,7 +89,7 @@ public void NamedDatabaseNameExistsInMaster()
9089
using (var cursor = tx.CreateCursor(db))
9190
{
9291
cursor.MoveNext();
93-
Assert.Equal("customdb", UTF8.GetString(cursor.Current.Key));
92+
Assert.Equal("customdb", UTF8.GetString(cursor.Current.Key.Span.ToArray()));
9493
}
9594
}
9695
}

src/LightningDB.Tests/SpanTests.cs

-69
This file was deleted.

src/LightningDB.Tests/TransactionTests.cs

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Linq;
33
using System.Collections.Generic;
4+
using LightningDB.Native;
45
using Xunit;
56

67
namespace LightningDB.Tests
@@ -143,9 +144,9 @@ public void TransactionShouldSupportCustomComparer()
143144
{
144145
Func<int, int, int> comparison = (l, r) => l.CompareTo(r);
145146
var options = new DatabaseConfiguration {Flags = DatabaseOpenFlags.Create};
146-
Func<byte[], byte[], int> compareWith =
147-
(l, r) => comparison(BitConverter.ToInt32(l, 0), BitConverter.ToInt32(r, 0));
148-
options.CompareWith(Comparer<byte[]>.Create(new Comparison<byte[]>(compareWith)));
147+
Func<MDBValue, MDBValue, int> compareWith =
148+
(l, r) => comparison(BitConverter.ToInt32(l.Span.ToArray(), 0), BitConverter.ToInt32(r.Span.ToArray(), 0));
149+
options.CompareWith(Comparer<MDBValue>.Create(new Comparison<MDBValue>(compareWith)));
149150

150151
using (var txnT = _env.BeginTransaction())
151152
using (var db1 = txnT.OpenDatabase(configuration: options))
@@ -169,7 +170,7 @@ public void TransactionShouldSupportCustomComparer()
169170
{
170171
int order = 0;
171172
while (c.MoveNext())
172-
Assert.Equal(keysSorted[order++], BitConverter.ToInt32(c.Current.Key, 0));
173+
Assert.Equal(keysSorted[order++], BitConverter.ToInt32(c.Current.Key.Span.ToArray(), 0));
173174
}
174175
}
175176

@@ -180,8 +181,8 @@ public void TransactionShouldSupportCustomDupSorter()
180181

181182
var txn = _env.BeginTransaction();
182183
var options = new DatabaseConfiguration {Flags = DatabaseOpenFlags.Create | DatabaseOpenFlags.DuplicatesFixed};
183-
Func<byte[], byte[], int> compareWith = (l, r) => comparison(BitConverter.ToInt32(l, 0), BitConverter.ToInt32(r, 0));
184-
options.FindDuplicatesWith(Comparer<byte[]>.Create(new Comparison<byte[]>(compareWith)));
184+
Func<MDBValue, MDBValue, int> compareWith = (l, r) => comparison(BitConverter.ToInt32(l.Span.ToArray(), 0), BitConverter.ToInt32(r.Span.ToArray(), 0));
185+
options.FindDuplicatesWith(Comparer<MDBValue>.Create(new Comparison<MDBValue>(compareWith)));
185186
var db = txn.OpenDatabase(configuration: options);
186187

187188
var valuesUnsorted = new [] { 2, 10, 5, 0 };
@@ -196,7 +197,7 @@ public void TransactionShouldSupportCustomDupSorter()
196197
int order = 0;
197198

198199
while (c.MoveNext())
199-
Assert.Equal(valuesSorted[order++], BitConverter.ToInt32(c.Current.Value, 0));
200+
Assert.Equal(valuesSorted[order++], BitConverter.ToInt32(c.Current.Value.Span.ToArray(), 0));
200201
}
201202
}
202203
}

src/LightningDB/DatabaseConfiguration.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ namespace LightningDB
88
{
99
public class DatabaseConfiguration
1010
{
11-
private IComparer<byte[]> _comparer;
12-
private IComparer<byte[]> _duplicatesComparer;
11+
private IComparer<MDBValue> _comparer;
12+
private IComparer<MDBValue> _duplicatesComparer;
1313

1414
public DatabaseConfiguration()
1515
{
@@ -37,22 +37,22 @@ internal IDisposable ConfigureDatabase(LightningTransaction tx, LightningDatabas
3737
return pinnedComparer;
3838
}
3939

40-
private int Compare(ref ValueStructure left, ref ValueStructure right)
40+
private int Compare(ref MDBValue left, ref MDBValue right)
4141
{
42-
return _comparer.Compare(left.GetBytes(), right.GetBytes());
42+
return _comparer.Compare(left, right);
4343
}
4444

45-
private int IsDuplicate(ref ValueStructure left, ref ValueStructure right)
45+
private int IsDuplicate(ref MDBValue left, ref MDBValue right)
4646
{
47-
return _duplicatesComparer.Compare(left.GetBytes(), right.GetBytes());
47+
return _duplicatesComparer.Compare(left, right);
4848
}
4949

50-
public void CompareWith(IComparer<byte[]> comparer)
50+
public void CompareWith(IComparer<MDBValue> comparer)
5151
{
5252
_comparer = comparer;
5353
}
5454

55-
public void FindDuplicatesWith(IComparer<byte[]> comparer)
55+
public void FindDuplicatesWith(IComparer<MDBValue> comparer)
5656
{
5757
_duplicatesComparer = comparer;
5858
}

0 commit comments

Comments
 (0)