Example #1
0
        public void TestLinq()
        {
            using (var collection = new LargeCollection <string>(50000, str => str.Length * sizeof(char))) {
                collection.PageLoaded += (largeCollection, page) => {
                    System.Console.WriteLine("Page Loaded: {0}\t\t{1}", page.PageNumber, largeCollection.PageCount);
                };
                collection.PageUnloaded += (largeCollection, page) => {
                    System.Console.WriteLine("Page Unloaded: {0}\t\t{1}", page.PageNumber, largeCollection.PageCount);
                };

                for (int i = 0; i < 100000; i++)
                {
                    collection.Add(i.ToString());
                }
                var xxx = collection
                          .Where(s => s.StartsWith("1"))
                          .Union(collection.Where(s => s.StartsWith("2")))
                          .Reverse();

                foreach (var val in xxx)
                {
                    Assert.IsTrue(val.StartsWith("1") || val.StartsWith("2"));
                }
            }
        }
Example #2
0
 public void TestEmpty()
 {
     using (var collection = new LargeCollection <string>(40, str => str.Length * sizeof(char))) {
         Assert.AreEqual(1, collection.PageCount);
         Assert.AreEqual(0, collection.Count);
     }
 }
Example #3
0
 public TextLog()
 {
     InitializeComponent();
     _appendQueue = new ProducerConsumerQueue <char>((c) => sizeof(char), 100000);
     _data        = new LargeCollection <char>(65536, (c) => sizeof(char));
     _throttle    = new Throttle(2.0f);
 }
Example #4
0
 public void TestIteratorEmpty()
 {
     using (var collection = new LargeCollection <string>(40, str => str.Length * sizeof(char))) {
         foreach (var item in collection)
         {
             var xxx = 1;
         }
     }
 }
Example #5
0
 public void TestEmptyItems()
 {
     using (var collection = new LargeCollection <string>(1, str => str.Length * sizeof(char))) {
         collection.Add("");
         collection.Add("");
         collection.Add("");
         Assert.AreEqual(1, collection.PageCount);
         Assert.AreEqual(3, collection.Count);
     }
 }
        public override ICollection <SQLStatement> CreateContainerForStatements()
        {
            var container = new LargeCollection <SQLStatement>(
                _pageSize,
                statement => sizeof(SQLStatementType) + statement.SQL.Length * sizeof(char)
                );

            //container.PageSwapped += (statements, oldPage, newPage) =>
            //    SystemLog.Error("Page Swap: {0} - {1} / {2}", oldPage.PageNumber, newPage.PageNumber, statements.PageCount);
            _generatedContainers.Add(container);
            return(container);
        }
Example #7
0
        public void TestSinglePage()
        {
            using (var collection = new LargeCollection <string>(100, str => str.Length * sizeof(char))) {
                collection.Add("01234567890123456789012345678901234567890123456789");

                var pages = collection.Pages.ToArray();
                Assert.AreEqual(1, pages.Length);
                Assert.AreEqual(0, pages[0].StartIndex);
                Assert.AreEqual(0, pages[0].EndIndex);
                Assert.AreEqual(1, pages[0].Count);
                Assert.AreEqual(100, pages[0].Size);
            }
        }
Example #8
0
        public void TestIterator1()
        {
            var data        = new [] { "012345", "6789", "01", "2345678", "0123456789", "0123456789", "0123456789", "0123456789", "0123456789", "0123456789", "0123456789", "0123456789" };
            var pageLoads   = new List <int>();
            var pageUnloads = new List <int>();

            using (var collection = new LargeCollection <string>(40, str => str.Length * sizeof(char))) {
                collection.PageLoaded   += (largeCollection, page) => pageLoads.Add(page.PageNumber);
                collection.PageUnloaded += (largeCollection, page) => pageUnloads.Add(page.PageNumber);
                collection.Add(data[0]);  // page 0
                collection.Add(data[1]);  // page 0
                collection.Add(data[2]);  // page 0
                collection.Add(data[3]);  // page 0  (38 bytes)
                collection.Add(data[4]);  // page 1
                collection.Add(data[5]);  // page 1
                collection.Add(data[6]);  // page 2
                collection.Add(data[7]);  // page 2
                collection.Add(data[8]);  // page 3
                collection.Add(data[9]);  // page 3
                collection.Add(data[10]); // page 4
                collection.Add(data[11]); // page 4

                foreach (var item in collection.WithDescriptions())
                {
                    Assert.AreEqual(item.Item, data[item.Index]);
                }

                // Page Swaps - should be 9, 4 on create, 5 on access
                Assert.AreEqual(9, pageUnloads.Count);
                Assert.AreEqual(9, pageLoads.Count);
                Assert.AreEqual(0, pageUnloads[0]);
                Assert.AreEqual(1, pageLoads[0]);
                Assert.AreEqual(1, pageUnloads[1]);
                Assert.AreEqual(2, pageLoads[1]);
                Assert.AreEqual(2, pageUnloads[2]);
                Assert.AreEqual(3, pageLoads[2]);
                Assert.AreEqual(3, pageUnloads[3]);
                Assert.AreEqual(4, pageLoads[3]);
                Assert.AreEqual(4, pageUnloads[4]);
                Assert.AreEqual(0, pageLoads[4]);
                Assert.AreEqual(0, pageUnloads[5]);
                Assert.AreEqual(1, pageLoads[5]);
                Assert.AreEqual(1, pageUnloads[6]);
                Assert.AreEqual(2, pageLoads[6]);
                Assert.AreEqual(2, pageUnloads[7]);
                Assert.AreEqual(3, pageLoads[7]);
                Assert.AreEqual(3, pageUnloads[8]);
                Assert.AreEqual(4, pageLoads[8]);
            }
        }
Example #9
0
        public void TestPageSwaps()
        {
            var pageLoads   = new List <int>();
            var pageUnloads = new List <int>();

            using (var collection = new LargeCollection <string>(40, str => str.Length * sizeof(char))) {
                collection.PageLoaded   += (largeCollection, page) => pageLoads.Add(page.PageNumber);
                collection.PageUnloaded += (largeCollection, page) => pageUnloads.Add(page.PageNumber);
                collection.Add("012345");     // page 0
                collection.Add("6789");       // page 0
                collection.Add("01");         // page 0
                collection.Add("2345678");    // page 0  (38 bytes)
                collection.Add("0123456789"); // page 1
                collection.Add("0123456789"); // page 1
                collection.Add("0123456789"); // page 2
                collection.Add("0123456789"); // page 2
                collection.Add("0123456789"); // page 3
                collection.Add("0123456789"); // page 3
                collection.Add("0123456789"); // page 4
                collection.Add("0123456789"); // page 4

                for (int i = 0; i < collection.Count; i++)
                {
                    var item = collection[i];
                }

                // Page Swaps - should be 9, 4 on create, 5 on access
                Assert.AreEqual(9, pageUnloads.Count);
                Assert.AreEqual(9, pageLoads.Count);
                Assert.AreEqual(0, pageUnloads[0]);
                Assert.AreEqual(1, pageLoads[0]);
                Assert.AreEqual(1, pageUnloads[1]);
                Assert.AreEqual(2, pageLoads[1]);
                Assert.AreEqual(2, pageUnloads[2]);
                Assert.AreEqual(3, pageLoads[2]);
                Assert.AreEqual(3, pageUnloads[3]);
                Assert.AreEqual(4, pageLoads[3]);
                Assert.AreEqual(4, pageUnloads[4]);
                Assert.AreEqual(0, pageLoads[4]);
                Assert.AreEqual(0, pageUnloads[5]);
                Assert.AreEqual(1, pageLoads[5]);
                Assert.AreEqual(1, pageUnloads[6]);
                Assert.AreEqual(2, pageLoads[6]);
                Assert.AreEqual(2, pageUnloads[7]);
                Assert.AreEqual(3, pageLoads[7]);
                Assert.AreEqual(3, pageUnloads[8]);
                Assert.AreEqual(4, pageLoads[8]);
            }
        }
Example #10
0
 public void TestIteratorOverChangedCollection()
 {
     using (var collection = new LargeCollection <string>(40, str => str.Length * sizeof(char))) {
         collection.Add("10");
         var thrown = false;
         try {
             foreach (var item in collection)
             {
                 var xxx = 1;
                 collection.Add("20");
             }
         } catch (Exception error) {
             thrown = true;
         }
         Assert.IsTrue(thrown, "Exception was not thrown");
     }
 }
Example #11
0
        public void TestTwoPages2()
        {
            var pageLoads   = new List <int>();
            var pageUnloads = new List <int>();

            using (var collection = new LargeCollection <string>(100, str => str.Length * sizeof(char))) {
                collection.PageLoaded   += (largeCollection, page) => pageLoads.Add(page.PageNumber);
                collection.PageUnloaded += (largeCollection, page) => pageUnloads.Add(page.PageNumber);
                collection.Add("0123456789");
                collection.Add("0123456789");
                collection.Add("0123456789");
                collection.Add("0123456789");
                collection.Add("0123456789");
                collection.Add("0123456789");
                collection.Add("0123456789");
                collection.Add("0123456789");
                collection.Add("0123456789");
                collection.Add("012345678");

                Assert.AreEqual(10, collection.Count);
                var pages = collection.Pages.ToArray();
                Assert.AreEqual(2, pages.Length);

                // Page 0
                Assert.AreEqual(0, pages[0].PageNumber);
                Assert.AreEqual(0, pages[0].StartIndex);
                Assert.AreEqual(4, pages[0].EndIndex);
                Assert.AreEqual(5, pages[0].Count);
                Assert.AreEqual(100, pages[0].Size);

                // Page 1
                Assert.AreEqual(1, pages[1].PageNumber);
                Assert.AreEqual(5, pages[1].StartIndex);
                Assert.AreEqual(9, pages[1].EndIndex);
                Assert.AreEqual(5, pages[1].Count);
                Assert.AreEqual(98, pages[1].Size);


                // Page Swaps
                Assert.AreEqual(1, pageLoads.Count);
                Assert.AreEqual(1, pageUnloads.Count);
                Assert.AreEqual(0, pageUnloads[0]);
                Assert.AreEqual(1, pageLoads[0]);
            }
        }
Example #12
0
        public void TestGrowWhilstRandomAccess()
        {
            using (var collection = new LargeCollection <string>(5000, str => str.Length * sizeof(char))) {
                collection.PageLoaded += (largeCollection, page) => {
                    System.Console.WriteLine("Page Loaded: {0}\t\t{1}", page.PageNumber, largeCollection.PageCount);
                };
                collection.PageUnloaded += (largeCollection, page) => {
                    System.Console.WriteLine("Page Unloaded: {0}\t\t{1}", page.PageNumber, largeCollection.PageCount);
                };


                for (var i = 0; i < 100; i++)
                {
                    collection.Add(Tools.Text.GenerateRandomString(Tools.Maths.RandomNumberGenerator.Next(100, 1000)));
                    for (var j = 0; j < 3; j++)
                    {
                        var str = collection[Tools.Maths.RandomNumberGenerator.Next(0, collection.Count - 1)];
                    }
                }
            }
        }