ln.types/test/testODB.cs

148 lines
4.1 KiB
C#

// /**
// * File: ODB.cs
// * Author: haraldwolff
// *
// * This file and it's content is copyrighted by the Author and / or copyright holder.
// * Any use wihtout proper permission is illegal and may lead to legal actions.
// *
// *
// **/
using NUnit.Framework;
using System;
using System.IO;
using ln.types.odb;
using System.Diagnostics;
using ln.types.threads;
using ln.types.odb.attributes;
using ln.types.odb.mapped;
using System.Linq;
namespace ln.types.test
{
public class testODB
{
[Test()]
public void TestCase()
{
String odbBase = Path.Combine(Path.GetTempPath(), "odb.test");
Console.WriteLine("Using path {0}", odbBase);
if (Directory.Exists(odbBase))
Directory.Delete(odbBase, true);
Guid docIdOne;
using (ODB odb = new ODB(odbBase))
{
ODBCollection<ODBTestClassA> colA = odb.GetCollection<ODBTestClassA>();
int[] numbers = new int[] { 0,53,2,34,37,35,23,1,456,7777,43,3535367 };
foreach (int n in numbers)
{
ODBTestClassA ca = new ODBTestClassA(n);
colA.Insert(ca);
}
ODBTestClassA cdouble = colA.Query(Query.Equals<ODBTestClassA>("Number", 1)).FirstOrDefault();
Assert.IsNotNull(cdouble);
Assert.AreEqual(cdouble.Number, 1);
docIdOne = cdouble.ID;
bool success = colA.Insert(cdouble);
Assert.IsFalse(success);
success = colA.Update(cdouble);
Assert.IsTrue(success);
success = colA.Upsert(cdouble);
Assert.IsTrue(success);
colA.Close();
}
using (ODB odb = new ODB(odbBase))
{
ODBCollection<ODBTestClassA> colA = odb.GetCollection<ODBTestClassA>();
Timing.Meassure("EnsureIndex", () => colA.EnsureIndex("Number"));
ODBTestClassA cSelect = colA.Query(Query.Equals<ODBTestClassA>("Number", 1)).FirstOrDefault();
Assert.AreEqual(docIdOne, cSelect.ID);
colA.Delete(cSelect);
cSelect = colA.Query(Query.Equals<ODBTestClassA>("Number", 1)).FirstOrDefault();
Assert.IsNull(cSelect);
cSelect = colA.Query(Query.Equals<ODBTestClassA>("Number", 3)).FirstOrDefault();
Assert.IsNull(cSelect);
Random random = new Random();
int choose = random.Next() % 10000;
int selection = 0;
int lc = choose;
for (int m = 0; m < 5; m++)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (int n = 0; n < 10000; n++)
{
ODBTestClassA testMass = new ODBTestClassA(random.Next());
colA.Upsert(testMass);
if (choose == 0)
selection = testMass.Number;
choose--;
}
stopwatch.Stop();
Console.WriteLine("Inserted 10000 Items in {0}ms", stopwatch.ElapsedMilliseconds);
}
Stopwatch stopwatch2 = new Stopwatch();
stopwatch2.Start();
ODBTestClassA selA = colA.Query(Query.Equals("Number", selection)).FirstOrDefault();
stopwatch2.Stop();
Console.WriteLine("Looked up item in {0}ms", stopwatch2.ElapsedMilliseconds);
}
}
}
public class ODBTestClassA
{
[DocumentID]
public readonly Guid ID = Guid.NewGuid();
public String PropertyString { get; set; }
public string FieldString;
public int Number;
private ODBTestClassA()
{ }
public ODBTestClassA(int n)
{
Number = n;
PropertyString = String.Format("Property:{0}", n);
FieldString = String.Format("Field:{0}", n);
}
}
}