ODBTests update
parent
b7d83a5e3a
commit
72ecf658e2
134
test/ODBTests.cs
134
test/ODBTests.cs
|
@ -12,7 +12,7 @@ using ln.types.odb.ng.diff;
|
|||
using System.Runtime.CompilerServices;
|
||||
namespace ln.types.test
|
||||
{
|
||||
[TestFixture()]
|
||||
[TestFixture()]
|
||||
public class ODBTests
|
||||
{
|
||||
[SetUp()]
|
||||
|
@ -72,14 +72,14 @@ namespace ln.types.test
|
|||
|
||||
document[new ODBStringValue("FeldA")] = new ODBStringValue("FeldA");
|
||||
document[new ODBStringValue("FeldB")] = new ODBStringValue("FeldB");
|
||||
Document nestedDocument = new Document();
|
||||
nestedDocument["EineZeichenkette"] = new ODBStringValue("Ich bin eine Zeichenkette");
|
||||
document[new ODBStringValue("FeldDokument")] = nestedDocument;
|
||||
Document nestedDocument = new Document();
|
||||
nestedDocument["EineZeichenkette"] = new ODBStringValue("Ich bin eine Zeichenkette");
|
||||
document[new ODBStringValue("FeldDokument")] = nestedDocument;
|
||||
|
||||
storage.Save(document);
|
||||
|
||||
documentString = document.ToString();
|
||||
Console.WriteLine("documentString={0}",documentString);
|
||||
Console.WriteLine("documentString={0}", documentString);
|
||||
|
||||
Assert.AreEqual(1, storage.GetDocumentIDs().Count());
|
||||
|
||||
|
@ -111,6 +111,42 @@ namespace ln.types.test
|
|||
}
|
||||
}
|
||||
|
||||
[TestCase()]
|
||||
public void TestStorageRecycling()
|
||||
{
|
||||
using (IStorageContainer storageContainer = new FSStorageContainer("odb.test").Open())
|
||||
{
|
||||
using (IStorage storage = storageContainer.GetStorage("testRecycle"))
|
||||
{
|
||||
storage.Open();
|
||||
String dataFileName = (storage as SegmentedFileStorage).DataFileName;
|
||||
|
||||
Document[] documents = new Document[512];
|
||||
|
||||
for (int n=0;n<documents.Length;n++)
|
||||
{
|
||||
documents[n] = new Document();
|
||||
storage.Save(documents[n]);
|
||||
}
|
||||
//(storage as SegmentedFileStorage).Sync();
|
||||
|
||||
long startSize = new FileInfo(dataFileName).Length;
|
||||
|
||||
for (int n = 0; n < documents.Length; n++)
|
||||
{
|
||||
storage.Save(documents[n]);
|
||||
//(storage as SegmentedFileStorage).Sync();
|
||||
|
||||
long newSize = new FileInfo(dataFileName).Length;
|
||||
long grew = newSize - startSize;
|
||||
|
||||
Assert.AreEqual(4096, grew);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Person[] persons = new Person[]{
|
||||
new Person()
|
||||
{
|
||||
|
@ -125,14 +161,14 @@ namespace ln.types.test
|
|||
LastName = "Müller",
|
||||
Age=39
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
[TestCase()]
|
||||
public void TestClassMapping()
|
||||
{
|
||||
ClassMapping classMapping = new ClassMapping(typeof(Person));
|
||||
|
||||
Document doc1 = classMapping.MapValue(Mapper.Default,persons[0]) as Document;
|
||||
Document doc1 = classMapping.MapValue(Mapper.Default, persons[0]) as Document;
|
||||
Document doc2 = doc1.Clone() as Document;
|
||||
|
||||
Person p2 = classMapping.UnmapValue(Mapper.Default, doc2) as Person;
|
||||
|
@ -166,64 +202,64 @@ namespace ln.types.test
|
|||
Assert.AreEqual(1, mapper.Load<Person>(Query.Equals<Person>("FirstName", "Harald")).Count());
|
||||
Assert.AreEqual(1, mapper.Load<Person>(Query.Equals<Person>("FirstName", "Liesschen")).Count());
|
||||
|
||||
Person harald = mapper.Load<Person>(Query.Equals<Person>("FirstName", "Harald")).FirstOrDefault();
|
||||
Person harald = mapper.Load<Person>(Query.Equals<Person>("FirstName", "Harald")).FirstOrDefault();
|
||||
|
||||
Assert.AreEqual(persons[0], harald);
|
||||
Assert.AreEqual(persons[0], harald);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[TestCase()]
|
||||
public void TestConcurrentAccess()
|
||||
{
|
||||
using (IStorageContainer storageContainer = new FSStorageContainer("odb.test").Open())
|
||||
{
|
||||
using (
|
||||
SessionStorageContainer
|
||||
ssc1 = new SessionStorageContainer(storageContainer),
|
||||
ssc2 = new SessionStorageContainer(storageContainer)
|
||||
)
|
||||
{
|
||||
using (IStorage
|
||||
storage1 = ssc1.GetStorage("test2"),
|
||||
storage2 = ssc2.GetStorage("test2")
|
||||
)
|
||||
{
|
||||
Document origin = new Document();
|
||||
[TestCase()]
|
||||
public void TestConcurrentAccess()
|
||||
{
|
||||
using (IStorageContainer storageContainer = new FSStorageContainer("odb.test").Open())
|
||||
{
|
||||
using (
|
||||
SessionStorageContainer
|
||||
ssc1 = new SessionStorageContainer(storageContainer),
|
||||
ssc2 = new SessionStorageContainer(storageContainer)
|
||||
)
|
||||
{
|
||||
using (IStorage
|
||||
storage1 = ssc1.GetStorage("test2"),
|
||||
storage2 = ssc2.GetStorage("test2")
|
||||
)
|
||||
{
|
||||
Document origin = new Document();
|
||||
|
||||
origin["FeldA"] = new ODBStringValue("OriginalA");
|
||||
origin["FeldB"] = new ODBStringValue("OriginalB");
|
||||
origin["FeldC"] = new ODBStringValue("OriginalC");
|
||||
origin["FeldA"] = new ODBStringValue("OriginalA");
|
||||
origin["FeldB"] = new ODBStringValue("OriginalB");
|
||||
origin["FeldC"] = new ODBStringValue("OriginalC");
|
||||
|
||||
storage1.Save(origin);
|
||||
storage1.Save(origin);
|
||||
|
||||
Document secondary = storage2.Load(origin.ID);
|
||||
Document secondary = storage2.Load(origin.ID);
|
||||
|
||||
Assert.IsTrue(origin.CompareTo(secondary) == 0);
|
||||
Assert.IsTrue(origin.CompareTo(secondary) == 0);
|
||||
|
||||
secondary["FeldB"] = new ODBStringValue("ZweiB");
|
||||
storage2.Save(secondary);
|
||||
secondary["FeldB"] = new ODBStringValue("ZweiB");
|
||||
storage2.Save(secondary);
|
||||
|
||||
Assert.IsFalse(origin.CompareTo(secondary) == 0);
|
||||
Assert.IsFalse(origin.CompareTo(secondary) == 0);
|
||||
|
||||
Document reloaded1 = storage1.Load(origin.ID);
|
||||
Assert.AreSame(reloaded1, origin);
|
||||
Document reloaded1 = storage1.Load(origin.ID);
|
||||
Assert.AreSame(reloaded1, origin);
|
||||
|
||||
Assert.IsFalse(secondary.CompareTo(reloaded1) == 0);
|
||||
Assert.IsFalse(secondary.CompareTo(origin) == 0);
|
||||
|
||||
storage1.Refresh(reloaded1);
|
||||
|
||||
Assert.IsTrue(secondary.CompareTo(reloaded1) == 0);
|
||||
Assert.IsTrue(secondary.CompareTo(reloaded1) == 0);
|
||||
Assert.IsTrue(secondary.CompareTo(origin) == 0);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[TestCase()]
|
||||
public void TestDiff()
|
||||
|
@ -273,7 +309,7 @@ namespace ln.types.test
|
|||
|
||||
for (int n = 0; n < 2; n++)
|
||||
{
|
||||
((docD["documents"] as ODBList)[2+n] as Document)["value"] = new ODBInteger(100 + n);
|
||||
((docD["documents"] as ODBList)[2 + n] as Document)["value"] = new ODBInteger(100 + n);
|
||||
}
|
||||
|
||||
Console.WriteLine("docA:\n{0}", docA.TreeString);
|
||||
|
@ -325,7 +361,7 @@ namespace ln.types.test
|
|||
|
||||
public class Person
|
||||
{
|
||||
public readonly Guid ID;
|
||||
public readonly Guid ID;
|
||||
|
||||
public String FirstName = "";
|
||||
public String[] MiddleNames = new string[0];
|
||||
|
@ -336,13 +372,13 @@ namespace ln.types.test
|
|||
public Something Something = new Something();
|
||||
|
||||
public Person()
|
||||
{
|
||||
ID = Guid.NewGuid();
|
||||
}
|
||||
{
|
||||
ID = Guid.NewGuid();
|
||||
}
|
||||
|
||||
public override int GetHashCode() => ID.GetHashCode();
|
||||
public override bool Equals(object obj) => (obj is Person) && ID.Equals((obj as Person).ID);
|
||||
}
|
||||
public override int GetHashCode() => ID.GetHashCode();
|
||||
public override bool Equals(object obj) => (obj is Person) && ID.Equals((obj as Person).ID);
|
||||
}
|
||||
|
||||
public class Something
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue