private static void CommandExecution(IHashTable hashTable)
        {
            int number = int.Parse(Console.ReadLine());

            while (number != 0)
            {
                switch (number)
                {
                case 1:
                {
                    int value = ValueEntryRequest();
                    hashTable.Add(value);
                }
                break;

                case 2:
                {
                    int value = ValueEntryRequest();
                    hashTable.Remove(value);
                }
                break;

                case 3:
                {
                    int value = ValueEntryRequest();
                    if (hashTable.Exists(value))
                    {
                        Console.WriteLine("Value is in the hash table");
                    }
                    else
                    {
                        Console.WriteLine("Value is not in the hash table");
                    }
                }
                break;

                case 4:
                    hashTable.Print();
                    break;

                case 5:
                    hashTable.Clear();
                    break;

                default:
                    Console.WriteLine("Enter correct number");
                    break;
                }

                Console.Write("Input number: ");
                number = int.Parse(Console.ReadLine());
            }
        }
        public void HashTableClearTest()
        {
            foreach (Type hashTableType in this.hashTableTypes)
            {
                IHashTable hashTable = Activator.CreateInstance(hashTableType) as IHashTable;
                Assert.IsTrue(hashTable.Add(5));
                hashTable.Clear();

                Assert.IsTrue(hashTable.Count() == 0,
                              "hash table [{0}] should contains 0 elements after clearing",
                              hashTableType.Name);
            }
        }
Exemple #3
0
        public void RunTest(string TestName, string FileName, IHashTable ht, Random rnd, TestCase testcase)
        {
            using (var file = new StreamWriter(FileName, false, Encoding.UTF8))
            {
                totalTimer.Start();

                #region Header
                var line = testcase.ToStringFull() + $"{ht.Capacity}; " + $"{ht.Capacity * ht.EntrySize}; ";
                Console.WriteLine(line);
                file.WriteLine(line);

                var head = $"loadFactor; " +
                           $"{TestName}(вставка), кол.проб; " +
                           $"{TestName}(вставка), ср.кол.проб; " +
                           $"{TestName}(вставка), кол.тиков; " +
                           $"{TestName}(вставка), ср.кол.тиков; " +
                           $"{TestName}(успеш.поиск), кол.проб; " +
                           $"{TestName}(успеш.поиск), ср.кол.проб; " +
                           $"{TestName}(успеш.поиск), кол.тиков; " +
                           $"{TestName}(успеш.поиск), ср.кол.тиков; " +
                           $"{TestName}(неусп.поиск), кол.проб; " +
                           $"{TestName}(неусп.поиск), ср.кол.проб; " +
                           $"{TestName}(неусп.поиск), кол.тиков; " +
                           $"{TestName}(неусп.поиск), ср.кол.тиков; " +
                           $"";
                Console.WriteLine(head);
                file.WriteLine(head);
                file.Flush();
                #endregion

                for (int data = testcase.dataMin; data <= testcase.dataMax; data += testcase.dataStep)
                {
                    #region Initial
                    insertTimer.Reset();
                    includeTimer.Reset();
                    excludeTimer.Reset();
                    int insertProbe = 0, insertCount = 0;
                    int includeProbe = 0, includeCount = 0;
                    int excludeProbe = 0, excludeCount = 0;
                    GC.Collect();
                    #endregion

                    for (int test = 0; test < testcase.testCount; test++)
                    {
                        ht.Clear();

                        var keysInsert  = KeyUnique(rnd, data);
                        var keysInclude = new string[keysInsert.Length];

                        int index = 0;
                        for (int i = 0; i < keysInsert.Length; i++)
                        {
                            var result = ht.InsertProbe(keysInsert[i], keysInsert[i]);
                            if (result.Result == 0)
                            {
                                keysInclude[index] = keysInsert[i];
                                index++;
                                insertProbe += result.Probe;
                                insertCount++;
                            }
                            else
                            {
                                //throw new Exception($"Insert error {keysInsert[i]} = {result}");
                            }
                        }

                        Array.Resize(ref keysInclude, index);
                        for (int i = 0; i < keysInclude.Length; i++)
                        {
                            var result = ht.SearchProbe(keysInclude[i]);
                            if (result.Result != 0)
                            {
                                //throw new Exception($"Search include {keysInsert[i]} = {result}");
                            }
                            includeProbe += result.Probe;
                            includeCount++;
                        }

                        var keysExclude = KeyUnique(rnd, keysInclude);
                        for (int i = 0; i < keysExclude.Length; i++)
                        {
                            var result = ht.SearchProbe(keysExclude[i]);
                            if (result.Result == 0)
                            {
                                //throw new Exception($"Search exclude {keysInsert[i]} = {result}");
                            }
                            excludeProbe += result.Probe;
                            excludeCount++;
                        }

                        ht.Clear();

                        for (int i = 0; i < keysInclude.Length; i++)
                        {
                            Ext.FillCache(testcase.fillSize);
                            insertTimer.Start();
                            ht.Insert(keysInclude[i], keysInclude[i]);
                            insertTimer.Stop();
                        }

                        for (int i = 0; i < keysInclude.Length; i++)
                        {
                            Ext.FillCache(testcase.fillSize);
                            includeTimer.Start();
                            ht.Search(keysInclude[i]);
                            includeTimer.Stop();
                        }

                        for (int i = 0; i < keysExclude.Length; i++)
                        {
                            Ext.FillCache(testcase.fillSize);
                            excludeTimer.Start();
                            ht.Search(keysExclude[i]);
                            excludeTimer.Stop();
                        }
                    }

                    #region Writer
                    var rec = $"{(double)insertCount / ht.Capacity / testcase.testCount:f3}; " +
                              $"{insertProbe:d}; " +
                              $"{(double)insertProbe / insertCount:f2}; " +
                              $"{insertTimer.ElapsedTicks:d}; " +
                              $"{(double)insertTimer.ElapsedTicks / insertCount:f2}; " +
                              $"{includeProbe:d}; " +
                              $"{(double)includeProbe / includeCount:f2}; " +
                              $"{includeTimer.ElapsedTicks:d}; " +
                              $"{(double)includeTimer.ElapsedTicks / includeCount:f2}; " +
                              $"{excludeProbe:d}; " +
                              $"{(double)excludeProbe / excludeCount:f2}; " +
                              $"{excludeTimer.ElapsedTicks:d}; " +
                              $"{(double)excludeTimer.ElapsedTicks / excludeCount:f2}; " +
                              $"";
                    Console.WriteLine(rec);
                    file.WriteLine(rec);
                    file.Flush();
                    #endregion
                }

                totalTimer.Stop();
                var time = $"time; {totalTimer.Elapsed.Hours:d2}:{totalTimer.Elapsed.Minutes:d2}:{totalTimer.Elapsed.Seconds:d2}; {totalTimer.ElapsedMilliseconds}";
                Console.WriteLine(time);
                file.WriteLine(time);
                file.Flush();
            }
        }
Exemple #4
0
 public void Clear()
 {
     hashMap.Clear();
 }
 protected void Clear()
 {
     ht.Clear();
 }