public override int Serialize(ref byte[] bytes, int offset, KeyTuple <T1> value) { var startOffset = offset; offset += this.formatter1.Serialize(ref bytes, offset, value.Item1); return(offset - startOffset); }
public IEnumerable <TElement> this[KeyTuple <TKey1, TKey2, TKey3, TKey4, TKey5, TKey6> key] { get { return(this.innerMemory.FindMany(key)); } }
public void Class() { var mc = new MyClass { MyReadOnlyListOne = new List <int> { 1, 10, 100, 1000 }, MyReadOnlyListTwo = new string[] { "a", "bcde", "fghijklmnop" }, MyReadOnlyDictOne = new Dictionary <int, string> { { 0, "a" }, { 100, "bcd" } }, MyReadOnlyDictTwo = new Dictionary <KeyTuple <int, string>, string> { { KeyTuple.Create(10, "aiueo"), "AAA" }, { KeyTuple.Create(999, "nano"), "sa" } } }; var converted = ZeroFormatterSerializer.Convert(mc); converted.MyReadOnlyListOne.Is(1, 10, 100, 1000); converted.MyReadOnlyListTwo.Is("a", "bcde", "fghijklmnop"); var r1 = converted.MyReadOnlyDictOne.OrderBy(x => x.Key).ToArray(); r1[0].Key.Is(0); r1[0].Value.Is("a"); r1[1].Key.Is(100); r1[1].Value.Is("bcd"); var r2 = converted.MyReadOnlyDictTwo.OrderBy(x => x.Key.Item1).ToArray(); r2[0].Key.Is(KeyTuple.Create(10, "aiueo")); r2[0].Value.Is("AAA"); r2[1].Key.Is(KeyTuple.Create(999, "nano")); r2[1].Value.Is("sa"); }
public void KeyTupleFormatter() { var kc = new KeyTupleCheck(); kc.KeyTupleDictionary = new Dictionary <KeyTuple <int, string>, MyClass> { { KeyTuple.Create(1, "aaa"), new MyClass { Age = 10, FirstName = "hoge", LastName = "huga", MyList = new [] { 1, 10, 100 } } }, { KeyTuple.Create(9, "zzz"), new MyClass { Age = 20, FirstName = "hage", LastName = "hnga", MyList = new [] { 3, 44, 200 } } }, { KeyTuple.Create(4, "vda"), new MyClass { Age = 30, FirstName = "hbge", LastName = "hzga", MyList = new [] { 4, 33, 300 } } } }; var converted = ZeroFormatterSerializer.Convert(kc); converted.KeyTupleDictionary.Count.Is(3); var a = converted.KeyTupleDictionary[KeyTuple.Create(1, "aaa")]; var b = converted.KeyTupleDictionary[KeyTuple.Create(9, "zzz")]; var c = converted.KeyTupleDictionary[KeyTuple.Create(4, "vda")]; a.Age.Is(10); a.FirstName.Is("hoge"); a.LastName.Is("huga"); a.MyList.IsCollection(1, 10, 100); b.Age.Is(20); b.FirstName.Is("hage"); b.LastName.Is("hnga"); b.MyList.IsCollection(3, 44, 200); c.Age.Is(30); c.FirstName.Is("hbge"); c.LastName.Is("hzga"); c.MyList.IsCollection(4, 33, 300); }
public void VariableReadOnlyList() { var bytes = new byte[1000]; IReadOnlyList <string> variableList = new[] { "abcde", "fghijk" }; var record = KeyTuple.Create("aiueo", variableList, "kakikukeko"); var size = ZeroFormatterSerializer.Serialize(ref bytes, 33, record); var newBytes = new byte[2000]; Buffer.BlockCopy(bytes, 33, newBytes, 99, size); var result = ZeroFormatterSerializer.Deserialize <KeyTuple <string, IList <string>, string> >(newBytes, 99); { result.Item1.Is("aiueo"); var l = result.Item2; l.Count.Is(2); l[0].Is("abcde"); l[1].Is("fghijk"); result.Item3.Is("kakikukeko"); } result.Item2[0] = "zzzzz"; // mutate var reconvert = ZeroFormatterSerializer.Convert(result); { reconvert.Item1.Is("aiueo"); var l = reconvert.Item2; l.Count.Is(2); l[0].Is("zzzzz"); l[1].Is("fghijk"); reconvert.Item3.Is("kakikukeko"); } }
public void FindManyMultiKey() { var data = CreateData(); var memory = CreateMemory(data); var secondary = memory.SecondaryIndex("FirstName.Age", x => KeyTuple.Create(x.FirstName, x.Age)); secondary.FindMany(KeyTuple.Create("aaa", 89)).Select(x => x.Id).OrderBy(x => x).IsCollection(2, 4); secondary.FindMany(KeyTuple.Create("aaa", 89), false).Select(x => x.Id).OrderByDescending(x => x).IsCollection(4, 2); }
public override int Serialize(ref byte[] bytes, int offset, KeyTuple <T1>?value) { BinaryUtil.WriteBoolean(ref bytes, offset, value.HasValue); if (value.HasValue) { var startOffset = offset; offset += 1; offset += this.formatter1.Serialize(ref bytes, offset, value.Value.Item1); return(offset - startOffset); } else { return(1); } }
public void MultiKeyFind() { var data = CreateData(); var memory = CreateMemory(data); var secondary = memory.SecondaryIndex("FirstName.LastName", x => KeyTuple.Create(x.FirstName, x.LastName)); foreach (var item in data) { var f = secondary.Find(KeyTuple.Create(item.FirstName, item.LastName)); item.Id.Is(f.Id); } Assert.Throws <KeyNotFoundException>(() => secondary.Find(KeyTuple.Create("aaa", "___"))); Assert.Throws <KeyNotFoundException>(() => secondary.Find(KeyTuple.Create("___", "foo"))); secondary.FindOrDefault(KeyTuple.Create("aaa", "___")).IsNull(); secondary.FindOrDefault(KeyTuple.Create("___", "foo")).IsNull(); }
public void FindClosestMultiKey() { var data = CreateData(); var memory = CreateMemory(data); // Age of aaa //new Sample { Id = 5, Age = 19, FirstName = "aaa", LastName = "foo" }, //new Sample { Id = 2, Age = 89, FirstName = "aaa", LastName = "bar" }, //new Sample { Id = 4, Age = 89, FirstName = "aaa", LastName = "tako" }, //new Sample { Id = 9, Age = 99, FirstName = "aaa", LastName = "ika" }, var secondary = memory.SecondaryIndex("FirstName.Age", x => KeyTuple.Create(x.FirstName, x.Age)); secondary.FindClosest(KeyTuple.Create("aaa", 10), true).Age.Is(19); secondary.FindClosest(KeyTuple.Create("aaa", 92), true).Age.Is(89); secondary.FindClosest(KeyTuple.Create("aaa", 120), true).Age.Is(99); secondary.FindClosest(KeyTuple.Create("aaa", 10), false).Age.Is(19); secondary.FindClosest(KeyTuple.Create("aaa", 73), false).Age.Is(89); secondary.FindClosest(KeyTuple.Create("aaa", 120), false).Age.Is(99); }
public static void Main(string[] args) { var mc = new WhatC { MyReadOnlyListOne = new List <int> { 1, 10, 100, 1000 }, MyReadOnlyListTwo = new string[] { "a", "bcde", "fghijklmnop" }, MyReadOnlyDictOne = new Dictionary <int, string> { { 0, "a" }, { 100, "bcd" } }, MyReadOnlyDictTwo = new Dictionary <KeyTuple <int, string>, string> { { KeyTuple.Create(10, "aiueo"), "AAA" }, { KeyTuple.Create(999, "nano"), "sa" } } }; var converted = ZeroFormatterSerializer.Convert(mc); var huga = converted.MyReadOnlyListOne; Console.WriteLine(huga[0]); }
public void KeyTupleTest() { { var t1 = KeyTuple.Create(100, 200, 300); var t2 = ZeroFormatterSerializer.Convert(t1); t2.Item1.Is(t1.Item1); t2.Item2.Is(t1.Item2); t2.Item3.Is(t1.Item3); } { var t1 = KeyTuple.Create(100, 200, 300, "aaa", "bbb", MyEnum.Fruit); var t2 = ZeroFormatterSerializer.Convert(t1); t2.Item1.Is(t1.Item1); t2.Item2.Is(t1.Item2); t2.Item3.Is(t1.Item3); t2.Item4.Is(t1.Item4); t2.Item5.Is(t1.Item5); t2.Item6.Is(t1.Item6); } }
public void ClassRelative() { var bytes = new byte[1000]; var variableField = new MyClass { Age = 99, FirstName = "aaa", LastName = "bbb" }; var record = KeyTuple.Create("aiueo", variableField, "kakikukeko"); var size = ZeroFormatterSerializer.Serialize(ref bytes, 33, record); var newBytes = new byte[2000]; Buffer.BlockCopy(bytes, 33, newBytes, 99, size); var result = ZeroFormatterSerializer.Deserialize <KeyTuple <string, MyClass, string> >(newBytes, 99); { result.Item1.Is("aiueo"); var l = result.Item2; l.Age.Is(99); l.FirstName.Is("aaa"); l.LastName.Is("bbb"); result.Item3.Is("kakikukeko"); } result.Item2.LastName = "zzzzz"; // mutate var reconvert = ZeroFormatterSerializer.Convert(result); { reconvert.Item1.Is("aiueo"); var l = reconvert.Item2; l.Age.Is(99); l.FirstName.Is("aaa"); l.LastName.Is("zzzzz"); reconvert.Item3.Is("kakikukeko"); } }
public void RegisterSubType(object key, Type subType) { this.isStartRegister = true; this.subTypes.Add(KeyTuple.Create(key, subType)); }
public bool Contains(KeyTuple <TKey1, TKey2, TKey3, TKey4, TKey5, TKey6> key) { TElement v; return(innerMemory.TryFind(key, out v)); }
public void Unique() { var memory = CreateMemory(CreateData()); var byIdAndAgeAndFirstNameAndLastName = memory.SecondaryIndex("AllIndex", x => KeyTuple.Create(x.Id, x.Age, x.FirstName, x.LastName)); var byId = byIdAndAgeAndFirstNameAndLastName.UseIndex1(); var byIdAndAge = byIdAndAgeAndFirstNameAndLastName.UseIndex12(); var byIdAndAgeAndFirstName = byIdAndAgeAndFirstNameAndLastName.UseIndex123(); byId.Find(8).Id.Is(8); byId.FindOrDefault(100).IsNull(); byIdAndAge.Find(4, 89).Id.Is(4); byIdAndAge.FindOrDefault(4, 899).IsNull(); byIdAndAge.FindOrDefault(5, 89).IsNull(); byIdAndAgeAndFirstName.Find(6, 29, "bbb").Id.Is(6); byIdAndAgeAndFirstName.FindOrDefault(6, 29, "bbbz").IsNull(); }
public void Range() { var memory = CreateMemory(CreateData()); var byFirstNameAndLastNameAndAge = memory.SecondaryIndex("FirstName.LastName.Age", x => KeyTuple.Create(x.FirstName, x.LastName, x.Age)); var byFirstName = byFirstNameAndLastNameAndAge.UseIndex1(); var byFirstNameAndLastName = byFirstNameAndLastNameAndAge.UseIndex12(); byFirstName.FindMany("eee").Select(x => x.Id).OrderBy(x => x).Is(1, 10); byFirstName.FindMany("eeee").Count.Is(0); byFirstNameAndLastName.FindMany("aaa", "foo").Select(x => x.Id).OrderBy(x => x).Is(5); byFirstNameAndLastName.FindClosest("aaa", "takz").Id.Is(4); }
public int GetHashCode(KeyTuple <T1> obj) { return(ZeroFormatterEqualityComparer <T1> .Default.GetHashCode(obj.Item1)); }
public bool Equals(KeyTuple <T1> x, KeyTuple <T1> y) { return(ZeroFormatterEqualityComparer <T1> .Default.Equals(x.Item1, y.Item1)); }