예제 #1
0
        public void DeleteDoubledValueTest()
        {
            ChainHashtable table = new ChainHashtable();

            table.Insert(1, "555");
            table.Insert(2, "555");
            table.Insert(1, "666");

            table.Delete(1);
            Assert.IsNull(table.Search(1));
        }
예제 #2
0
        public void DeleteValueTest(int[] keys, string[] values, int keyToDelete)
        {
            ChainHashtable table = new ChainHashtable();

            for (int i = 0; i < keys.Length; i++)
            {
                table.Insert(keys[i], values[i]);
            }
            table.Delete(keyToDelete);
            Assert.IsNull(table.Search(keyToDelete));
        }
예제 #3
0
        private void NameGenreChange(string name, string genre, DataGridViewRow row)
        {
            string oldName         = row.Cells[0].Value.ToString();
            string oldGenre        = row.Cells[1].Value.ToString();
            bool   confirmedChange = false;

            if (name == oldName && genre == oldGenre)
            {
                UpdateInfo($"Запись [{oldName}/{oldGenre}] не изменена");
                return;
            }
            if (genre != oldGenre) // изменен жанр
            {
                var rowsToChange = NameTree.GetValues(oldName);
                if (rowsToChange.Size != 0)
                {
                    DialogResult result = MessageBox.Show($"Изменение затронет другие справочники. Продолжить?",
                                                          "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    if (result == DialogResult.No)
                    {
                        UpdateInfo($"Запись [{oldName}/{oldGenre}] не изменена");
                        return;
                    }
                    confirmedChange = true;
                }
                foreach (var rowToChange in rowsToChange)
                {
                    rowToChange.Key.Cells[2].Value = genre;
                }
                row.Cells[1].Value = genre;
            }
            if (name != oldName) // изменено название
            {
                var rowsToChange = NameTree.GetValues(oldName);
                if (NameAuthorHT.Contains(oldName))
                {
                    if (!confirmedChange)
                    {
                        DialogResult result = MessageBox.Show($"Изменение затронет другие справочники. Продолжить?",
                                                              "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                        if (result == DialogResult.No)
                        {
                            UpdateInfo($"Запись [{oldName}/{oldGenre}] не изменена");
                            return;
                        }
                    }
                    var rowInNameAuthor = NameAuthorHT.GetValue(oldName);
                    NameAuthorHT.Delete(oldName);
                    rowInNameAuthor.Cells[0].Value = name;
                    NameAuthorHT.Add(name, rowInNameAuthor);
                    NameAuthorHT.Delete(oldName);
                    NameAuthorHT.Add(name, row);
                    int nameIndexInStructureForm = structureForm.Name_comboBox.Items.IndexOf(oldName);
                    structureForm.Name_comboBox.Items.RemoveAt(nameIndexInStructureForm);
                    structureForm.Name_comboBox.Items.Insert(nameIndexInStructureForm, name);
                    if (rowsToChange.Size != 0)
                    {
                        NameTree.RemoveKey(oldName);
                        foreach (var rowToChange in rowsToChange)
                        {
                            rowToChange.Key.Cells[0].Value = name;
                            NameTree.Add(name, rowToChange.Key);
                        }
                    }
                }
                else
                {
                    if (NameAuthorHT.Contains(name))
                    {
                        structureForm.Name_comboBox.Items.Add(name);
                    }
                }
                NameGenreHT.Delete(oldName);
                row.Cells[0].Value = name;
                NameGenreHT.Add(name, row);
            }
            UpdateInfo($"Запись [{oldName}/{oldGenre}] изменена");
        }