Skip to content

Commit d0b86f4

Browse files
committed
feat: general improvements and minor bugs
1 parent 923ef1d commit d0b86f4

39 files changed

Lines changed: 672 additions & 720 deletions

docs/concept.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,8 +368,10 @@ methods and properties of this class:
368368
- `Task DeleteAsync<TIndexItem>(TIndexItem item)`: Removes an item from the index asynchronously.
369369
- `void Clear<TIndexItem>()`: Removed all data from the index.
370370
- `Task ClearAsync<TIndexItem>()`: Removed all data from the index asynchronously.
371-
- `IWqlStatement<TIndexItem> Retrieve<T>(string wql)`: Executes a WQL statement.
372-
- `Task<IWqlStatement<TIndexItem>> RetrieveAsync<TIndexItem>(string wql)`: Executes a wql statement asynchronously.
371+
- `IQueryable<TIndexItem> Retrieve<TIndexItem>(string wql)`: Executes a WQL statement.
372+
- `IQueryable<TIndexItem> Retrieve<TIndexItem>(IWqlStatement<TIndexItem> wql)`: Executes a WQL statement.
373+
- `Task<IQueryable<TIndexItem>> RetrieveAsync<TIndexItem>(string wql)`: Executes a wql statement asynchronously.
374+
- `Task<IQueryable<TIndexItem>> RetrieveAsync<TIndexItem>(IWqlStatement<TIndexItem> wql)`: Executes a wql statement asynchronously.
373375
- `IEnumerable<TIndexItem> All<TIndexItem>()`: Returns all documents from the index.
374376
- `IIndexDocument<TIndexItem> GetIndexDocument<TIndexItem>()`: Returns an index type based on its type.
375377
- `void Dispose()`: Disposes of the resources used by the current instance.

src/WebExpress.WebIndex.Test/Fixture/UnitTestIndexFixtureWqlA.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public override void Dispose()
4949
/// <returns>The WQL parser.</returns>
5050
public IWqlStatement<UnitTestIndexTestDocumentA> ExecuteWql(string wql)
5151
{
52-
return IndexManager.Retrieve<UnitTestIndexTestDocumentA>(wql);
52+
return new WqlParser<UnitTestIndexTestDocumentA>().Parse(wql);
5353
}
5454
}
5555
}

src/WebExpress.WebIndex.Test/Fixture/UnitTestIndexFixtureWqlB.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public override void Dispose()
4949
/// <returns>The WQL parser.</returns>
5050
public IWqlStatement<UnitTestIndexTestDocumentB> ExecuteWql(string wql)
5151
{
52-
return IndexManager.Retrieve<UnitTestIndexTestDocumentB>(wql);
52+
return new WqlParser<UnitTestIndexTestDocumentB>().Parse(wql);
5353
}
5454
}
5555
}

src/WebExpress.WebIndex.Test/Fixture/UnitTestIndexFixtureWqlC.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public override void Dispose()
6161
/// <returns>The WQL parser.</returns>
6262
public IWqlStatement<UnitTestIndexTestDocumentC> ExecuteWql(string wql)
6363
{
64-
return IndexManager.Retrieve<UnitTestIndexTestDocumentC>(wql);
64+
return new WqlParser<UnitTestIndexTestDocumentC>().Parse(wql);
6565
}
6666
}
6767
}

src/WebExpress.WebIndex.Test/Fixture/UnitTestIndexFixtureWqlD.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public override void Dispose()
4949
/// <returns>The WQL parser.</returns>
5050
public IWqlStatement<UnitTestIndexTestDocumentD> ExecuteWql(string wql)
5151
{
52-
return IndexManager.Retrieve<UnitTestIndexTestDocumentD>(wql);
52+
return new WqlParser<UnitTestIndexTestDocumentD>().Parse(wql);
5353
}
5454
}
5555
}

src/WebExpress.WebIndex.Test/Fixture/UnitTestIndexFixtureWqlE.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public override void Dispose()
4949
/// <returns>The WQL parser.</returns>
5050
public IWqlStatement<UnitTestIndexTestDocumentE> ExecuteWql(string wql)
5151
{
52-
return IndexManager.Retrieve<UnitTestIndexTestDocumentE>(wql);
52+
return new WqlParser<UnitTestIndexTestDocumentE>().Parse(wql);
5353
}
5454
}
5555
}

src/WebExpress.WebIndex.Test/Fixture/UnitTestIndexFixtureWqlF.cs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System.Globalization;
22
using System.Reflection;
33
using WebExpress.WebIndex.Test.Document;
4-
using WebExpress.WebIndex.Wql;
54

65
namespace WebExpress.WebIndex.Test.Fixture
76
{
@@ -44,15 +43,5 @@ public override void Dispose()
4443
IndexManager.Dispose();
4544
Directory.Delete(IndexManager.Context.IndexDirectory, true);
4645
}
47-
48-
/// <summary>
49-
/// Executes a wql statement.
50-
/// </summary>
51-
/// <param name="wql">The wql statement.</param>
52-
/// <returns>The WQL parser.</returns>
53-
public IWqlStatement<UnitTestIndexTestDocumentF> ExecuteWql(string wql)
54-
{
55-
return IndexManager.Retrieve<UnitTestIndexTestDocumentF>(wql);
56-
}
5746
}
5847
}

src/WebExpress.WebIndex.Test/IndexManager/UnitTestIndexManagerMemoryA.cs

Lines changed: 24 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,11 @@ public void ReIndex(string culture)
5656
// act
5757
IndexManager.ReIndex(Fixture.TestData);
5858

59-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helena'");
60-
Assert.NotNull(wql);
61-
62-
var item = wql.Apply();
59+
// validation
60+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helena'");
61+
Assert.NotNull(item);
6362
Assert.Equal(4, item.Count());
6463

65-
// postconditions
6664
Postconditions();
6765
}
6866

@@ -83,13 +81,12 @@ public async Task ReIndexAsync(string culture)
8381
// act
8482
await IndexManager.ReIndexAsync(Fixture.TestData);
8583

86-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helena'");
87-
Assert.NotNull(wql);
84+
// validation
85+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helena'");
86+
Assert.NotNull(item);
8887

89-
var item = wql.Apply();
9088
Assert.Equal(4, item.Count());
9189

92-
// postconditions
9390
Postconditions();
9491
}
9592

@@ -104,22 +101,19 @@ public void Delete()
104101
IndexManager.Create<UnitTestIndexTestDocumentA>(CultureInfo.GetCultureInfo("en"), IndexType.Memory);
105102
IndexManager.ReIndex(Fixture.TestData);
106103

107-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helena'");
108-
Assert.NotNull(wql);
104+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helena'");
109105

110-
var item = wql.Apply();
106+
Assert.NotNull(item);
111107
Assert.Equal(4, item.Count());
112108

113109
// act
114110
IndexManager.Delete(Fixture.TestData[0]);
115111

116-
wql = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helena'");
117-
Assert.NotNull(wql);
118-
119-
item = wql.Apply();
112+
// validation
113+
item = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helena'");
114+
Assert.NotNull(item);
120115
Assert.Equal(3, item.Count());
121116

122-
// postconditions
123117
Postconditions();
124118
}
125119

@@ -141,13 +135,12 @@ public void Add()
141135
Text = "Hello Aurora!"
142136
});
143137

144-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Aurora'");
145-
var item = wql.Apply();
138+
// validation
139+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Aurora'");
146140

147-
Assert.NotNull(wql);
141+
Assert.NotNull(item);
148142
Assert.Equal(1, item.Count());
149143

150-
// postconditions
151144
Postconditions();
152145
}
153146

@@ -169,19 +162,15 @@ public void Update()
169162
Text = "Hello Helena, hello Aurora!"
170163
});
171164

172-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Aurora'");
173-
Assert.NotNull(wql);
174-
175-
var item = wql.Apply();
165+
// validation
166+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Aurora'");
167+
Assert.NotNull(item);
176168
Assert.Equal(1, item.Count());
177169

178-
wql = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helge'");
179-
Assert.NotNull(wql);
180-
181-
item = wql.Apply();
170+
item = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helge'");
171+
Assert.NotNull(item);
182172
Assert.Equal(1, item.Count());
183173

184-
// postconditions
185174
Postconditions();
186175
}
187176

@@ -203,19 +192,15 @@ await IndexManager.UpdateAsync(new UnitTestIndexTestDocumentA()
203192
Text = "Hello Helena, hello Aurora!"
204193
});
205194

206-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Aurora'");
207-
Assert.NotNull(wql);
208-
209-
var item = wql.Apply();
195+
// validation
196+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Aurora'");
197+
Assert.NotNull(item);
210198
Assert.Equal(1, item.Count());
211199

212-
wql = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helge'");
213-
Assert.NotNull(wql);
214-
215-
item = wql.Apply();
200+
item = IndexManager.Retrieve<UnitTestIndexTestDocumentA>("text ~ 'Helge'");
201+
Assert.NotNull(item);
216202
Assert.Equal(1, item.Count());
217203

218-
// postconditions
219204
Postconditions();
220205
}
221206

src/WebExpress.WebIndex.Test/IndexManager/UnitTestIndexManagerMemoryB.cs

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,11 @@ public void ReIndex(string culture)
5757
// act
5858
IndexManager.ReIndex(Fixture.TestData);
5959

60-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentB>($"name = '{randomItem.Name}'");
61-
Assert.NotNull(wql);
62-
63-
var item = wql.Apply();
60+
// validation
61+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentB>($"name = '{randomItem.Name}'");
62+
Assert.NotNull(item);
6463
Assert.NotEmpty(item);
6564

66-
// postconditions
6765
Postconditions();
6866
}
6967

@@ -85,13 +83,11 @@ public async Task ReIndexAsync(string culture)
8583
// act
8684
await IndexManager.ReIndexAsync(Fixture.TestData);
8785

88-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentB>($"name = '{randomItem.Name}'");
89-
Assert.NotNull(wql);
90-
91-
var item = wql.Apply();
86+
// validation
87+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentB>($"name = '{randomItem.Name}'");
88+
Assert.NotNull(item);
9289
Assert.NotEmpty(item);
9390

94-
// postconditions
9591
Postconditions();
9692
}
9793

@@ -107,22 +103,18 @@ public void Delete()
107103
IndexManager.Create<UnitTestIndexTestDocumentB>(CultureInfo.GetCultureInfo("en"), IndexType.Memory);
108104
IndexManager.ReIndex(Fixture.TestData);
109105

110-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentB>($"name = '{randomItem.Name}'");
111-
Assert.NotNull(wql);
112-
113-
var before = wql.Apply().ToList();
106+
var before = IndexManager.Retrieve<UnitTestIndexTestDocumentB>($"name = '{randomItem.Name}'");
107+
Assert.NotNull(before);
114108
Assert.True(before.Any());
115109

116110
// act
117111
IndexManager.Delete(randomItem);
118112

119-
wql = IndexManager.Retrieve<UnitTestIndexTestDocumentB>($"name = '{randomItem.Name}'");
120-
Assert.NotNull(wql);
113+
// validation
114+
var after = IndexManager.Retrieve<UnitTestIndexTestDocumentB>($"name = '{randomItem.Name}'");
115+
Assert.NotNull(after);
116+
Assert.Equal(before.Count() - 1, after.Count());
121117

122-
var after = wql.Apply().ToList();
123-
Assert.True(before.Count - 1 == after.Count);
124-
125-
// postconditions
126118
Postconditions();
127119
}
128120

@@ -144,13 +136,11 @@ public void Add()
144136
Name = "Hello Aurora!"
145137
});
146138

147-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentB>("name = 'Aurora'");
148-
var item = wql.Apply();
149-
150-
Assert.NotNull(wql);
139+
// validation
140+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentB>("name = 'Aurora'");
141+
Assert.NotNull(item);
151142
Assert.Equal(1, item.Count());
152143

153-
// postconditions
154144
Postconditions();
155145
}
156146

@@ -173,13 +163,11 @@ public void Update()
173163
Name = "Hello Helena, Helge & Aurora!"
174164
});
175165

176-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentB>("name = 'Aurora'");
177-
var item = wql.Apply();
178-
179-
Assert.NotNull(wql);
166+
// validation
167+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentB>("name = 'Aurora'");
168+
Assert.NotNull(item);
180169
Assert.Equal(1, item.Count());
181170

182-
// postconditions
183171
Postconditions();
184172
}
185173

@@ -202,13 +190,11 @@ await IndexManager.UpdateAsync(new UnitTestIndexTestDocumentB()
202190
Name = "Aurora"
203191
});
204192

205-
var wql = IndexManager.Retrieve<UnitTestIndexTestDocumentB>("name = 'Aurora'");
206-
Assert.NotNull(wql);
207-
208-
var item = wql.Apply();
193+
// validation
194+
var item = IndexManager.Retrieve<UnitTestIndexTestDocumentB>("name = 'Aurora'");
195+
Assert.NotNull(item);
209196
Assert.Equal(1, item.Count());
210197

211-
// postconditions
212198
Postconditions();
213199
}
214200

@@ -231,12 +217,12 @@ public void Clear()
231217
// act
232218
IndexManager.Clear<UnitTestIndexTestDocumentB>();
233219

220+
// validation
234221
documents = IndexManager.All<UnitTestIndexTestDocumentB>();
235222

236223
Assert.NotNull(documents);
237224
Assert.False(documents.Any());
238225

239-
// postconditions
240226
Postconditions();
241227
}
242228

@@ -254,9 +240,9 @@ public void All()
254240
// act
255241
var all = IndexManager.All<UnitTestIndexTestDocumentB>();
256242

243+
// validation
257244
Assert.True(all.Select(x => x.Id).OrderBy(x => x).SequenceEqual(Fixture.TestData.Select(x => x.Id).OrderBy(x => x)));
258245

259-
// postconditions
260246
Postconditions();
261247
}
262248

@@ -276,10 +262,11 @@ public void GetDocument()
276262

277263
// act
278264
var document = IndexManager.GetIndexDocument<UnitTestIndexTestDocumentB>();
265+
266+
// validation
279267
Assert.NotNull(document);
280268
Assert.True(document.GetType() == typeof(IndexDocument<UnitTestIndexTestDocumentB>));
281269

282-
// postconditions
283270
Postconditions();
284271
}
285272

@@ -298,9 +285,10 @@ public void GetDocument_Not()
298285

299286
// act
300287
var document = IndexManager.GetIndexDocument<UnitTestIndexTestDocumentB>();
288+
289+
// validation
301290
Assert.Null(document);
302291

303-
// postconditions
304292
Postconditions();
305293
}
306294
}

0 commit comments

Comments
 (0)