internal SSearchTree(T n, SSearchTree <T>?lf, SSearchTree <T>?rg) : base(1 + lf?.Length ?? 0 + rg?.Length ?? 0) { node = n; left = lf; right = rg; }
public void deepCopyAndFindTest() { tml.setTestCaseName("DeepCopyAndFindIn100"); SSearchTree <Payload> tree = createTreeOfSize(100); tml.setInitialTimeAndMemory(); SSearchTree <Payload> treeCpy = tree; treeCpy.Contains(new Payload("Load 25")); tml.logTimeAndMemoryUsage(25); /////////// tree = createTreeOfSize(100); this.callTheGC(); tml.setInitialTimeAndMemory(); treeCpy = tree; treeCpy.Contains(new Payload("Load 50")); tml.logTimeAndMemoryUsage(50); /////////////// tree = createTreeOfSize(100); this.callTheGC(); tml.setInitialTimeAndMemory(); treeCpy = tree; treeCpy.Contains(new Payload("Load 75")); tml.logTimeAndMemoryUsage(75); ////////////// tree = createTreeOfSize(100); this.callTheGC(); tml.setInitialTimeAndMemory(); treeCpy = tree; treeCpy.Contains(new Payload("Load 99")); tml.logTimeAndMemoryUsage(100); }
private SSearchTree <Payload> createTreeOfSize(int numberOfElements) { SSearchTree <Payload> tree = SSearchTree <Payload> .New(new Payload("Load 0")); for (int i = 1; i < numberOfElements; i++) { tree += new Payload("Load " + i); } return(tree); }
private void reusableSTreeTestCase(String caseName, int numberOfElements) { tml.setTestCaseName(caseName); SSearchTree <Payload> tree = SSearchTree <Payload> .New(new Payload("Load 0")); for (int i = 1; i < numberOfElements; i++) { tree += new Payload("Load " + i); tml.logTimeAndMemoryUsage(i + 1); } }
internal SSearchTreeBookmark(SSearchTree <T> s, bool doLeft, SList <SSearchTree <T> >?stk = null, int p = 0) : base(p) { if (stk == null) { stk = SList <SSearchTree <T> > .Empty; } for (; doLeft && s.left != SSearchTree <T> .Empty; s = s.left ?? throw new System.Exception("PE22")) { stk = stk + (s, 0); } _s = s; _stk = stk; }
public void FindElementIn100() { tml.setTestCaseName("Find elements in 100"); SSearchTree <Payload> tree = createTreeOfSize(100); Payload toBeFound_25 = new Payload("Load 25"); Payload toBeFound_50 = new Payload("Load 50"); Payload toBeFound_75 = new Payload("Load 75"); Payload toBeFound_100 = new Payload("Load 99"); tml.setInitialTimeAndMemory(); tree.Contains(toBeFound_25); tml.logTimeAndMemoryUsage(25); tree.Contains(toBeFound_50); tml.logTimeAndMemoryUsage(50); tree.Contains(toBeFound_75); tml.logTimeAndMemoryUsage(75); tree.Contains(toBeFound_100); tml.logTimeAndMemoryUsage(100); }
SSearchTree() : base(0) { node = default(T); left = null; right = null; }
static void Main(string[] args) { // Tests for SList (unordered list) var sl = SList <string> .New("Red", "Blue", "Green"); sl = sl.InsertAt("Yellow", 0); var s2 = sl; sl = sl.RemoveAt(3); sl = sl.UpdateAt("Pink", 1); sl = sl.InsertAt("Orange", 2); Check <string>(sl.ToArray(), "Yellow", "Pink", "Orange", "Blue"); Check <string>(s2.ToArray(), "Yellow", "Red", "Blue", "Green"); Console.WriteLine("SList done"); // Tests for SArray var sa = new SArray <string>("Red", "Blue", "Green"); sa = sa.InsertAt(0, "Yellow"); sa = sa.RemoveAt(3); var sb = sa; sa = sa.InsertAt(2, "Orange", "Violet"); Check(sa.ToArray(), "Yellow", "Red", "Orange", "Violet", "Blue"); Check(sb.ToArray(), "Yellow", "Red", "Blue"); Console.WriteLine("SArray done"); // Tests for SSearchTree<string> var ss = SSearchTree <string> .New("InfraRed", "Red", "Orange", "Yellow", "Green", "Blue", "Violet"); Check(ss.ToArray(), "Blue", "Green", "InfraRed", "Orange", "Red", "Violet", "Yellow"); var si = SSearchTree <int> .New(56, 22, 24, 31, 23); Check(si.ToArray(), 22, 23, 24, 31, 56); Console.WriteLine("SSearchTree done"); // Tests for SDict var sd = SDict <string, string> .Empty; sd = sd.Add("Y", "Yellow"); sd = sd.Add("G", "Green"); sd = sd.Add("B", "Blue"); sd = sd.Remove("G"); var sr = new string[sd.Count]; var j = 0; for (var b = sd.First(); b != null; b = b.Next()) { sr[j++] = b.Value.key + ": " + b.Value.val; } Check(sr, "B: Blue", "Y: Yellow"); Console.WriteLine("SDict done"); // Tests for SMTree var ti = SList <TreeInfo> .Empty; ti = ti.InsertAt(new TreeInfo("0", 'D', 'D'), 0); // onDuplicate must be Disallow on all except last entry ti = ti.InsertAt(new TreeInfo("1", 'A', 'A'), 1); var sm = new SMTree(ti); var test = new string[] { "BALTIM", "ANNU", "A", "ANNO", "BALTIC", "BRAIL" }; for (var i = 0; i < test.Length; i++) { sm = Add(sm, test[i], i); } var sorted = new string[test.Length]; j = 0; for (var b = sm.First(); b != null; b = b.Next()) { sorted[j++] = test[((MTreeBookmark)b).value()]; } // we are only sorting on the first two letters! // Check() we should offer some alternatives here Check(sorted, "A", "ANNU", "ANNO", "BALTIM", "BALTIC", "BRAIL"); Console.WriteLine("SMTree done"); File.Delete("strong"); File.Create("strong").Close(); var d = SDatabase.Open("strong"); var tr = new STransaction(d); tr = new STransaction(tr, new SString("This is Strong")); tr = new STransaction(tr, new STable(tr, "tbl")); var c = tr.Commit(); d.Close(); d = SDatabase.Open("strong"); Console.WriteLine(d.objects.First().Value.val.ToString()); Console.ReadKey(); }